VOS_VOID CmdErrProc(VOS_UINT8 ucClientId, VOS_UINT32 ulErrCode, VOS_UINT16 usBufLen, VOS_UINT8* pucBuf) { VOS_UINT32 ulResult = 0; gstAtSendData.usBufLen = usBufLen; if(NULL != pucBuf) { /*MSP_MEMCPY(gstAtSendData.aucBuffer, pucBuf, usBufLen); */ /*改成下面的以匹配函数 At_FormatResultData */ MSP_MEMCPY(pgucAtSndCodeAddr, pucBuf, usBufLen); } if(ERR_MSP_SUCCESS != ulErrCode) { ulResult = ChgErrorCode(ulErrCode); At_FormatResultData(ucClientId, ulResult); } else { At_FormatResultData(ucClientId, AT_OK); } return ; }
VOS_UINT32 AT_RcvImsaCirepQryCnf(VOS_VOID * pMsg) { /* 定义局部变量 */ IMSA_AT_CIREP_QRY_CNF_STRU *pstCirepCnf; VOS_UINT8 ucIndex; VOS_UINT32 ulResult; /* 初始化消息变量 */ ucIndex = 0; pstCirepCnf = (IMSA_AT_CIREP_QRY_CNF_STRU *)pMsg; /* 通过ClientId获取ucIndex */ if ( AT_FAILURE == At_ClientIdToUserId(pstCirepCnf->usClientId, &ucIndex) ) { AT_WARN_LOG("AT_RcvImsaCirepQryCnf: WARNING:AT INDEX NOT FOUND!"); return VOS_ERR; } if (AT_IS_BROADCAST_CLIENT_INDEX(ucIndex)) { AT_WARN_LOG("AT_RcvImsaCirepQryCnf: WARNING:AT_BROADCAST_INDEX!"); return VOS_ERR; } /* 判断当前操作类型是否为AT_CMD_CIREP_QRY */ if ( AT_CMD_CIREP_QRY != gastAtClientTab[ucIndex].CmdCurrentOpt ) { AT_WARN_LOG("AT_RcvImsaCirepQryCnf: WARNING:Not AT_CMD_CIREP_QRY!"); return VOS_ERR; } /* 复位AT状态 */ AT_STOP_TIMER_CMD_READY(ucIndex); /* 判断查询操作是否成功 */ if ( VOS_OK == pstCirepCnf->ulResult ) { gstAtSendData.usBufLen= (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr, "%s: %d,%d", g_stParseContext[ucIndex].pstCmdElement->pszCmdName, pstCirepCnf->enReport, pstCirepCnf->enImsvops); ulResult = AT_OK; } else { gstAtSendData.usBufLen = 0; ulResult = AT_ERROR; } /* 调用At_FormatResultData发送命令结果 */ At_FormatResultData(ucIndex, ulResult); return VOS_OK; }
VOS_UINT32 AT_RcvImsaCiregSetCnf(VOS_VOID * pMsg) { /* 定义局部变量 */ IMSA_AT_CIREG_SET_CNF_STRU *pstCiregCnf; VOS_UINT8 ucIndex; VOS_UINT32 ulResult; /* 初始化消息变量 */ ucIndex = 0; pstCiregCnf = (IMSA_AT_CIREG_SET_CNF_STRU *)pMsg; /* 通过ClientId获取ucIndex */ if ( AT_FAILURE == At_ClientIdToUserId(pstCiregCnf->usClientId, &ucIndex) ) { AT_WARN_LOG("AT_RcvImsaCiregSetCnf: WARNING:AT INDEX NOT FOUND!"); return VOS_ERR; } if (AT_IS_BROADCAST_CLIENT_INDEX(ucIndex)) { AT_WARN_LOG("AT_RcvImsaCiregSetCnf: WARNING:AT_BROADCAST_INDEX!"); return VOS_ERR; } /* 判断当前操作类型是否为AT_CMD_CIREG_SET */ if ( AT_CMD_CIREG_SET != gastAtClientTab[ucIndex].CmdCurrentOpt ) { AT_WARN_LOG("AT_RcvImsaCiregSetCnf: WARNING:Not AT_CMD_CIREG_SET!"); return VOS_ERR; } /* 复位AT状态 */ AT_STOP_TIMER_CMD_READY(ucIndex); /* 判断查询操作是否成功 */ if ( VOS_OK == pstCiregCnf->ulResult ) { ulResult = AT_OK; } else { ulResult = AT_ERROR; } gstAtSendData.usBufLen = 0; /* 调用At_FormatResultData发送命令结果 */ At_FormatResultData(ucIndex, ulResult); return VOS_OK; }
VOS_UINT32 AT_RcvImsaImpuSetCnf(VOS_VOID * pMsg) { /* 定义局部变量 */ IMSA_AT_VOLTEIMPU_QRY_CNF_STRU *pstImpuCnf; VOS_UINT8 ucIndex; VOS_UINT32 ulResult; VOS_CHAR acString[AT_IMSA_IMPU_MAX_LENGTH+1]; /* 初始化消息变量 */ ucIndex = 0; pstImpuCnf = (IMSA_AT_VOLTEIMPU_QRY_CNF_STRU *)pMsg; /* 通过ClientId获取ucIndex */ if ( AT_FAILURE == At_ClientIdToUserId(pstImpuCnf->usClientId, &ucIndex) ) { AT_WARN_LOG("AT_RcvImsaImpuSetCnf: WARNING:AT INDEX NOT FOUND!"); return VOS_ERR; } if (AT_IS_BROADCAST_CLIENT_INDEX(ucIndex)) { AT_WARN_LOG("AT_RcvImsaImpuSetCnf: WARNING:AT_BROADCAST_INDEX!"); return VOS_ERR; } /* 判断当前操作类型是否为AT_CMD_IMPU_SET */ if ( AT_CMD_IMPU_SET != gastAtClientTab[ucIndex].CmdCurrentOpt ) { AT_WARN_LOG("AT_RcvImsaImpuSetCnf: WARNING:Not AT_CMD_IMPU_SET!"); return VOS_ERR; } /* 复位AT状态 */ AT_STOP_TIMER_CMD_READY(ucIndex); VOS_MemSet(acString, 0, sizeof(acString)); if(pstImpuCnf->ulImpuLen > AT_IMSA_IMPU_MAX_LENGTH) { VOS_MemCpy(acString, pstImpuCnf->aucImpu, AT_IMSA_IMPU_MAX_LENGTH); } else { VOS_MemCpy(acString, pstImpuCnf->aucImpu, pstImpuCnf->ulImpuLen); } /* 判断查询操作是否成功 */ if ( VOS_OK == pstImpuCnf->ulResult ) { gstAtSendData.usBufLen= (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr, "%s: %s", g_stParseContext[ucIndex].pstCmdElement->pszCmdName, acString); ulResult = AT_OK; } else { gstAtSendData.usBufLen = 0; ulResult = AT_ERROR; } /* 调用At_FormatResultData发送命令结果 */ At_FormatResultData(ucIndex, ulResult); return VOS_OK; }
VOS_UINT32 AT_RcvImsaCiregQryCnf(VOS_VOID * pMsg) { /* 定义局部变量 */ IMSA_AT_CIREG_QRY_CNF_STRU *pstCiregCnf; VOS_UINT8 ucIndex; VOS_UINT32 ulResult; VOS_UINT16 usLength; /* 初始化消息变量 */ ucIndex = 0; usLength = 0; pstCiregCnf = (IMSA_AT_CIREG_QRY_CNF_STRU *)pMsg; /* 通过ClientId获取ucIndex */ if ( AT_FAILURE == At_ClientIdToUserId(pstCiregCnf->usClientId, &ucIndex) ) { AT_WARN_LOG("AT_RcvImsaCiregQryCnf: WARNING:AT INDEX NOT FOUND!"); return VOS_ERR; } if (AT_IS_BROADCAST_CLIENT_INDEX(ucIndex)) { AT_WARN_LOG("AT_RcvImsaCiregQryCnf: WARNING:AT_BROADCAST_INDEX!"); return VOS_ERR; } /* 判断当前操作类型是否为AT_CMD_CIREG_QRY */ if ( AT_CMD_CIREG_QRY != gastAtClientTab[ucIndex].CmdCurrentOpt ) { AT_WARN_LOG("AT_RcvImsaCiregQryCnf: WARNING:Not AT_CMD_CIREG_SET!"); return VOS_ERR; } /* 复位AT状态 */ AT_STOP_TIMER_CMD_READY(ucIndex); /* 判断查询操作是否成功 */ if ( VOS_OK == pstCiregCnf->ulResult ) { usLength += (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr, "%s: %d,", g_stParseContext[ucIndex].pstCmdElement->pszCmdName, pstCiregCnf->enCireg); usLength += (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr+usLength, "%d", pstCiregCnf->ulRegInfo); /* 如果IMS未注册,<ext_info>参数无意义,且不输出,详见3GPP 27007 v11 8.71 */ if ((VOS_FALSE != pstCiregCnf->ulRegInfo) && (VOS_FALSE != pstCiregCnf->bitOpExtInfo)) { usLength += (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr+usLength, ",%d", pstCiregCnf->ulExtInfo); } ulResult = AT_OK; } else { ulResult = AT_ERROR; } gstAtSendData.usBufLen = usLength; /* 调用At_FormatResultData发送命令结果 */ At_FormatResultData(ucIndex, ulResult); return VOS_OK; }