/* diag fw */ VOS_VOID st_drx_vote_001(void) { drx_msp_fid_vote_lock(DRX_DIAG_FW_VOTE); VOS_TaskDelay(100); drx_msp_global_debug(); VOS_TaskDelay(100); drx_msp_fid_vote_unlock(DRX_DIAG_FW_VOTE); }
VOS_VOID st_drx_vote_004(void) { drx_msp_global_debug(); VOS_TaskDelay(10); drx_msp_fid_vote_lock(DRX_FTM_MAILBOX_VOTE); drx_msp_global_debug(); VOS_TaskDelay(10); drx_msp_fid_vote_unlock(DRX_FTM_MAILBOX_VOTE); drx_msp_global_debug(); }
/* diag app agent */ VOS_VOID st_drx_vote_002(void) { drx_msp_global_debug(); VOS_TaskDelay(10); drx_msp_fid_vote_lock(DRX_L4A_VOTE); drx_msp_global_debug(); VOS_TaskDelay(10); drx_msp_fid_vote_unlock(DRX_L4A_VOTE); drx_msp_global_debug(); VOS_TaskDelay(10); }
/* diag fw */ VOS_VOID st_drx_vote_001(void) { /* drx_msp_global_debug(); */ drx_msp_fid_vote_lock(DRX_DIAG_MODEM_AGENT_VOTE); VOS_TaskDelay(100); drx_msp_global_debug(); VOS_TaskDelay(100); drx_msp_fid_vote_unlock(DRX_DIAG_MODEM_AGENT_VOTE); /* drx_msp_global_debug();*/ }
/***************************************************************************** 函 数 名 : ftm_mailbox_taskproc 功能描述 : 读邮箱数据自处理任务 输入参数 : 无 输出参数 : 无 返 回 值 : 无 *****************************************************************************/ VOS_VOID ftm_mailbox_taskproc(VOS_UINT32 ulPara0, VOS_UINT32 ulPara1, VOS_UINT32 ulPara2, VOS_UINT32 ulPara3) { /*lint -save -e716*/ while(1) /*lint -restore*/ { if(VOS_ERR == VOS_SmP(g_mailbox_readsem, 0)) { HAL_SDMLOG("[%s] VOS_Smp(g_mailbox_readsem, 0) error\n", __FUNCTION__); } /*vote for lock*/ drx_msp_fid_vote_lock(DRX_FTM_MAILBOX_VOTE); /* LTE CT 原语 */ if(ftm_mailbox_msgproc(EN_MAILBOX_SERVICE_LTE_CT) > 0) { //VOS_SmV(g_mailbox_readsem); continue; } /* LTE BT 原语 */ if(ftm_mailbox_msgproc(EN_MAILBOX_SERVICE_LTE_BT) > 0) { //VOS_SmV(g_mailbox_readsem); continue; } /* TDS CT 原语 */ if(ftm_mailbox_msgproc(EN_MAILBOX_SERVICE_TDS_CT) > 0) { //VOS_SmV(g_mailbox_readsem); continue; } /* TDS BT 原语 */ if(ftm_mailbox_msgproc(EN_MAILBOX_SERVICE_TDS_BT) > 0) { //VOS_SmV(g_mailbox_readsem); continue; } /*vote for lock*/ drx_msp_fid_vote_unlock(DRX_FTM_MAILBOX_VOTE); //VOS_SmV(g_mailbox_readsem); } }
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) { return diag_PhyWriteAsync(EN_DIAG_USB_BEARER_DIAG_APP,(VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } } 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 if(DIAG_PORT_GET_CONN_PORT() == EN_DIAG_SD_BEARER_DIAG) { if(enChanID == SOCP_CODER_DST_LOM_CNF) { return diag_PhyWriteAsync(EN_DIAG_USB_BEARER_DIAG_CTRL,(VOS_UINT8 *)aucDataBuf,(VOS_UINT32)ulLen); } drx_msp_fid_vote_lock(DRX_DIAG_LOG_SAVE_VOTE); diag_StorDataToSD(aucDataBuf, ulLen); /* 该处需要直接read data done*/ SCM_RlsDestBuf(enChanID,ulLen); drx_msp_fid_vote_unlock(DRX_DIAG_LOG_SAVE_VOTE); return ERR_MSP_SUCCESS; } else { g_diagPort_ctrl.ulWritePort = DIAG_PORT_GET_CONN_PORT(); /*异常情况需要释放*/ SCM_RlsDestBuf(enChanID,ulLen); return ERR_MSP_FAILURE; } return ERR_MSP_SUCCESS; }
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; }