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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}