/* 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);
    }

}
Esempio n. 6
0
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;
}