VOS_UINT32 TAF_MMA_SetSysCfgReq( VOS_UINT32 ulModuleId, VOS_UINT16 usClientId, VOS_UINT8 ucOpId, TAF_MMA_SYS_CFG_PARA_STRU *pstSysCfgPara ) { TAF_MMA_SYS_CFG_REQ_STRU *pstMsg = VOS_NULL_PTR; VOS_UINT32 ulReceiverPid; VOS_UINT32 ulSenderPid; #if (OSA_CPU_ACPU == VOS_OSA_CPU) ulReceiverPid = AT_GetDestPid(usClientId, WUEPS_PID_MMA); ulSenderPid = AT_GetDestPid(usClientId, WUEPS_PID_TAF); #else ulReceiverPid = WUEPS_PID_MMA; ulSenderPid = WUEPS_PID_TAF; #endif /* 参数检查 */ if (VOS_NULL_PTR == pstSysCfgPara) { return VOS_FALSE; } /* 申请消息包TAF_MMA_SYS_CFG_REQ_STRU */ pstMsg = (TAF_MMA_SYS_CFG_REQ_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN( ulSenderPid, sizeof(TAF_MMA_SYS_CFG_REQ_STRU)); /* 内存申请失败,返回 */ if (VOS_NULL_PTR == pstMsg) { return VOS_FALSE; } PS_MEM_SET( (VOS_INT8 *)pstMsg + VOS_MSG_HEAD_LENGTH, 0X00, sizeof(TAF_MMA_SYS_CFG_REQ_STRU) - VOS_MSG_HEAD_LENGTH ); /* 根据输入参数填充TAF_MMA_SYS_CFG_REQ_STRU */ /* 发送PID统一填写为WUEPS_PID_TAF */ pstMsg->ulSenderPid = ulSenderPid; pstMsg->ulReceiverPid = ulReceiverPid; pstMsg->ulMsgName = ID_TAF_MMA_SYS_CFG_SET_REQ; pstMsg->stCtrl.ulModuleId = ulModuleId; pstMsg->stCtrl.usClientId = usClientId; pstMsg->stCtrl.ucOpId = ucOpId; PS_MEM_CPY(&(pstMsg->stSysCfgPara), pstSysCfgPara, sizeof(TAF_MMA_SYS_CFG_PARA_STRU)); /* 发送消息 */ if (VOS_OK != PS_SEND_MSG(ulSenderPid, pstMsg)) { return VOS_FALSE; } return VOS_TRUE; }
VOS_UINT32 MN_FillAppReqMsgHeader( MN_APP_REQ_MSG_STRU *pMsg, MN_CLIENT_ID_T ClientId, MN_OPERATION_ID_T OpId, VOS_UINT16 usMsgType, VOS_UINT32 ulReceiverPid ) { MN_APP_REQ_MSG_STRU *pAppMsgHeader; pAppMsgHeader = pMsg; pAppMsgHeader->clientId = ClientId; pAppMsgHeader->opId = OpId; pAppMsgHeader->usMsgName = usMsgType; /* pAppMsgHeader->ulSenderCpuId = VOS_LOCAL_CPUID; */ /* pAppMsgHeader->ulReceiverCpuId = VOS_LOCAL_CPUID; */ /* pAppMsgHeader->ulSenderPid = WUEPS_PID_AT; */ #if (OSA_CPU_ACPU == VOS_OSA_CPU) pAppMsgHeader->ulReceiverPid = AT_GetDestPid(ClientId, ulReceiverPid); #else pAppMsgHeader->ulReceiverPid = ulReceiverPid; #endif return VOS_OK; }
VOS_UINT32 MN_CALL_SendAppRequest( MN_CALL_APP_REQ_ENUM_UINT32 enReq, MN_CLIENT_ID_T clientId, MN_OPERATION_ID_T opId, MN_CALL_ID_T callId, const MN_CALL_APP_REQ_PARM_UNION *punParam ) { MN_CALL_APP_REQ_MSG_STRU *pstMsg = (MN_CALL_APP_REQ_MSG_STRU *)PS_ALLOC_MSG_WITH_HEADER_LEN(WUEPS_PID_AT, sizeof(MN_CALL_APP_REQ_MSG_STRU)); if (VOS_NULL_PTR == pstMsg) { AT_ERR_LOG("MN_CALL_SendAppRequest: Failed to alloc VOS message."); return VOS_ERR; } PS_MEM_SET((VOS_INT8*)pstMsg + VOS_MSG_HEAD_LENGTH, 0x00, (VOS_SIZE_T)(sizeof(MN_CALL_APP_REQ_MSG_STRU) - VOS_MSG_HEAD_LENGTH)); /* 填写VOS消息头 */ pstMsg->ulSenderCpuId = VOS_LOCAL_CPUID; pstMsg->ulSenderPid = WUEPS_PID_AT; pstMsg->ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->ulReceiverPid = AT_GetDestPid(clientId, I0_WUEPS_PID_TAF); /* 填写原语首部 */ pstMsg->enReq = enReq; pstMsg->clientId = clientId; pstMsg->opId = opId; pstMsg->callId = callId; if (TAF_NULL_PTR != punParam) { PS_MEM_CPY(&pstMsg->unParm, punParam, sizeof(pstMsg->unParm)); } /* 发送VOS消息 */ if (VOS_OK != PS_SEND_MSG(WUEPS_PID_AT, pstMsg)) { AT_ERR_LOG1("MN_CALL_SendAppRequest: Send Message Fail. reqtype:", (VOS_INT32)enReq); return VOS_ERR; } return VOS_OK; }
VOS_UINT32 APP_VC_SetModemLoop( VOS_UINT16 usClientId, VOS_UINT8 ucOpId, VOS_UINT8 ucModemLoop ) { VOS_UINT32 ulRslt; APP_VC_REQ_MSG_STRU *pstMsg; /* 构造消息 */ pstMsg = (APP_VC_REQ_MSG_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN( WUEPS_PID_AT, sizeof(APP_VC_REQ_MSG_STRU)); if (VOS_NULL_PTR == pstMsg) { AT_ERR_LOG("APP_VC_SetModemLoop: ALLOC MSG FAIL."); return VOS_ERR; } /* 初始化消息 */ PS_MEM_SET((VOS_CHAR *)pstMsg + VOS_MSG_HEAD_LENGTH, 0x00, sizeof(APP_VC_REQ_MSG_STRU) - VOS_MSG_HEAD_LENGTH); /* 填写消息头 */ pstMsg->ulReceiverCpuId = VOS_LOCAL_CPUID; pstMsg->ulReceiverPid = AT_GetDestPid(usClientId, I0_WUEPS_PID_VC); pstMsg->enMsgName = APP_VC_MSG_SET_MODEMLOOP_REQ; /* 填写消息内容 */ pstMsg->clientId = usClientId; pstMsg->opId = ucOpId; pstMsg->aucContent[0] = ucModemLoop; /* 发送消息 */ ulRslt = PS_SEND_MSG(WUEPS_PID_AT, pstMsg); if (VOS_OK != ulRslt) { AT_ERR_LOG("APP_VC_SetModemLoop: SEND MSG FAIL."); return VOS_ERR; } return VOS_OK; }
VOS_UINT32 AT_FillAppReqMsgHeader( MN_APP_REQ_MSG_STRU *pMsg, MN_CLIENT_ID_T usClientId, MN_OPERATION_ID_T ucOpId, VOS_UINT16 usMsgType, VOS_UINT32 ulRcvPid ) { MN_APP_REQ_MSG_STRU *pAppMsgHeader; pAppMsgHeader = pMsg; pAppMsgHeader->clientId = usClientId; pAppMsgHeader->opId = ucOpId; pAppMsgHeader->usMsgName = usMsgType; pAppMsgHeader->ulSenderPid = WUEPS_PID_AT; pAppMsgHeader->ulReceiverPid = AT_GetDestPid(usClientId, ulRcvPid); pAppMsgHeader->ulSenderCpuId = VOS_LOCAL_CPUID; pAppMsgHeader->ulReceiverCpuId = VOS_LOCAL_CPUID; return VOS_OK; }
VOS_UINT32 AT_SndSetVoicePrefer ( VOS_UINT16 usClientId, VOS_UINT8 ucOpId, VOS_UINT32 ulVoicePreferApStatus ) { AT_RABM_SET_VOICEPREFER_PARA_REQ_STRU *pstSndMsg = VOS_NULL_PTR; VOS_UINT32 ulRslt; /* 申请内存 */ pstSndMsg = (AT_RABM_SET_VOICEPREFER_PARA_REQ_STRU *)PS_ALLOC_MSG(WUEPS_PID_AT, sizeof(AT_RABM_SET_VOICEPREFER_PARA_REQ_STRU) - VOS_MSG_HEAD_LENGTH); if ( VOS_NULL_PTR == pstSndMsg ) { /* 内存申请失败 */ AT_ERR_LOG("AT_SndSetVoicePrefer:ERROR: Memory Alloc Error for pstMsg"); return VOS_ERR; } /* 填写相关参数 */ pstSndMsg->stMsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstSndMsg->stMsgHeader.ulReceiverPid = AT_GetDestPid(usClientId, I0_WUEPS_PID_RABM); pstSndMsg->stMsgHeader.ulLength = sizeof(AT_RABM_SET_VOICEPREFER_PARA_REQ_STRU) - VOS_MSG_HEAD_LENGTH; pstSndMsg->stMsgHeader.ulMsgName = ID_AT_RABM_SET_VOICEPREFER_PARA_REQ; pstSndMsg->usClientId = usClientId; pstSndMsg->ucOpId = ucOpId; pstSndMsg->ulVoicePreferApStatus = ulVoicePreferApStatus; /* 调用VOS发送原语 */ ulRslt = PS_SEND_MSG(WUEPS_PID_AT, pstSndMsg); if ( VOS_OK != ulRslt ) { AT_ERR_LOG("AT_SndSetVoicePrefer:ERROR:PS_SEND_MSG "); return VOS_ERR; } return VOS_OK; }
VOS_UINT32 APP_VC_SetVoicePort( MN_CLIENT_ID_T ClientId, MN_OPERATION_ID_T OpId, APP_VC_VOICE_PORT_ENUM_U8 ucVoicePort ) { /*构造消息发送消息给VC模块*/ VOS_UINT32 ulRslt; APP_VC_REQ_MSG_STRU *pstMsg; /* 申请消息 */ pstMsg = (APP_VC_REQ_MSG_STRU *)PS_ALLOC_MSG(WUEPS_PID_AT, sizeof(APP_VC_REQ_MSG_STRU) - VOS_MSG_HEAD_LENGTH); if (VOS_NULL_PTR == pstMsg) { AT_ERR_LOG("APP_VC_SetVoicePort: ALLOC MSG FAIL."); return VOS_ERR; } pstMsg->clientId = ClientId; pstMsg->opId = OpId; pstMsg->enMsgName = APP_VC_MSG_REQ_SET_PORT; pstMsg->ulSenderPid = WUEPS_PID_AT; pstMsg->ulReceiverPid = AT_GetDestPid(ClientId, I0_WUEPS_PID_VC); pstMsg->aucContent[0] = ucVoicePort; pstMsg->aucContent[1] = 0; pstMsg->aucContent[2] = 0; pstMsg->aucContent[3] = 0; ulRslt = PS_SEND_MSG(WUEPS_PID_AT, pstMsg); if (VOS_OK != ulRslt) { AT_ERR_LOG("APP_VC_GetVoiceMode: SEND MSG FAIL."); return VOS_ERR; } return VOS_OK; }
VOS_UINT32 At_SndReleaseRrcReq ( VOS_UINT16 usClientId, VOS_UINT8 ucOpId ) { AT_RABM_RELEASE_RRC_REQ_STRU *pstSndMsg; VOS_UINT32 ulRslt; /* 申请内存 */ pstSndMsg = (AT_RABM_RELEASE_RRC_REQ_STRU *)PS_ALLOC_MSG(WUEPS_PID_AT, sizeof(AT_RABM_RELEASE_RRC_REQ_STRU) - VOS_MSG_HEAD_LENGTH); if ( VOS_NULL_PTR == pstSndMsg ) { /* 内存申请失败 */ AT_ERR_LOG("At_SndReleaseRrcReq:ERROR: Memory Alloc Error for pstMsg"); return VOS_ERR; } PS_MEM_SET((VOS_CHAR*)pstSndMsg + VOS_MSG_HEAD_LENGTH, 0x00, (sizeof(AT_RABM_RELEASE_RRC_REQ_STRU) - VOS_MSG_HEAD_LENGTH)); /* 填写相关参数 */ pstSndMsg->stMsgHeader.ulReceiverCpuId = VOS_LOCAL_CPUID; pstSndMsg->stMsgHeader.ulReceiverPid = AT_GetDestPid(usClientId, I0_WUEPS_PID_RABM); pstSndMsg->stMsgHeader.ulLength = sizeof(AT_RABM_RELEASE_RRC_REQ_STRU) - VOS_MSG_HEAD_LENGTH; pstSndMsg->stMsgHeader.ulMsgName = ID_AT_RABM_SET_RELEASE_RRC_REQ; pstSndMsg->usClientId = usClientId; pstSndMsg->ucOpId = ucOpId; /* 调用VOS发送原语 */ ulRslt = PS_SEND_MSG(WUEPS_PID_AT, pstSndMsg); if ( VOS_OK != ulRslt ) { AT_ERR_LOG("At_SndReleaseRrcReq:ERROR:PS_SEND_MSG "); return VOS_ERR; } return VOS_OK; }
/***************************************************************************** 函 数 名 : TAF_AGENT_GetAntState 功能描述 : 获取天线状态 输入参数 : VOS_UINT16 usClientId 输出参数 : VOS_UINT16 *pusAntState 返 回 值 : VOS_UINT32 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2013年8月2日 作 者 : z60575 修改内容 : 获取天线状态 *****************************************************************************/ VOS_UINT32 TAF_AGENT_GetAntState( VOS_UINT16 usClientId, VOS_UINT16 *pusAntState ) { VOS_UINT32 ulResult; TAFAGENT_MTA_GET_ANT_STATE_CNF_STRU *pstCnf = VOS_NULL_PTR; TAFAGENT_MTA_GET_ANT_STATE_REQ_STRU *pstMsg = VOS_NULL_PTR; ulResult = VOS_ERR; TAF_AGENT_SetTafAcpuCnfMsg(VOS_NULL_PTR); TAF_AGENT_ClearMsg(); /* 如果同步信号量已锁,挂起任务,依次进入等待队列;如果同步信号量未锁,锁信号量。*/ ulResult = VOS_SmP(TAF_AGENT_GetTafAcpuSyncSem(), 0); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetAntState: Lock Mutex SEM Failed!"); TAF_AGENT_DBG_SAVE_LAST_MUTEX_SEM_ERR_RSLT(ulResult); TAF_AGENT_DBG_LOCK_MUTEX_SEM_FAIL_NUM(1); return VOS_ERR; } /* 构造消息 */ pstMsg = (TAFAGENT_MTA_GET_ANT_STATE_REQ_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN(ACPU_PID_TAFAGENT, sizeof(TAFAGENT_MTA_GET_ANT_STATE_REQ_STRU)); if (VOS_NULL_PTR == pstMsg) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetAntState: Malloc Msg Failed!"); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } /* 填写消息头 */ pstMsg->ulReceiverPid = AT_GetDestPid(usClientId, I0_UEPS_PID_MTA); pstMsg->enMsgId = ID_TAFAGENT_MTA_GET_ANT_STATE_REQ; /* 将请求消息发送给CCPU */ ulResult = PS_SEND_MSG(ACPU_PID_TAFAGENT, pstMsg); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetAntState: Send Msg Failed!"); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_TRUE); /* 等待回复信号量初始为锁状态,等待CCPU的回复后信号量解锁。 */ ulResult = VOS_SmP(TAF_AGENT_GetTafAcpuCnfSem(), PS_SYNC_CNF_TIMEOUT_LEN); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetAntState: Lock Binary SEM Failed!"); TAF_AGENT_DBG_SAVE_LAST_BIN_SEM_ERR_RSLT(ulResult); TAF_AGENT_DBG_LOCK_BINARY_SEM_FAIL_NUM(1); TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } ulResult = VOS_ERR; pstCnf = (TAFAGENT_MTA_GET_ANT_STATE_CNF_STRU*)(TAF_AGENT_GetTafAcpuCnfMsg()); if (VOS_NULL_PTR == pstCnf) { TAF_AGENT_DBG_SYNC_MSG_IS_NULL_NUM(1); TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } if ((ID_TAFAGENT_MTA_GET_ANT_STATE_CNF == pstCnf->enMsgId) && (VOS_OK == pstCnf->ulRslt)) { *pusAntState = pstCnf->usAntState; ulResult = VOS_OK; } else { TAF_AGENT_DBG_SYNC_MSG_NOT_MATCH_NUM(1); } TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return ulResult; }
VOS_UINT32 TAF_AGENT_GetPdpCidQosPara( MN_CLIENT_ID_T usClientId, VOS_UINT8 ucCid, TAF_PS_PDP_QOS_QUERY_PARA_STRU *pstQosPara ) { VOS_UINT32 ulResult; TAFAGENT_APS_GET_CID_QOS_PARA_CNF_STRU *pstCnf; TAFAGENT_APS_GET_CID_QOS_PARA_REQ_STRU *pstMsg; ulResult = VOS_ERR; TAF_AGENT_SetTafAcpuCnfMsg(VOS_NULL_PTR); TAF_AGENT_ClearMsg(); /* 如果同步信号量已锁,挂起任务,依次进入等待队列;如果同步信号量未锁,锁信号量。*/ ulResult = VOS_SmP(TAF_AGENT_GetTafAcpuSyncSem(), 0); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetPdpCidQosPara: Lock Mutex SEM Failed!"); TAF_AGENT_DBG_SAVE_LAST_MUTEX_SEM_ERR_RSLT(ulResult); TAF_AGENT_DBG_LOCK_MUTEX_SEM_FAIL_NUM(1); return VOS_ERR; } /* 构造消息 */ pstMsg = (TAFAGENT_APS_GET_CID_QOS_PARA_REQ_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN(ACPU_PID_TAFAGENT, sizeof(TAFAGENT_APS_GET_CID_QOS_PARA_REQ_STRU)); if (VOS_NULL_PTR == pstMsg) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetPdpCidQosPara: Malloc Msg Failed!"); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } /* 填写消息头 */ pstMsg->ulReceiverPid = AT_GetDestPid(usClientId, I0_WUEPS_PID_TAF); pstMsg->ulMsgId = ID_TAFAGENT_APS_GET_CID_QOS_PARA_REQ; pstMsg->ucCid = ucCid; /* 将请求消息发送给CCPU */ ulResult = PS_SEND_MSG(ACPU_PID_TAFAGENT, pstMsg); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetPdpCidQosPara: Send Msg Failed!"); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_TRUE); /* 等待回复信号量初始为锁状态,等待CCPU的回复后信号量解锁。 */ ulResult = VOS_SmP(TAF_AGENT_GetTafAcpuCnfSem(), PS_SYNC_CNF_TIMEOUT_LEN); if (VOS_OK != ulResult) { TAFAGENT_ERROR_LOG(ACPU_PID_TAFAGENT, "TAF_AGENT_GetPdpCidQosPara: Lock Binary SEM Failed!"); TAF_AGENT_DBG_SAVE_LAST_BIN_SEM_ERR_RSLT(ulResult); TAF_AGENT_DBG_LOCK_BINARY_SEM_FAIL_NUM(1); TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } ulResult = VOS_ERR; pstCnf = (TAFAGENT_APS_GET_CID_QOS_PARA_CNF_STRU*)(TAF_AGENT_GetTafAcpuCnfMsg()); if (VOS_NULL_PTR == pstCnf) { TAF_AGENT_DBG_SYNC_MSG_IS_NULL_NUM(1); TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return VOS_ERR; } if ((ID_TAFAGENT_APS_GET_CID_QOS_PARA_CNF == pstCnf->enMsgId) && (VOS_OK == pstCnf->ulRet)) { PS_MEM_CPY((VOS_VOID*)pstQosPara, (VOS_VOID*)&(pstCnf->stQosPara), sizeof(TAF_PS_PDP_QOS_QUERY_PARA_STRU)); ulResult = VOS_OK; } else { TAF_AGENT_DBG_SYNC_MSG_NOT_MATCH_NUM(1); } TAF_AGENT_SET_ACPU_CNF_SEM_LOCK_FLG(VOS_FALSE); VOS_SmV(TAF_AGENT_GetTafAcpuSyncSem()); return ulResult; }