VOS_VOID TAF_MMA_InitTimerLen(VOS_VOID) { aStaTimerLen[STA_TIMER_NULL] = STA_TIMER_NULL_LEN; aStaTimerLen[STA_TIMER_ATTACH_CS] = STA_TIMER_ATTACH_CS_LEN; aStaTimerLen[STA_TIMER_DETACH_CS] = STA_TIMER_DETACH_CS_LEN; aStaTimerLen[STA_TIMER_ATTACH_PS] = STA_TIMER_ATTACH_PS_LEN; aStaTimerLen[STA_TIMER_DETACH_PS] = STA_TIMER_DETACH_PS_LEN; aStaTimerLen[STA_TIMER_PLMN_RESEL] = STA_TIMER_PLMN_RESEL_LEN; aStaTimerLen[STA_TIMER_PLMN_SEL] = STA_TIMER_PLMN_SEL_LEN; aStaTimerLen[STA_TIMER_SYSCFG_SET] = STA_TIMER_SYSCFG_SET_LEN; aStaTimerLen[STA_TIMER_SERVICE_IND] = STA_TIMER_SERVICE_IND_LEN; aStaTimerLen[STA_TIMER_SPEC_PLMN_ABORT] = STA_TIMER_SPEC_PLMN_ABORT_LEN; #if(FEATURE_ON == FEATURE_LTE) /* 平台支持LTE */ if (VOS_TRUE == TAF_SDC_IsPlatformSupportLte()) { /* 对全局变量 aStaTimerLen 进行赋值,时长考虑L模场景 */ aStaTimerLen[STA_TIMER_PLMN_LIST] = STA_TIMER_GUL_PLMN_LIST_LEN; aStaTimerLen[STA_TIMER_PLMN_LIST_ABORT] = STA_TIMER_GUL_PLMN_LIST_ABORT_LEN; } else #endif { /* 对全局变量 aStaTimerLen 进行赋值 */ aStaTimerLen[STA_TIMER_PLMN_LIST] = STA_TIMER_GU_PLMN_LIST_LEN; aStaTimerLen[STA_TIMER_PLMN_LIST_ABORT] = STA_TIMER_GU_PLMN_LIST_ABORT_LEN; } return; }
VOS_UINT32 TAF_APS_SndL4aIpv6InfoNotifyInd( VOS_UINT8 ucRabId, TAF_PDP_IPV6_RA_INFO_STRU *pstIpv6RaInfo ) { VOS_UINT32 i; APS_L4A_IPV6_INFO_NOTIFY_IND_STRU *pstL4aIpv6InfoNotifyInd; if (VOS_FALSE == TAF_SDC_IsPlatformSupportLte()) { TAF_ERROR_LOG(WUEPS_PID_TAF, "TAF_APS_SndL4aIpv6InfoNotifyInd: Platform don't support LTE."); return VOS_ERR; } /* 构造消息 */ pstL4aIpv6InfoNotifyInd = (APS_L4A_IPV6_INFO_NOTIFY_IND_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN( WUEPS_PID_TAF, sizeof(APS_L4A_IPV6_INFO_NOTIFY_IND_STRU)); if (VOS_NULL_PTR == pstL4aIpv6InfoNotifyInd) { TAF_ERROR_LOG(WUEPS_PID_TAF, "TAF_APS_SndL4aIpv6InfoNotifyInd: Memory alloc failed."); return VOS_ERR; } /* 初始化消息 */ PS_MEM_SET((VOS_CHAR*)pstL4aIpv6InfoNotifyInd + VOS_MSG_HEAD_LENGTH, 0x00, sizeof(APS_L4A_IPV6_INFO_NOTIFY_IND_STRU) - VOS_MSG_HEAD_LENGTH); /* 填写消息头 */ pstL4aIpv6InfoNotifyInd->ulReceiverCpuId = VOS_LOCAL_CPUID; pstL4aIpv6InfoNotifyInd->ulReceiverPid = MSP_L4_L4A_PID; pstL4aIpv6InfoNotifyInd->enMsgId = ID_APS_L4A_IPV6_INFO_NOTIFY_IND; /* 填写消息内容 */ pstL4aIpv6InfoNotifyInd->ucRabId = ucRabId; pstL4aIpv6InfoNotifyInd->ucIpv6PrefixNum = (VOS_UINT8)pstIpv6RaInfo->ulPrefixNum; for (i = 0; i < pstIpv6RaInfo->ulPrefixNum; i++) { pstL4aIpv6InfoNotifyInd->astIpv6PrefixArray[i].ucPrefixLen = pstIpv6RaInfo->astPrefixList[i].ulBitPrefixLen/8; PS_MEM_CPY(pstL4aIpv6InfoNotifyInd->astIpv6PrefixArray[i].aucPrefix, pstIpv6RaInfo->astPrefixList[i].aucPrefix, APS_L4A_MAX_IPV6_ADDR_LEN); } /* 发送消息 */ if (VOS_OK != PS_SEND_MSG(WUEPS_PID_TAF, pstL4aIpv6InfoNotifyInd)) { TAF_ERROR_LOG(WUEPS_PID_TAF, "TAF_APS_SndL4aIpv6InfoNotifyInd: Send message failed."); return VOS_ERR; } return VOS_OK; }
VOS_UINT32 MN_APS_SndEsmPdpInfoInd( APS_PDP_CONTEXT_ENTITY_ST *pstPdpEntity, SM_ESM_PDP_OPTION_ENUM_UINT32 enPdpOption ) { SM_ESM_PDP_CONTEXT_INFO_IND_STRU *pstEsmPdpInfoInd; /* 根据LTE能力执行 */ if (VOS_FALSE == TAF_SDC_IsPlatformSupportLte()) { return VOS_OK; } /* 构造消息 */ pstEsmPdpInfoInd = (SM_ESM_PDP_CONTEXT_INFO_IND_STRU*)PS_ALLOC_MSG_WITH_HEADER_LEN( WUEPS_PID_TAF, sizeof(SM_ESM_PDP_CONTEXT_INFO_IND_STRU)); if (VOS_NULL_PTR == pstEsmPdpInfoInd) { TAF_ERROR_LOG(WUEPS_PID_TAF,"MN_APS_PackEsmPdpOptModify: Memory alloc failed."); return VOS_ERR; } /* 初始化消息 */ PS_MEM_SET((VOS_CHAR*)pstEsmPdpInfoInd + VOS_MSG_HEAD_LENGTH, 0x00, sizeof(SM_ESM_PDP_CONTEXT_INFO_IND_STRU) - VOS_MSG_HEAD_LENGTH); /* 填写消息头 */ pstEsmPdpInfoInd->ulReceiverCpuId = VOS_LOCAL_CPUID; pstEsmPdpInfoInd->ulReceiverPid = PS_PID_ESM; pstEsmPdpInfoInd->ulMsgId = ID_SM_ESM_PDP_CONTEXT_INFO_IND; pstEsmPdpInfoInd->enPdpOption = enPdpOption; /* 填写消息内容 */ MN_APS_FillEsmPdpInfoIndPara(pstEsmPdpInfoInd, pstPdpEntity, enPdpOption); /* 发送消息 */ if (VOS_OK != PS_SEND_MSG(WUEPS_PID_TAF, pstEsmPdpInfoInd)) { TAF_ERROR_LOG(WUEPS_PID_TAF,"MN_APS_PackEsmPdpOptModify: Send message failed."); return VOS_ERR; } return VOS_OK; }
VOS_UINT32 TAF_APS_MatchCallWithAttachBearer( CONST TAF_CTRL_STRU *pstCtrl, CONST TAF_APS_MATCH_PARAM_STRU *pstMatchParam ) { VOS_UINT8 *pucPdpEntApnValue; VOS_UINT8 *pucUsrApnValue; VOS_UINT8 aucApn[APS_MAX_LENGTH_OF_APN]; VOS_UINT8 ucPdpEntApnLen; VOS_UINT8 ucUsrApnLen; VOS_UINT8 ucPdpId; PS_MEM_SET(aucApn, 0x00, APS_MAX_LENGTH_OF_APN); /* 检查当前平台是否支持LTE */ if (VOS_TRUE != TAF_SDC_IsPlatformSupportLte()) { return VOS_FALSE; } /* 检查承载类型是否匹配 */ if (VOS_TRUE != pstMatchParam->ucPrimaryPdpFlg) { return VOS_FALSE; } /* 获取注册承载的实体索引 */ ucPdpId = TAF_APS_GetPdpIdByDefaultCid(); if (TAF_APS_INVALID_PDPID == ucPdpId) { return VOS_FALSE; } /* 检查承载的IP类型是否匹配 */ if (VOS_FALSE == TAF_APS_CheckBearerPdpTypeSuitable( TAF_APS_GetPdpEntPdpAddrType(ucPdpId), pstMatchParam->enPdpType)) { return VOS_FALSE; } /* 检查紧急承载的类型是否匹配 */ if (TAF_APS_GetPdpEntEmcFlg(ucPdpId) != pstMatchParam->enEmergencyInd) { return VOS_FALSE; } /* 检查承载的APN是否匹配 */ if (0 == pstMatchParam->stApn.ucLength) { return VOS_TRUE; } else { /* 拨号参数中的APN转换成网络协议格式 */ Taf_LenStr2Apn(&pstMatchParam->stApn, aucApn); /* 提取网络协议格式APN总长度和内容 */ pucUsrApnValue = &aucApn[1]; ucUsrApnLen = aucApn[0]; /* 用户设置APN, 且APN完全相同, 则拨号信息匹配 */ if (VOS_TRUE == TAF_APS_GetPdpEntApnFlag(ucPdpId)) { pucPdpEntApnValue = TAF_APS_GetPdpEntApnValue(ucPdpId); ucPdpEntApnLen = TAF_APS_GetPdpEntApnLen(ucPdpId); /* 比较APN内容 */ if (VOS_OK == TAF_APS_CompareApn(pucPdpEntApnValue, ucPdpEntApnLen, pucUsrApnValue, ucUsrApnLen)) { return VOS_TRUE; } } } return VOS_FALSE; }