VOS_VOID TAF_SPM_SendAtGetCallInfoCnf( IMSA_SPM_CALL_GET_CALL_INFO_CNF_STRU *pstImsaMsg ) { MN_CALL_INFO_QRY_CNF_STRU stAppCnfMsg; VOS_UINT16 usLength; /* 构造一条消息,给AT回复 */ PS_MEM_SET(&stAppCnfMsg, 0x00, sizeof(MN_CALL_INFO_QRY_CNF_STRU)); /* 填写事件名称 */ stAppCnfMsg.enEvent = MN_CALL_EVT_CLCC_INFO; stAppCnfMsg.clientId = MN_GetRealClientId(pstImsaMsg->usClientId, WUEPS_PID_TAF); stAppCnfMsg.ucNumOfCalls = pstImsaMsg->ucNumOfCalls; PS_MEM_CPY(stAppCnfMsg.astCallInfos, pstImsaMsg->astCallInfo, sizeof(MN_CALL_INFO_PARAM_STRU)*(stAppCnfMsg.ucNumOfCalls)); /* 确定消息长度 */ usLength = (VOS_UINT16)sizeof(MN_CALL_INFO_QRY_CNF_STRU); /* 通过异步消息发送给AT */ MN_SendReportMsg(MN_CALLBACK_CS_CALL, (TAF_UINT8 *)&stAppCnfMsg, usLength); return; }
VOS_VOID TAF_SPM_SendEconfNotifyInd( MN_OPERATION_ID_T ucOpId, VOS_UINT8 ucNumOfCalls, TAF_CALL_ECONF_INFO_PARAM_STRU *pstCallInfo ) { TAF_CALL_EVT_ECONF_NOTIFY_IND_STRU *pstEconfNotify = VOS_NULL_PTR; /* 由于sizeof(TAF_CALL_EVT_ECONF_NOTIFY_IND_STRU)太大,采用动态内存 */ pstEconfNotify = (TAF_CALL_EVT_ECONF_NOTIFY_IND_STRU *)PS_MEM_ALLOC(WUEPS_PID_TAF, sizeof(TAF_CALL_EVT_ECONF_NOTIFY_IND_STRU)); if (VOS_NULL_PTR == pstEconfNotify) { return; } PS_MEM_SET(pstEconfNotify, 0, sizeof(TAF_CALL_EVT_ECONF_NOTIFY_IND_STRU)); pstEconfNotify->enEvent = TAF_CALL_EVT_ECONF_NOTIFY_IND; pstEconfNotify->usClientId = MN_GetRealClientId(MN_CLIENT_ID_BROADCAST, WUEPS_PID_TAF);; pstEconfNotify->ucOpId = ucOpId; pstEconfNotify->ucNumOfCalls = ucNumOfCalls; PS_MEM_CPY(pstEconfNotify->astCallInfo, pstCallInfo, sizeof(TAF_CALL_ECONF_INFO_PARAM_STRU) * ucNumOfCalls); MN_SendReportMsg(MN_CALLBACK_CS_CALL, (VOS_UINT8 *)pstEconfNotify, sizeof(TAF_CALL_EVT_ECONF_NOTIFY_IND_STRU)); PS_MEM_FREE(WUEPS_PID_TAF, pstEconfNotify); return; }
VOS_VOID TAF_MTA_SndAtMsg( AT_APPCTRL_STRU *pAppCtrl, VOS_UINT32 ulMsgId, VOS_UINT32 ulLen, VOS_UINT8 *pData ) { AT_MTA_MSG_STRU *pstMtaMsgStr; /* 判断输入参数 */ if ((VOS_NULL_PTR == pData) || (0 == ulLen)) { MTA_ERROR_LOG("TAF_MTA_SndAtMsg: para is invalid!"); return; } /* 消息空间申请 */ pstMtaMsgStr = (AT_MTA_MSG_STRU *)PS_ALLOC_MSG( UEPS_PID_MTA, sizeof(AT_APPCTRL_STRU) + sizeof(ulMsgId) + ulLen); if (VOS_NULL_PTR == pstMtaMsgStr) { MTA_ERROR_LOG("TAF_MTA_SndAtMsg: alloc msg fail!"); return; } /* 填消息包 */ pstMtaMsgStr->ulReceiverCpuId = VOS_LOCAL_CPUID; pstMtaMsgStr->ulSenderCpuId = VOS_LOCAL_CPUID; pstMtaMsgStr->ulSenderPid = UEPS_PID_MTA; pstMtaMsgStr->ulReceiverPid = WUEPS_PID_AT; pstMtaMsgStr->ulMsgId = ulMsgId; pstMtaMsgStr->stAppCtrl.usClientId = MN_GetRealClientId(pAppCtrl->usClientId, UEPS_PID_MTA); pstMtaMsgStr->stAppCtrl.ucOpId = pAppCtrl->ucOpId; pstMtaMsgStr->stAppCtrl.aucReserved[0] = 0; PS_MEM_CPY(pstMtaMsgStr->aucContent, pData, ulLen); /* 发送消息到AT模块 */ if (VOS_OK != PS_SEND_MSG(UEPS_PID_MTA, pstMtaMsgStr)) { MTA_ERROR_LOG("TAF_MTA_SndAtMsg():WARNING:SEND MSG FIAL"); } return; }
VOS_UINT32 APP_VC_SendGroundRsp( MN_CLIENT_ID_T usClientId, VCVOICE_GROUND_ENUM_UINT16 enState , VOS_UINT8 ucQryRslt ) { MN_AT_IND_EVT_STRU *pstAtMsg = VOS_NULL_PTR; APP_VC_QRY_GROUNG_RSP_STRU stQryRsp; pstAtMsg = (MN_AT_IND_EVT_STRU *)PS_ALLOC_MSG(WUEPS_PID_VC, sizeof(MN_AT_IND_EVT_STRU) - VOS_MSG_HEAD_LENGTH); if (VOS_NULL_PTR == pstAtMsg) { return VOS_ERR; } PS_MEM_SET(pstAtMsg, 0x00, sizeof(MN_AT_IND_EVT_STRU)); pstAtMsg->ulReceiverCpuId = VOS_LOCAL_CPUID; pstAtMsg->ulSenderPid = WUEPS_PID_VC; pstAtMsg->ulReceiverPid = WUEPS_PID_AT; pstAtMsg->ulSenderCpuId = VOS_LOCAL_CPUID; pstAtMsg->ulLength = sizeof(MN_AT_IND_EVT_STRU) - VOS_MSG_HEAD_LENGTH; pstAtMsg->clientId = MN_GetRealClientId(usClientId, WUEPS_PID_VC); pstAtMsg->usMsgName = APP_VC_MSG_FOREGROUND_RSP; /* 模式查询结果 */ stQryRsp.ucQryRslt = ucQryRslt; stQryRsp.aucReserved = 0; stQryRsp.enGround = (APP_VC_QRY_GROUND_ENUM_U16)enState; /* 填写新消息内容 */ PS_MEM_CPY(&pstAtMsg->aucContent[0], &stQryRsp, sizeof(APP_VC_QRY_GROUNG_RSP_STRU)); /*发送消息到AT_PID;*/ if (VOS_OK != PS_SEND_MSG(pstAtMsg->ulSenderPid, pstAtMsg)) { return VOS_ERR; } return VOS_OK; }
VOS_UINT32 APP_VC_SendSetBackGroundCnf( MN_CLIENT_ID_T usClientId, VCVOICE_EXECUTE_RSLT_ENUM_UINT16 enExeRslt ) { MN_AT_IND_EVT_STRU *pstAtMsg = VOS_NULL_PTR; pstAtMsg = (MN_AT_IND_EVT_STRU *)PS_ALLOC_MSG(WUEPS_PID_VC, sizeof(MN_AT_IND_EVT_STRU) - VOS_MSG_HEAD_LENGTH); if (VOS_NULL_PTR == pstAtMsg) { return VOS_ERR; } PS_MEM_SET(pstAtMsg, 0x00, sizeof(MN_AT_IND_EVT_STRU)); pstAtMsg->ulReceiverCpuId = VOS_LOCAL_CPUID; pstAtMsg->ulSenderPid = WUEPS_PID_VC; pstAtMsg->ulReceiverPid = WUEPS_PID_AT; pstAtMsg->ulSenderCpuId = VOS_LOCAL_CPUID; pstAtMsg->ulLength = sizeof(MN_AT_IND_EVT_STRU) - VOS_MSG_HEAD_LENGTH; pstAtMsg->clientId = MN_GetRealClientId(usClientId, WUEPS_PID_VC); pstAtMsg->usMsgName = APP_VC_MSG_SET_BACKGROUND_CNF; /* 回复消息内容中第一个字节为设置结果 */ if ( VCVOICE_EXECUTE_RSLT_SUCC == enExeRslt ) { pstAtMsg->aucContent[0] = VOS_OK; } else { pstAtMsg->aucContent[0] = VOS_ERR; } if (VOS_OK != PS_SEND_MSG(pstAtMsg->ulSenderPid, pstAtMsg) ) { return VOS_ERR; } return VOS_OK; }
VOS_VOID TAF_SPM_SendAtGetEconfCallInfoCnf( IMSA_SPM_CALL_GET_ECONF_CALLED_INFO_CNF_STRU *pstImsaMsg ) { TAF_CALL_ECONF_INFO_QRY_CNF_STRU *pstImsaCnfMsg; VOS_UINT16 usLength; pstImsaCnfMsg = (TAF_CALL_ECONF_INFO_QRY_CNF_STRU*)PS_MEM_ALLOC(WUEPS_PID_TAF, sizeof(TAF_CALL_ECONF_INFO_QRY_CNF_STRU)); if (VOS_NULL_PTR == pstImsaCnfMsg) { return; } /* 构造一条消息,给AT回复 */ PS_MEM_SET((VOS_VOID *)pstImsaCnfMsg, 0x00, sizeof(TAF_CALL_ECONF_INFO_QRY_CNF_STRU)); /* 填写事件名称 */ pstImsaCnfMsg->enEvent = TAF_CALL_EVT_CLCCECONF_INFO; pstImsaCnfMsg->usClientId = MN_GetRealClientId(pstImsaMsg->usClientId, WUEPS_PID_TAF); pstImsaCnfMsg->usClientId = pstImsaMsg->ucOpId; pstImsaCnfMsg->ucNumOfMaxCalls = pstImsaMsg->ucNumOfMaxCalls; pstImsaCnfMsg->ucNumOfCalls = pstImsaMsg->ucNumOfCalls; PS_MEM_CPY(pstImsaCnfMsg->astCallInfo, pstImsaMsg->astCallInfo, sizeof(TAF_CALL_ECONF_INFO_PARAM_STRU) * (pstImsaMsg->ucNumOfCalls)); /* 确定消息长度 */ usLength = (VOS_UINT16)sizeof(TAF_CALL_ECONF_INFO_QRY_CNF_STRU); /* 通过异步消息发送给AT */ MN_SendReportMsg(MN_CALLBACK_CS_CALL, (VOS_UINT8 *)pstImsaCnfMsg, usLength); PS_MEM_FREE(WUEPS_PID_TAF, pstImsaCnfMsg); return; }