VOS_VOID MN_CALL_ProcOmConfigGsmCodec( ID_NAS_OM_INQUIRE_STRU *pstMsg ) { NAS_OM_SET_GSM_CODEC_CONFIG_REQ_STRU *pstCodecConfigReq = VOS_NULL_PTR; NAS_OM_SET_GSM_CODEC_CONFIG_CNF_STRU *pstCodecConfigCnf = VOS_NULL_PTR; VOS_UINT32 ulMsgLen; VOS_UINT32 ulRet; /* 申请消息 */ ulMsgLen = sizeof(NAS_OM_SET_GSM_CODEC_CONFIG_CNF_STRU) - VOS_MSG_HEAD_LENGTH; pstCodecConfigCnf = (NAS_OM_SET_GSM_CODEC_CONFIG_CNF_STRU*)PS_ALLOC_MSG(WUEPS_PID_TAF, ulMsgLen); if (VOS_NULL_PTR == pstCodecConfigCnf) { MN_ERR_LOG("MN_CALL_ProcOmConfigGsmCodec:Error: Memory Alloc fail"); return; } /* 初始化 */ PS_MEM_SET((VOS_UINT8*)pstCodecConfigCnf + VOS_MSG_HEAD_LENGTH, 0x00, ulMsgLen); pstCodecConfigReq = (NAS_OM_SET_GSM_CODEC_CONFIG_REQ_STRU*)pstMsg; /* 填写消息内容 */ pstCodecConfigCnf->ulReceiverPid = MSP_PID_DIAG_APP_AGENT; pstCodecConfigCnf->ulMsgId = ID_NAS_OM_SET_CODEC_TYPE_CONFIRM; pstCodecConfigCnf->usOriginalId = pstMsg->usOriginalId; pstCodecConfigCnf->usTerminalId = pstMsg->usTerminalId; pstCodecConfigCnf->ulTimeStamp = pstMsg->ulTimeStamp; pstCodecConfigCnf->ulSN = pstMsg->ulSN; /* 商用版本防止误配置,当只配置支持部分语音编码模式时直接返回失败 */ if (NAS_OM_GSM_CODEC_FR_EFR_HR_AMR != pstCodecConfigReq->enGsmCodec) { MN_WARN_LOG("MN_CALL_ProcOmConfigGsmCodec:GsmCodec is not NAS_OM_GSM_CODEC_FR_EFR_HR_AMR"); pstCodecConfigCnf->ulRet = VOS_ERR; /* 发送消息 */ PS_SEND_MSG(WUEPS_PID_TAF, pstCodecConfigCnf); return; } ulRet = MN_CALL_ConfigGsmCapaProc(pstCodecConfigReq->enGsmCodec); if ( VOS_OK == ulRet) { pstCodecConfigCnf->ulRet = VOS_OK; } else { pstCodecConfigCnf->ulRet = VOS_ERR; } /* 发送消息 */ PS_SEND_MSG(WUEPS_PID_TAF, pstCodecConfigCnf); return; }
VOS_VOID MN_CALL_ProcOmConfigGsmCodec( ID_NAS_OM_INQUIRE_STRU *pstMsg ) { NAS_OM_GSM_CODEC_CONFIG_ENUM_U8 enGsmCodecConfig; VOS_UINT32 ulRet; ID_NAS_OM_CNF_STRU *pstNasOmCnf; NAS_OM_SET_GSM_CODEC_CONFIG_CNF_STRU stCodecConfigCnf; enGsmCodecConfig = pstMsg->aucData[0]; ulRet = MN_CALL_ConfigGsmCapaProc(enGsmCodecConfig); if ( VOS_OK == ulRet) { stCodecConfigCnf.ulRet = VOS_OK; } else { stCodecConfigCnf.ulRet = VOS_ERR; } pstNasOmCnf = (ID_NAS_OM_CNF_STRU *)PS_ALLOC_MSG_WITH_HEADER_LEN(WUEPS_PID_TAF, (sizeof(ID_NAS_OM_CNF_STRU)+ sizeof(NAS_OM_SET_GSM_CODEC_CONFIG_CNF_STRU)) - NAS_OM_DATA_PTR_LEN); /* 申请内存 */ if (VOS_NULL_PTR == pstNasOmCnf) { MN_ERR_LOG("MN_CALL_ProcOmConfigGsmCodec:Error: Memory Alloc fail"); return; } PS_MEM_SET(pstNasOmCnf, 0, sizeof(ID_NAS_OM_CNF_STRU)); MN_Com_FillNasOmTransMsgHeader(pstNasOmCnf, ID_NAS_OM_SET_CODEC_TYPE_CONFIRM,pstMsg->usToolsId); PS_MEM_CPY(pstNasOmCnf->aucData, &stCodecConfigCnf,sizeof(stCodecConfigCnf)); pstNasOmCnf->usLength = NAS_OM_DATA_OFFSET + sizeof(NAS_OM_SET_GSM_CODEC_CONFIG_CNF_STRU); ulRet = PS_SEND_MSG(WUEPS_PID_TAF, pstNasOmCnf); /* 原语发送 */ if (VOS_OK != ulRet) { MN_WARN_LOG("MN_CALL_ProcOmConfigGsmCodec:WARNING: Send msg fail."); } }