VOS_UINT32 OM_AcpuCnfReleaseProc(APP_OM_MSG_EX_STRU *pstAppToOmMsg, VOS_UINT16 usReturnPrimId) { g_stAcpuCnfCtrlInfo.ulOMSwitchOnOff = OM_STATE_IDLE; /* 通过ICC通道通知CCPU链路断开 */ if(VOS_OK != GU_OamSndPcMsgToCcpu(&g_stAcpuCnfCtrlInfo, (VOS_UINT8*)pstAppToOmMsg, sizeof(APP_OM_MSG_EX_STRU))) { /* 打印错误 */ LogPrint("OM_AcpuReleaseReq: The ICC UDI Write is Error.\n"); } vos_printf("%s %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",__func__); OM_NotifyOtherCpuReleaseLink(); g_ulAcpuDiscRcvCnt++; /* GU连接断开时投票可以睡眠 */ OM_SendAcpuSocpVote(SOCP_VOTE_FOR_SLEEP); g_stAcpuCnfCtrlInfo.stPcToUeSucRecord.stRlsData.ulDataLen = OM_GetSlice(); g_stAcpuCnfCtrlInfo.stPcToUeSucRecord.stRlsData.ulNum++; return VOS_OK; }
VOS_UINT32 OM_AcpuCbtEstablishProc(APP_OM_MSG_EX_STRU *pstAppToOmMsg, VOS_UINT16 usReturnPrimId) { VOS_UINT32 ulRet; /* 先断开链路 */ g_stAcpuCbtCtrlInfo.ulOMSwitchOnOff = OM_STATE_IDLE; /* 以兼容校准工具,建链成功回复状态字0x02 */ ulRet = 0x02; /* 给工具回复建链成功状态 */ OM_AcpuSendResultChannel(OM_LOGIC_CHANNEL_CBT, OM_QUERY_FUNC, ulRet, OM_APP_ESTABLISH_CNF); /* 激活链路 */ g_stAcpuCbtCtrlInfo.ulOMSwitchOnOff = OM_STATE_ACTIVE; /* 通知CCPU链路状态 */ if(VOS_OK != GU_OamSndPcMsgToCcpu(&g_stAcpuCbtCtrlInfo,(VOS_UINT8*)pstAppToOmMsg, sizeof(APP_OM_MSG_EX_STRU))) { /* 打印错误 */ } return VOS_OK; }
VOS_UINT32 OM_AcpuReleaseReq(APP_OM_MSG_EX_STRU *pstAppToOmMsg, VOS_UINT16 usReturnPrimId) { #if (FEATURE_ON == FEATURE_CBT_LOG) if (OM_CBT_LOG_ENABLE_FLAG == g_ulCBTLogEnable) { return VOS_OK; } #endif g_ulAcpuOMSwitchOnOff = OM_STATE_IDLE; /* 通过ICC通道通知CCPU链路断开 */ if(VOS_OK != GU_OamSndPcMsgToCcpu((VOS_UINT8*)pstAppToOmMsg, sizeof(APP_OM_MSG_EX_STRU))) { /* 打印错误 */ LogPrint("OM_AcpuReleaseReq: The ICC UDI Write is Error.\n"); } OM_NotifyOtherCpuReleaseLink(); g_stAcpuPcToUeSucRecord.stRlsData.ulDataLen = OM_GetSlice(); g_stAcpuPcToUeSucRecord.stRlsData.ulNum++; OM_SendAcpuSocpVote(SOCP_VOTE_FOR_SLEEP); return VOS_OK; }
VOS_UINT32 OM_AcpuCbtReleaseProc(APP_OM_MSG_EX_STRU *pstAppToOmMsg, VOS_UINT16 usReturnPrimId) { g_stAcpuCbtCtrlInfo.ulOMSwitchOnOff = OM_STATE_IDLE; (VOS_VOID)GU_OamSndPcMsgToCcpu(&g_stAcpuCbtCtrlInfo, (VOS_UINT8*)pstAppToOmMsg, sizeof(APP_OM_MSG_EX_STRU)); return VOS_OK; }
VOS_UINT32 OM_AcpuEstablishReq(APP_OM_MSG_EX_STRU *pstAppToOmMsg, VOS_UINT16 usReturnPrimId) { VOS_UINT32 ulRet; #if (FEATURE_ON == FEATURE_CBT_LOG) VOS_UINT32 ulState; ulState = g_ulAcpuOMSwitchOnOff; #endif VOS_MemSet(&g_stAcpuTraceEventConfig, 0, sizeof(OM_TRACE_EVENT_CONFIG_PS_STRU)); VOS_MemSet(g_astOmPrintfOutPutLev, 0, OM_PRINTF_MODULE_MAX_NUM*sizeof(LOG_LEVEL_EN)); VOS_MemSet(g_aulLogPrintLevPsTable, 0, LOG_PS_MODULE_MAX_NUM*sizeof(LOG_LEVEL_EN)); VOS_MemSet(g_aulLogPrintLevDrvTable, 0, LOG_DRV_MODULE_MAX_NUM*sizeof(LOG_LEVEL_EN)); /* 先断开链路 */ g_ulAcpuOMSwitchOnOff = OM_STATE_IDLE; #if(FEATURE_ON == FEATURE_SOCP_ON_DEMAND) OM_AcpuSocpVoteInfoAdd(OM_SOCPVOTE_CALLBEGIN); DRV_SOCP_VOTE(SOCP_VOTE_GU_OM_APP, SOCP_VOTE_FOR_WAKE); OM_AcpuSocpVoteInfoAdd(OM_SOCPVOTE_CALLEND); #endif /* 以兼容校准工具,建链成功回复状态字0x02 */ ulRet = 0x02; /* 给工具回复建链成功状态 */ OM_AcpuSendResult(OM_QUERY_FUNC, ulRet, usReturnPrimId); /* 激活链路 */ g_ulAcpuOMSwitchOnOff = OM_STATE_ACTIVE; #if (FEATURE_ON == FEATURE_CBT_LOG) if ((OM_STATE_ACTIVE == ulState) && (OM_CBT_LOG_ENABLE_FLAG == g_ulCBTLogEnable)) { return VOS_OK; } #endif /* 通知CCPU链路状态 */ if(VOS_OK != GU_OamSndPcMsgToCcpu((VOS_UINT8*)pstAppToOmMsg, sizeof(APP_OM_MSG_EX_STRU))) { /* 打印错误 */ LogPrint("OM_AcpuEstablishReq: The ICC UDI Write is Error.\n"); } return VOS_OK; }
VOS_UINT32 OM_AcpuCnfEstablishProc(APP_OM_MSG_EX_STRU *pstAppToOmMsg, VOS_UINT16 usReturnPrimId) { VOS_UINT32 ulRet; #ifdef SCM_SNCHECK g_stSnCheck.ulCount = 0; g_ulSnErrCount = 0; #endif VOS_MemSet(&g_stAcpuTraceEventConfig, 0, sizeof(OM_TRACE_EVENT_CONFIG_PS_STRU)); VOS_MemSet(g_astOmPrintfOutPutLev, 0, OM_PRINTF_MODULE_MAX_NUM*sizeof(LOG_LEVEL_EN)); VOS_MemSet(g_aulLogPrintLevPsTable, 0, LOG_PS_MODULE_MAX_NUM*sizeof(LOG_LEVEL_EN)); VOS_MemSet(g_aulLogPrintLevDrvTable, 0, LOG_DRV_MODULE_MAX_NUM*sizeof(LOG_LEVEL_EN)); /* 先断开链路 */ g_stAcpuCnfCtrlInfo.ulOMSwitchOnOff = OM_STATE_IDLE; /* OM建链后投票禁止睡眠 */ #if(FEATURE_ON == FEATURE_SOCP_ON_DEMAND) OM_AcpuSocpVoteInfoAdd(OM_SOCPVOTE_CALLBEGIN); DRV_SOCP_VOTE(SOCP_VOTE_GU_OM_APP, SOCP_VOTE_FOR_WAKE); OM_AcpuSocpVoteInfoAdd(OM_SOCPVOTE_CALLEND); #endif /* 以兼容校准工具,建链成功回复状态字0x02 */ ulRet = 0x02; g_ulAcpuEstRcvCnt++; /* 给工具回复建链成功状态 */ OM_AcpuSendResultChannel(OM_LOGIC_CHANNEL_CNF, OM_QUERY_FUNC, ulRet, usReturnPrimId); /* 激活链路 */ g_stAcpuCnfCtrlInfo.ulOMSwitchOnOff = OM_STATE_ACTIVE; /* 通知CCPU链路状态 */ if(VOS_OK != GU_OamSndPcMsgToCcpu(&g_stAcpuCnfCtrlInfo,(VOS_UINT8*)pstAppToOmMsg, sizeof(APP_OM_MSG_EX_STRU))) { /* 打印错误 */ } return VOS_OK; }
VOS_VOID GU_OamDisconnectPorts(CPM_PHY_PORT_ENUM_UINT32 enPhyPort) { VOS_UINT8 aucBytes[] = {0x0a,0x00,0x08,0x00,0xb3,0x80,0x00,0x00,0x01,0x00,0x00,0x00}; /* 断开连接 */ CPM_DisconnectPorts(enPhyPort, CPM_OM_COMM); #if (FEATURE_ON == FEATURE_CBT_LOG) if (OM_CBT_LOG_ENABLE_FLAG == g_ulCBTLogEnable) { return; } #endif /* 关闭ACPU OM发送 */ g_ulAcpuOMSwitchOnOff = OM_STATE_IDLE; OM_SendAcpuSocpVote(SOCP_VOTE_FOR_SLEEP); (VOS_VOID)GU_OamSndPcMsgToCcpu(aucBytes, sizeof(aucBytes)); OM_NotifyOtherCpuReleaseLink(); }