VOS_VOID diag_PortEvtCB(ACM_EVT_E ulEvt,DIAG_PORT_PHY_BEAR_ENUM enPort) { DIAG_PORT_CONNECT_STA_PFN pfnConn = DIAG_PORT_GET_CONN_CALLBACK(); DIAG_DEBUG_SDM_FUN(EN_DIAG_DEBUG_TCP_EVT+enPort, ulEvt, 0, 0); if(ACM_EVT_DEV_READY==ulEvt) { DIAG_PORT_CHAN_STATE_SWITCH(enPort,ACM_EVT_DEV_READY); return ; } else { if(diag_GetLogSendType() == EN_DIAG_SEND_LOG_TO_SD) { return ; } //通知逻辑通道状态 if(pfnConn!=NULL) { pfnConn(DIAG_DISCONN); } DIAG_PORT_CHAN_STATE_SWITCH(enPort,ACM_EVT_DEV_SUSPEND); } 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; }
VOS_UINT32 diag_WriteData( VOS_UINT8* aucDataBuf, VOS_UINT32 enChanID,VOS_UINT32 ulLen) { VOS_UINT32 ret = ERR_MSP_SUCCESS; VOS_UINT32 usSentLen = 0; diag_TraceDebug(aucDataBuf, ulLen); if (DIAG_PORT_GET_CONN_PORT() == EN_DIAG_SOCKET_BEARER_TCP_20248) { ret = diag_TcpSendData(EN_TCP_PORT_DIAG,aucDataBuf, ulLen,&usSentLen); SCM_RlsDestBuf(enChanID,ulLen); return ret; } else if (DIAG_PORT_GET_CONN_PORT() == EN_DIAG_USB_BEARER_DIAG_CTRL) { //回复和主动上报分开通道发送 if(enChanID == SOCP_CODER_DST_LOM_CNF) { return diag_PhyWriteAsync(EN_DIAG_USB_BEARER_DIAG_CTRL,(VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } else if(enChanID == SOCP_CODER_DST_LOM_IND) { if( EN_DIAG_SEND_LOG_TO_USB == diag_GetLogSendType()) { return diag_PhyWriteAsync(EN_DIAG_USB_BEARER_DIAG_APP,(VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } else { drx_msp_fid_vote_lock(DRX_DIAG_LOG_SAVE_VOTE); diag_StorDataToSD(aucDataBuf, ulLen); /* 该处需要直接read data done*/ SCM_RlsDestBuf(DIAG_PORT_GET_CODE_DES(EN_DIAG_USB_BEARER_DIAG_APP),ulLen); drx_msp_fid_vote_unlock(DRX_DIAG_LOG_SAVE_VOTE); return ERR_MSP_SUCCESS; } } } else if (DIAG_PORT_GET_CONN_PORT() == EN_DIAG_HSIC_BEARER_DIAG_CTRL) { //回复和主动上报分开通道发送 if(enChanID == SOCP_CODER_DST_LOM_CNF) { return diag_PhyWriteAsync(EN_DIAG_HSIC_BEARER_DIAG_CTRL,(VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } else if(enChanID == SOCP_CODER_DST_LOM_IND) { return diag_PhyWriteAsync(EN_DIAG_HSIC_BEARER_DIAG_APP,(VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } } /*APP VCOM*/ else if (DIAG_PORT_GET_CONN_PORT() == EN_DIAG_VCOM_BEABER_DIAG_CTRL) { //回复和主动上报分开通道发送 if(enChanID == SOCP_CODER_DST_LOM_CNF) { return diag_VcomWriteSync(EN_DIAG_VCOM_BEABER_DIAG_CTRL,DIAG_APPVCOM_CHAN_CTRL,\ (VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } else if(enChanID == SOCP_CODER_DST_LOM_IND) { return diag_VcomWriteSync(EN_DIAG_VCOM_BEABER_DIAG_APP,DIAG_APPVCOM_CHAN_APP,\ (VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } } else { return ERR_MSP_FAILURE; } return ERR_MSP_SUCCESS; }