/***************************************************************************** Function Name : diag_DisConnProc Description : 该函数用于处理ConnProcEntry传进来的HSO断开命令 Input : pstReq 待处理数据 Output : None Return : VOS_UINT32 History : 1.y00228784 2012-11-22 Draft Enact *****************************************************************************/ VOS_UINT32 diag_DisConnProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId) { DIAG_CMD_HOST_DISCONNECT_CNF_STRU stCnfDisConn = {0}; VOS_UINT32 ulRst = ERR_MSP_SUCCESS; /*重置所有开关状态为未打开*/ diag_CfgResetAllSwt(); DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_DIS_CONN_CFG, 0, 0, 0); stCnfDisConn.ulRc = ulRst; #if(VOS_OS_VER == VOS_LINUX) /*组包给FW回复*/ ulRst = diag_AgentCnfFun((VOS_UINT8*)&stCnfDisConn,ulCmdId,sizeof(DIAG_CMD_HOST_DISCONNECT_CNF_STRU)); #endif return ulRst; }
VOS_VOID diag_AgentMsgProc(MsgBlock* pMsgBlock) { DIAG_DATA_MSG_STRU* pMsgTmp =NULL; REL_TIMER_MSG *pTimer =NULL; /*入参判断*/ /*lint -save -e830*/ if (NULL == pMsgBlock) { return; } /*lint -restore*/ /*任务开始处理,不允许睡眠*/ drx_msp_fid_vote_lock(DRX_DIAG_MODEM_AGENT_VOTE); /*根据发送PID,执行不同处理*/ switch(pMsgBlock->ulSenderPid) { /*超时消息,用于低功耗数采*/ case DOPRA_PID_TIMER: /*lint -save -e740*/ pTimer = (REL_TIMER_MSG*)pMsgBlock; /*lint -restore*/ diag_AgentTimeOutProcEntry(pTimer); break; /*处理fw发过来的数据 */ case MSP_PID_DIAG_FW: /*lint -save -e740*/ pMsgTmp = (DIAG_DATA_MSG_STRU*)pMsgBlock; /*lint -restore*/ if(ID_MSG_DIAG_HSO_DISCONN_IND == pMsgTmp->ulMsgId) { diag_CfgResetAllSwt(); #if (FEATURE_BSP_LCH_OM == FEATURE_ON) DRV_OM_SET_HSO_CONN_FLAG(0); #endif #if(FEATURE_SOCP_ON_DEMAND == FEATURE_ON) diag_PortDisconnMsgProc(); #endif } else { /*根据命令ID分发处理*/ diag_AgentDispatchCmd(pMsgTmp->pContext); } break; #if(FEATURE_SOCP_ON_DEMAND == FEATURE_ON) case MSP_PID_DIAG_AGENT: diag_AgentDspMsgProc(pMsgBlock); break; case MSP_PID_DIAG_APP_AGENT: diag_SocpVoteCnfMsgProc(pMsgBlock); break; #endif /*PS路测消息上报*/ case PS_PID_ERRC: case PS_PID_MM: case PS_PID_ESM: diag_AgentPsTransRcv(pMsgBlock); break; /*lint -save -e616*/ default: /*lint -restore*/ break; } /*任务开始结束,允许睡眠*/ drx_msp_fid_vote_unlock(DRX_DIAG_MODEM_AGENT_VOTE); return; }
/***************************************************************************** Function Name : diag_ConnProc Description : 该函数用于处理ConnProcEntry传进来的HSO连接命令 Input : pstReq 待处理数据 Output : None Return : VOS_UINT32 History : 1.y00228784 2012-11-22 Draft Enact *****************************************************************************/ VOS_UINT32 diag_ConnProc(VOS_UINT8* pstReq,VOS_UINT32 ulCmdId) { VOS_UINT32 ret = ERR_MSP_SUCCESS; VOS_UINT32 ulCnfRst = ERR_MSP_UNAVAILABLE; #if (VOS_OS_VER == VOS_LINUX) DIAG_CMD_HOST_CONNECT_CNF_STRU stCnf = {0}; NV_ITEM_PWC_SWITCH_STRU stPwrctrlSwitch = {0}; VOS_UINT32 ulPwrFlag = 0; LPS_SWITCH_PARA_STRU stDrxControlFlag = {0}; UE_SW_BUILD_VER_INFO_STRU *pstBuildVer =NULL; DIAG_CMD_REPLAY_SET_REQ_STRU stReplay= {0}; #endif /*重置所有开关状态为未打开*/ diag_CfgResetAllSwt(); /*设置连接状态开关值*/ ulCnfRst = diag_CfgSetGlobalBitValue(&g_ulDiagCfgInfo,DIAG_CFG_CONN_BIT,DIAG_CFG_SWT_OPEN); DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_CONN_CFG, ulCnfRst, 0, 0); #if (VOS_OS_VER == VOS_LINUX) VOS_MemSet(&(stCnf.stBuildVersion), 0, sizeof(DIAG_CMD_UE_BUILD_VER_STRU)); /*获取版本信息*/ pstBuildVer = BSP_GetBuildVersion(); if(pstBuildVer!=NULL) { pstBuildVer->ulProductNo = BSP_HwGetVerMain(); stCnf.stBuildVersion.usVVerNo = pstBuildVer->ulVVerNo; stCnf.stBuildVersion.usRVerNo = pstBuildVer->ulRVerNo; stCnf.stBuildVersion.usCVerNo = pstBuildVer->ulCVerNo; stCnf.stBuildVersion.usBVerNo = pstBuildVer->ulBVerNo; stCnf.stBuildVersion.usSpcNo = pstBuildVer->ulSpcNo; stCnf.stBuildVersion.usHardwareVerNo = pstBuildVer->ulCustomVer; stCnf.stBuildVersion.ulProductNo = pstBuildVer->ulProductNo; } /*获取IMEI号*/ ret = diag_GetImei(stCnf.szImei); if(ret) { } /*获取软件版本号*/ VOS_MemSet(&stCnf.stUeSoftVersion,0,sizeof(DIAG_CMD_UE_SOFT_VERSION_STRU)); /*获取数采基地址*/ stCnf.ulChipBaseAddr = (VOS_UINT32)BSP_OM_GetChipType(); //stCnf.ulChipBaseAddr = (VOS_UINT32)V7R1_PILOT_CHIP; /*路测信息获取*/ ret = NVM_Read(EN_NV_ID_AGENT_FLAG,&(stCnf.stAgentFlag),sizeof(NV_ITEM_AGENT_FLAG_STRU)); if(ret) { } /*低功耗开关获取*/ ret = NVM_Read(EN_NV_ID_PWC_SWITCH,&stPwrctrlSwitch,sizeof(NV_ITEM_PWC_SWITCH_STRU)); if(ret) { } ulPwrFlag = stPwrctrlSwitch.drxLBbpPd; ret = NVM_Read(EN_NV_ID_SWITCH_PARA,&stDrxControlFlag,sizeof(stDrxControlFlag)); if(ret) { } stCnf.ulDrxControlFlag = stDrxControlFlag.ulDrxControlFlag & ulPwrFlag; /*lint -save -e40*/ ulCnfRst |= diag_SendMsg(diag_GetAgentPid(),PS_PID_MM,ID_MSG_DIAG_CMD_REPLAY_TO_PS,(VOS_UINT8*)&stReplay,\ sizeof(DIAG_CMD_REPLAY_SET_REQ_STRU)); /*lint -restore +e40*/ /*获取当前存取模式*/ stCnf.ulLpdMode = diag_GetLogSendType(); /*处理结果*/ stCnf.ulRc = ulCnfRst; /*组包给FW回复*/ ret = diag_AgentCnfFun((VOS_UINT8*)&stCnf,ulCmdId,sizeof(DIAG_CMD_HOST_CONNECT_CNF_STRU)); #else /*lint -e18 -e718 -e628 -e830 -e746*/ diag_EnableSocpChan(); /*lint +e18 +e718 +e628 +e830 +e746*/ #endif return ret; }