/***************************************************************************** 函 数 名 : SI_PB_GetReceiverPid 功能描述 : FDN激活 输入参数 : 无 输出参数 : 无 返 回 值 : SI_UINT32 函数执行结果 调用函数 : 无 被调函数 : 外部接口 History : 1.日 期 : 2008年10月18日 修改内容 : Create *****************************************************************************/ VOS_UINT32 SI_PB_GetReceiverPid(MN_CLIENT_ID_T ClientId, VOS_UINT32 *pulReceiverPid) { #if ( FEATURE_MULTI_MODEM == FEATURE_ON ) MODEM_ID_ENUM_UINT16 enModemID; /* 调用接口获取Modem ID */ if(VOS_OK != AT_GetModemIdFromClient(ClientId,&enModemID)) { return VOS_ERR; } if(MODEM_ID_1 == enModemID) { *pulReceiverPid = I1_MAPS_PB_PID; } else { *pulReceiverPid = I0_MAPS_PB_PID; } #else *pulReceiverPid = MAPS_PB_PID; #endif return VOS_OK; }
VOS_UINT32 AT_GetDestPid( MN_CLIENT_ID_T usClientId, VOS_UINT32 ulRcvPid ) { #if (FEATURE_ON == FEATURE_MULTI_MODEM) VOS_UINT32 ulRslt; MODEM_ID_ENUM_UINT16 enModemId; VOS_UINT32 i; enModemId = MODEM_ID_0; /* 获取client id对应的Modem Id */ ulRslt = AT_GetModemIdFromClient(usClientId, &enModemId); /* modem 1上ulRcvPid对应的pid */ if ((VOS_OK == ulRslt) && (MODEM_ID_0 != enModemId)) { for (i = 0; i < (sizeof(g_astAtModemPidTab)/sizeof(AT_MODEM_PID_TAB_STRU)); i++) { if (ulRcvPid != g_astAtModemPidTab[i].ulModem0Pid) { continue; } if (MODEM_ID_1 == enModemId) { return g_astAtModemPidTab[i].ulModem1Pid; } if (MODEM_ID_2 == enModemId) { return g_astAtModemPidTab[i].ulModem2Pid; } } /* 如果出现找不到对应的PID应该时出错了 */ if (i >= (sizeof(g_astAtModemPidTab)/sizeof(AT_MODEM_PID_TAB_STRU))) { (VOS_VOID)vos_printf("AT_GetDestPid: usClientId is %d, ulRcvPid is %d no modem1 pid. \r\n", usClientId, ulRcvPid); } } #endif return ulRcvPid; }
AT_MODEM_CC_CTX_STRU* AT_GetModemCcCtxAddrFromClientId( VOS_UINT16 usClientId ) { MODEM_ID_ENUM_UINT16 enModemId; VOS_UINT32 ulRslt; enModemId = MODEM_ID_0; ulRslt = AT_GetModemIdFromClient((VOS_UINT8)usClientId, &enModemId); if (VOS_OK != ulRslt) { AT_ERR_LOG("AT_GetModemCcCtxAddrFromClientId: Get modem id fail."); } return &(g_astAtModemCtx[enModemId].stCcCtx); }
VOS_UINT32 AT_FillAndSndCSIMAMsg(VOS_UINT16 usClinetID, VOS_UINT32 ulModemStatus) { AT_CSIMA_RESET_STATUS_IND_MSG_STRU *pstATCSIMAIndMsg; MODEM_ID_ENUM_UINT16 enModemID; /* 调用接口获取Modem ID */ if(VOS_OK != AT_GetModemIdFromClient(usClinetID,&enModemID)) { AT_ERR_LOG("AT_FillAndSndCSIMAMsg:ERROR: AT_GetModemIdFromClient Error"); return VOS_ERR; } /* 申请内存 */ pstATCSIMAIndMsg = (AT_CSIMA_RESET_STATUS_IND_MSG_STRU *)PS_ALLOC_MSG(WUEPS_PID_AT, sizeof(AT_CSIMA_RESET_STATUS_IND_MSG_STRU) - VOS_MSG_HEAD_LENGTH); if ( VOS_NULL_PTR == pstATCSIMAIndMsg ) { /* 内存申请失败 */ AT_ERR_LOG("AT_FillAndSndCSIMAMsg:ERROR: Memory Alloc Error for pstMsg"); return VOS_ERR; } /* 填写相关参数 */ if (MODEM_ID_1 == enModemID) { pstATCSIMAIndMsg->ulReceiverPid = I1_WUEPS_PID_CSIMA; } else { pstATCSIMAIndMsg->ulReceiverPid = I0_WUEPS_PID_CSIMA; } pstATCSIMAIndMsg->ulMsgId = AT_CSIMA_RESET_IND_MSG; pstATCSIMAIndMsg->enVIAModemStatus = (CBP_MODEM_RESET_STATUS_ENUM_UINT32)ulModemStatus; /* 调用VOS发送原语 */ return PS_SEND_MSG(WUEPS_PID_AT, pstATCSIMAIndMsg); }
VOS_UINT32 SI_STK_SendReqMsg( MN_CLIENT_ID_T ClientId, MN_OPERATION_ID_T OpId, VOS_UINT32 MsgName, VOS_UINT32 CmdType, VOS_UINT32 DataLen, VOS_UINT8 *pData) { SI_STK_REQ_STRU *pstSTKReq; VOS_UINT32 ulSendPid; VOS_UINT32 ulReceiverPid; #if (OSA_CPU_ACPU == VOS_OSA_CPU) #if ( FEATURE_MULTI_MODEM == FEATURE_ON ) MODEM_ID_ENUM_UINT16 enModemID; #endif /*( FEATURE_MULTI_MODEM == FEATURE_ON )*/ ulSendPid = WUEPS_PID_AT; #if ( FEATURE_MULTI_MODEM == FEATURE_ON ) /* 调用接口获取Modem ID */ if(VOS_OK != AT_GetModemIdFromClient(ClientId,&enModemID)) { STK_ERROR_LOG("SI_STK_SendReqMsg: AT_GetModemIdFromClient Return Error"); return VOS_ERR; } if(MODEM_ID_1 == enModemID) { ulReceiverPid = I1_MAPS_STK_PID; } #if (MULTI_MODEM_NUMBER == 3) else if(MODEM_ID_2 == enModemID) { ulReceiverPid = I2_MAPS_STK_PID; } #endif else { ulReceiverPid = I0_MAPS_STK_PID; } #else ulReceiverPid = MAPS_STK_PID; #endif /*( FEATURE_MULTI_MODEM == FEATURE_ON )*/ #else /*CCPU STK->STK*/ ulSendPid = MAPS_STK_PID; ulReceiverPid = MAPS_STK_PID; #endif /* (OSA_CPU_ACPU == VOS_OSA_CPU) */ pstSTKReq = (SI_STK_REQ_STRU *)VOS_AllocMsg(ulSendPid, sizeof(SI_STK_REQ_STRU)-VOS_MSG_HEAD_LENGTH+DataLen); if(VOS_NULL_PTR == pstSTKReq) { STK_ERROR_LOG("SI_STK_SendReqMsg: VOS_AllocMsg Return Error"); return VOS_ERR; } pstSTKReq->MsgName = MsgName; pstSTKReq->ulReceiverPid = ulReceiverPid; pstSTKReq->OpId = OpId; pstSTKReq->ClientId = ClientId; pstSTKReq->SatType = CmdType; pstSTKReq->Datalen = DataLen; if(DataLen != 0) { /*lint -e534*/ VOS_MemCpy(pstSTKReq->Data, pData, DataLen); /*lint +e534*/ } if(VOS_OK != VOS_SendMsg(ulSendPid, pstSTKReq)) { return VOS_ERR; } return VOS_OK; }