VOS_VOID MTC_SndRcmModemStateInd(VOS_VOID) { MTC_RCM_MODEM_STATE_NOTIFY_STRU *pstModemState; MODEM_ID_ENUM_UINT16 enModemId; /* 申请消息包 */ pstModemState = (MTC_RCM_MODEM_STATE_NOTIFY_STRU *)MTC_ALLOC_MSG_WITH_HDR(sizeof(MTC_RCM_MODEM_STATE_NOTIFY_STRU)); if (VOS_NULL_PTR == pstModemState) { MTC_ERROR_LOG("MTC_SndRcmModemStateInd: Alloc Msg Fail!"); return; } PS_MEM_SET(((VOS_UINT8*)pstModemState) + VOS_MSG_HEAD_LENGTH, 0, sizeof(MTC_RCM_MODEM_STATE_NOTIFY_STRU) - VOS_MSG_HEAD_LENGTH); /* 填充消息头 */ MTC_CFG_RCM_MSG_HDR(&pstModemState->stMsgHeader, ID_MTC_RCM_MODEM_STATUS_NOTIFY); /* 填写modem0和modem1的状态信息 */ for (enModemId = 0; enModemId < MODEM_ID_BUTT ; enModemId++) { pstModemState->astModemState[enModemId].enCsSrvConnState = MTC_GetCsConnStateInfo(enModemId); pstModemState->astModemState[enModemId].enPsSrvConnState = MTC_GetRcmPsConnStateInfo(enModemId); pstModemState->astModemState[enModemId].enModemPowerState = MTC_GetModemPowerState(enModemId); pstModemState->astModemState[enModemId].enUsimmCardState = MTC_GetUsimmStateInfo(enModemId); pstModemState->astModemState[enModemId].enModemType = MTC_RCM_MODEM_0 + enModemId; } /* 填写CDMA状态信息 */ pstModemState->astModemState[MTC_RCM_MODEM_CDMA].enCsSrvConnState = MTC_GetOutSideCsConnStateInfo(MTC_OUTSIDE_MODEM_CDMA); pstModemState->astModemState[MTC_RCM_MODEM_CDMA].enPsSrvConnState = MTC_GetOutSidePsConnStateInfo(MTC_OUTSIDE_MODEM_CDMA); pstModemState->astModemState[MTC_RCM_MODEM_CDMA].enModemPowerState = MTC_GetOutSideModemPowerState(MTC_OUTSIDE_MODEM_CDMA); pstModemState->astModemState[MTC_RCM_MODEM_CDMA].enUsimmCardState = MTC_GetOutSideModemUsimmState(MTC_OUTSIDE_MODEM_CDMA); pstModemState->astModemState[MTC_RCM_MODEM_CDMA].enModemType = MTC_RCM_MODEM_CDMA; /* 发送消息 */ MTC_SEND_MSG(pstModemState); return; }
PS_BOOL_ENUM_UINT8 MTC_ProcB39B32IntrusionStrategy(VOS_VOID) { RRC_MTC_MS_BAND_INFO_STRU *pstSerCellBandInfo = VOS_NULL_PTR; VOS_UINT32 ulB39Ret; MTC_MODEM_POWER_STATE_ENUM_UINT8 enModem1PowerState; TAF_MTC_SRV_CONN_STATE_ENUM_UINT8 enModem0PsState; TAF_MTC_SRV_CONN_STATE_ENUM_UINT8 enModem1PsState; TAF_MTC_SRV_CONN_STATE_ENUM_UINT8 enModem1CsState; TAF_MTC_SRV_CONN_STATE_ENUM_UINT8 enModem0CsState; /* 初始化 */ enModem0PsState = TAF_MTC_SRV_CONN_STATE_BUTT; enModem0CsState = TAF_MTC_SRV_CONN_STATE_BUTT; enModem1PsState = TAF_MTC_SRV_CONN_STATE_BUTT; enModem1CsState = TAF_MTC_SRV_CONN_STATE_BUTT; ulB39Ret = PS_FALSE; enModem1PowerState = MTC_MODEM_POWER_STATE_BUTT; /* 判断modem1是否开机 */ enModem1PowerState = MTC_GetModemPowerState(MODEM_ID_1); if (MTC_MODEM_POWER_OFF == enModem1PowerState) { /* 打孔方案不生效 */ return PS_FALSE; } /* 判断主卡是否存在B39 */ pstSerCellBandInfo = MTC_GetModemSerCellBandInfo(MODEM_ID_0); ulB39Ret = MTC_BAND_CHECK64(*((VOS_UINT64 *)&(pstSerCellBandInfo->aulBandInfo[0])), MTC_BAND_MASK_B39); if (VOS_FALSE == ulB39Ret) { /* 打孔方案不生效 */ return PS_FALSE; } /* 判断主副卡的业务状态 */ enModem0PsState = MTC_GetPsConnStateInfo(MODEM_ID_0); enModem0CsState = MTC_GetCsConnStateInfo(MODEM_ID_0); enModem1PsState = MTC_GetPsConnStateInfo(MODEM_ID_1); enModem1CsState = MTC_GetCsConnStateInfo(MODEM_ID_1); /* 主卡存在CS,则打孔方案不生效 */ if (TAF_MTC_SRV_EXIST == enModem0CsState) { return PS_FALSE; } /* 副卡CS, 则打孔方案生效 */ if (TAF_MTC_SRV_EXIST == enModem1CsState) { return PS_TRUE; } /* 主卡PS,副卡IDLE, 则打孔方案生效 */ if ( (TAF_MTC_SRV_EXIST == enModem0PsState) && ( (TAF_MTC_SRV_EXIST != enModem1CsState) && (TAF_MTC_SRV_EXIST != enModem1PsState) ) ) { return PS_TRUE; } /* 其它情况打孔方案不生效 */ return PS_FALSE; }