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_RcvImsaMtStateInd(VOS_VOID * pMsg) { /* 定义局部变量 */ IMSA_AT_MT_STATES_IND_STRU *pstMtStatusInd; VOS_UINT8 ucIndex; VOS_CHAR acString[AT_IMSA_CALL_ASCII_NUM_MAX_LENGTH + 1]; /* 初始化消息变量 */ ucIndex = 0; pstMtStatusInd = (IMSA_AT_MT_STATES_IND_STRU*)pMsg; /* 通过ClientId获取ucIndex */ if ( AT_FAILURE == At_ClientIdToUserId(pstMtStatusInd->usClientId, &ucIndex) ) { AT_WARN_LOG("AT_RcvImsaImpuSetCnf: WARNING:AT INDEX NOT FOUND!"); return VOS_ERR; } VOS_MemSet(acString, 0, sizeof(acString)); VOS_MemCpy(acString, pstMtStatusInd->aucAsciiCallNum, AT_IMSA_CALL_ASCII_NUM_MAX_LENGTH); gstAtSendData.usBufLen= (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr, "%s^IMSMTRPT: %s,%d,%d%s", gaucAtCrLf, acString, pstMtStatusInd->ucMtStatus, pstMtStatusInd->ulCauseCode, gaucAtCrLf); /* 调用At_SendResultData发送命令结果 */ At_SendResultData(ucIndex, pgucAtSndCodeAddr, gstAtSendData.usBufLen); return VOS_OK; }
VOS_UINT32 AT_RcvImsaVtPdpActInd(VOS_VOID * pMsg) { /* 定义局部变量 */ IMSA_AT_VT_PDP_ACTIVATE_IND_STRU *pstPdpActInd; VOS_UINT8 ucIndex; /* 初始化消息变量 */ ucIndex = 0; pstPdpActInd = (IMSA_AT_VT_PDP_ACTIVATE_IND_STRU *)pMsg; /* 通过ClientId获取ucIndex */ if ( AT_FAILURE == At_ClientIdToUserId(pstPdpActInd->usClientId, &ucIndex) ) { AT_WARN_LOG("AT_RcvImsaVtPdpActInd: WARNING:AT INDEX NOT FOUND!"); return VOS_ERR; } switch(pstPdpActInd->stPdpAddr.enPdpType) { case TAF_PDP_IPV4: AT_RcvImsaVtIpv4PdpActInd(ucIndex, pstPdpActInd); break; case TAF_PDP_IPV6: AT_RcvImsaVtIpv6PdpActInd(ucIndex, pstPdpActInd); break; case TAF_PDP_IPV4V6: AT_RcvImsaVtIpv4v6PdpActInd(ucIndex, pstPdpActInd); break; default: return VOS_ERR; } return VOS_OK; }
VOS_UINT32 AT_RcvImsaCirepiInd(VOS_VOID * pMsg) { /* 定义局部变量 */ IMSA_AT_CIREPI_IND_STRU *pstCirepiInd; VOS_UINT8 ucIndex; /* 初始化消息变量 */ ucIndex = 0; pstCirepiInd = (IMSA_AT_CIREPI_IND_STRU *)pMsg; /* 通过ClientId获取ucIndex */ if ( AT_FAILURE == At_ClientIdToUserId(pstCirepiInd->usClientId, &ucIndex) ) { AT_WARN_LOG("AT_RcvImsaCirepiInd: WARNING:AT INDEX NOT FOUND!"); return VOS_ERR; } /* 判断查询操作是否成功 */ gstAtSendData.usBufLen = (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr, "%s%s: %d%s", gaucAtCrLf, gastAtStringTab[AT_STRING_CIREPI].pucText, pstCirepiInd->enImsvops, gaucAtCrLf); At_SendResultData(ucIndex, pgucAtSndCodeAddr, gstAtSendData.usBufLen); return VOS_OK; }
VOS_VOID AT_MNTN_TraceEvent(VOS_VOID *pMsg) { if (VOS_OK != OM_AcpuTraceMsgHook(pMsg)) { AT_WARN_LOG("AT_MNTN_TraceEvent: Trace MSG Fail!\r\n"); } return; }
VOS_UINT32 AT_RcvImsaCireguInd(VOS_VOID * pMsg) { /* 定义局部变量 */ IMSA_AT_CIREGU_IND_STRU *pstCireguInd; VOS_UINT8 ucIndex; VOS_UINT16 usLength; /* 初始化消息变量 */ ucIndex = 0; usLength = 0; pstCireguInd = (IMSA_AT_CIREGU_IND_STRU *)pMsg; /* 通过ClientId获取ucIndex */ if ( AT_FAILURE == At_ClientIdToUserId(pstCireguInd->usClientId, &ucIndex) ) { AT_WARN_LOG("AT_RcvImsaCireguInd: WARNING:AT INDEX NOT FOUND!"); return VOS_ERR; } /* 判断查询操作是否成功 */ usLength += (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr, "%s%s: %d", gaucAtCrLf, gastAtStringTab[AT_STRING_CIREGU].pucText, pstCireguInd->ulRegInfo); /* 如果IMS未注册,<ext_info>参数无意义 */ if ((VOS_FALSE != pstCireguInd->ulRegInfo) && (VOS_FALSE != pstCireguInd->bitOpExtInfo)) { usLength += (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr + usLength, ",%d", pstCireguInd->ulExtInfo); } usLength += (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr + usLength, "%s", gaucAtCrLf); gstAtSendData.usBufLen = usLength; At_SendResultData(ucIndex, pgucAtSndCodeAddr, gstAtSendData.usBufLen); return VOS_OK; }
VOS_UINT32 AT_RcvImsaVtPdpDeactInd(VOS_VOID * pMsg) { /* 定义局部变量 */ IMSA_AT_VT_PDP_DEACTIVATE_IND_STRU *pstPdpDeactInd; VOS_UINT8 ucIndex; VOS_UINT16 usLength; /* 初始化消息变量 */ usLength = 0; ucIndex = 0; pstPdpDeactInd = (IMSA_AT_VT_PDP_DEACTIVATE_IND_STRU *)pMsg; /* 通过ClientId获取ucIndex */ if ( AT_FAILURE == At_ClientIdToUserId(pstPdpDeactInd->usClientId, &ucIndex) ) { AT_WARN_LOG("AT_RcvImsaVtPdpDeactInd: WARNING:AT INDEX NOT FOUND!"); return VOS_ERR; } switch(pstPdpDeactInd->enPdpType) { case TAF_PDP_IPV4: usLength += (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr + usLength, "%s^VTDENDV4%s", gaucAtCrLf, gaucAtCrLf); break; case TAF_PDP_IPV6: usLength += (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr + usLength, "%s^VTDENDV6%s", gaucAtCrLf, gaucAtCrLf); break; case TAF_PDP_IPV4V6: usLength += (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr + usLength, "%s^VTDENDV4%s", gaucAtCrLf, gaucAtCrLf); usLength += (VOS_UINT16)At_sprintf(AT_CMD_MAX_LEN, (VOS_CHAR *)pgucAtSndCodeAddr, (VOS_CHAR *)pgucAtSndCodeAddr + usLength, "%s^VTDENDV6%s", gaucAtCrLf, gaucAtCrLf); break; default: return VOS_ERR; } gstAtSendData.usBufLen = usLength; At_SendResultData(ucIndex, pgucAtSndCodeAddr, gstAtSendData.usBufLen); 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; }