VOS_VOID RRM_ClearRegInfo
(
    VOS_UINT16                          usRegInfoIndex
)
{
    RRM_REG_INFO_STRU                  *pstRegInfoAddr = VOS_NULL_PTR;


    pstRegInfoAddr = RRM_GetRegInfoAddr(usRegInfoIndex);
    if (VOS_NULL_PTR == pstRegInfoAddr)
    {
        RRM_WARNING_LOG1(UEPS_PID_RRM, "RRM_ClearRegInfo: pstRegInfoAddr is null.", usRegInfoIndex);
        return;
    }

    if (PS_TRUE == pstRegInfoAddr->enRegisteredFlg)
    {
        /* 清除REG信息 */
        pstRegInfoAddr->enRegisteredFlg     = PS_FALSE;
        pstRegInfoAddr->enRatType           = RRM_PS_RAT_TYPE_BUTT;
        pstRegInfoAddr->enModemId           = MODEM_ID_BUTT;
        pstRegInfoAddr->ulPid               = RRM_PID_DEFAULT_VALUE;
    }


    return;
}
VOS_VOID RRM_ShowInfo(VOS_VOID)
{
    VOS_UINT16                          usIndex;
    RRM_RFID_INFO_STRU                 *pstRFIDInfoAddr         = VOS_NULL_PTR;
    RRM_REG_INFO_STRU                  *pstRegInfoAddr          = VOS_NULL_PTR;
    NV_MODEM_RF_SHARE_CFG_STRU         *pstModemCfgInfoAddr     = VOS_NULL_PTR;


    for (usIndex = 0; usIndex < RRM_RFID_BUTT; usIndex++)
    {
        pstRFIDInfoAddr = RRM_GetRFIDInfoAddr(usIndex);
        if (VOS_NULL_PTR != pstRFIDInfoAddr)
        {
            vos_printf("========RFID info for Index %d ========\n", usIndex);
            vos_printf("RFID使用状态:             %d \n", pstRFIDInfoAddr->enRFIDUsedFlg);
            vos_printf("RFID使用的MODEM:          %d \n", pstRFIDInfoAddr->enUsingModemId);
            vos_printf("RFID使用的值:             %d \n", pstRFIDInfoAddr->usUsingRFIDValue);
        }
    }
    vos_printf("\r\n");

    for (usIndex = 0; usIndex < RRM_REG_MAX_NUMBER; usIndex++)
    {
        pstRegInfoAddr = RRM_GetRegInfoAddr(usIndex);
        if (VOS_NULL_PTR != pstRegInfoAddr)
        {
            vos_printf("========REG info for Index %d ========\n", usIndex);
            vos_printf("REG信息状态:             %d \n", pstRegInfoAddr->enRegisteredFlg);
            vos_printf("REG信息的RAT TYPE:       %d \n", pstRegInfoAddr->enRatType);
            vos_printf("REG信息的MODEM:          %d \n", pstRegInfoAddr->enModemId);
            vos_printf("REG信息的PID:            %d \n", pstRegInfoAddr->ulPid);
        }
    }
    vos_printf("\r\n");

    for (usIndex = 0; usIndex < MODEM_ID_BUTT; usIndex++)
    {
        pstModemCfgInfoAddr = RRM_GetModemCfgInfoAddr(usIndex);
        if (VOS_NULL_PTR != pstModemCfgInfoAddr)
        {
            vos_printf("========MODEM info for Index %d ========\n", usIndex);
            vos_printf("MODEM是否支持该特性:      %d \n", pstModemCfgInfoAddr->usSupportFlag);
            vos_printf("MODEM的GSM RFID值:        %d \n", pstModemCfgInfoAddr->usGSMRFID);
            vos_printf("MODEM的WCDMA RFID值:      %d \n", pstModemCfgInfoAddr->usWCDMARFID);
            vos_printf("MODEM的TDS RFID值:        %d \n", pstModemCfgInfoAddr->usTDSRFID);
            vos_printf("MODEM的LTE RFID值:        %d \n", pstModemCfgInfoAddr->usLTERFID);
            vos_printf("MODEM的CDMA RFID值:       %d \n", pstModemCfgInfoAddr->usCDMARFID);
            vos_printf("MODEM的EVDO RFID值:       %d \n", pstModemCfgInfoAddr->usEVDORFID);
        }
    }
    vos_printf("\r\n");

    return;
}
VOS_UINT32 RRM_JudgeRegInfoIsReged
(
    MODEM_ID_ENUM_UINT16                enModemId,
    VOS_UINT32                          ulPid,
    PS_BOOL_ENUM_UINT8                 *enIsSameModem,
    VOS_UINT16                         *usRegInfoIndex,
    PS_BOOL_ENUM_UINT8                 *enRegInfoIsReged
)
{

    VOS_UINT16                          usIndex;
    RRM_REG_INFO_STRU                  *pstRegInfoAddr = VOS_NULL_PTR;

    /* 初始化 */
    *enIsSameModem      = PS_FALSE;
    *enRegInfoIsReged   = PS_FALSE;

    for (usIndex = 0; usIndex < RRM_REG_MAX_NUMBER; usIndex++)
    {
        pstRegInfoAddr = RRM_GetRegInfoAddr(usIndex);
        if (VOS_NULL_PTR != pstRegInfoAddr)
        {
            /* 当前REG INFO是否已注册判断 */
            if (PS_TRUE == pstRegInfoAddr->enRegisteredFlg)
            {
                /* PID的值是否相同判断 */
                if (ulPid == pstRegInfoAddr->ulPid)
                {
                      /* 记录索引号 */
                    *usRegInfoIndex     = usIndex;

                    /* 设置使用标识 */
                    *enRegInfoIsReged   = PS_TRUE;

                    /* 同一个MODEM判断 */
                    if (enModemId == pstRegInfoAddr->enModemId)
                    {
                        *enIsSameModem = PS_TRUE;
                    }

                    return VOS_OK;
                }
            }
        }
    }


    return VOS_OK;
}
Beispiel #4
0
VOS_VOID RRM_RcvTimeOutProc(RRM_RFID_ENUM_UINT16  enRFIDIndex)
{
    VOS_UINT16                          usIndex;
    VOS_UINT32                          ulRecievePid;
    RRM_REG_INFO_STRU                  *pstRegInfoAddr      = VOS_NULL_PTR;
    RRM_RFID_TIMER_CTRL_STRU           *pstRFIDTimerAddr    = VOS_NULL_PTR;

     /* 获取该状态定时器控制块地址 */
    pstRFIDTimerAddr       = RRM_GetRFIDTimerAddr(enRFIDIndex);

    /* 无法获取该定时器控制块地址,说明定时器ID非法 */
    if( VOS_NULL_PTR == pstRFIDTimerAddr)
    {
        /* 打印错误信息 */
        RRM_ERROR_LOG1(UEPS_PID_RRM, "TimerId is Error!", (VOS_INT32)enRFIDIndex);
        return;
    }

    /* 防止其他分支停止定时器后,缓存的超时处理的消息又收到的场景 */
    if (RRM_RFID_BUTT == pstRFIDTimerAddr->enRFIDTimerId)
    {
        /* 打印错误信息 */
        RRM_WARNING_LOG1(UEPS_PID_RRM, "Timer is already stop!", (VOS_INT32)enRFIDIndex);
        return;
    }

    /* 清除RF资源信息 */
    RRM_ClearRFIDUsedInfo(enRFIDIndex);

    /* 注册信息处理 */
    for (usIndex = 0; usIndex < RRM_REG_MAX_NUMBER; usIndex++)
    {
        pstRegInfoAddr = RRM_GetRegInfoAddr(usIndex);
        if (VOS_NULL_PTR != pstRegInfoAddr)
        {
            if (PS_TRUE == pstRegInfoAddr->enRegisteredFlg)
            {
                ulRecievePid   = pstRegInfoAddr->ulPid;

                /* 向已注册的协议栈任务发送通知 */
                RRM_SndPSStatusInd(ulRecievePid);
            }
        }
    }

}
VOS_VOID RRM_InitRegInfo(VOS_VOID)
{
    VOS_UINT16                          usIndex;
    RRM_REG_INFO_STRU                  *pstRegInfoAddr = VOS_NULL_PTR;


    for (usIndex = 0; usIndex < RRM_REG_MAX_NUMBER; usIndex++)
    {
        pstRegInfoAddr = RRM_GetRegInfoAddr(usIndex);
        if (VOS_NULL_PTR != pstRegInfoAddr)
        {
            /* 初始化REG信息 */
            pstRegInfoAddr->enRegisteredFlg     = PS_FALSE;
            pstRegInfoAddr->enRatType           = RRM_PS_RAT_TYPE_BUTT;
            pstRegInfoAddr->enModemId           = MODEM_ID_BUTT;
            pstRegInfoAddr->ulPid               = RRM_PID_DEFAULT_VALUE;
        }
    }

    return;
}
VOS_VOID RRM_SetRegInfo
(
    PS_BOOL_ENUM_UINT8                  enRegisteredFlg,
    RRM_PS_RAT_TYPE_ENUM_UINT8          enRatType,
    MODEM_ID_ENUM_UINT16                enModemId,
    VOS_UINT32                          ulPid
)
{
    VOS_UINT16                          usIndex;
    RRM_REG_INFO_STRU                  *pstRegInfoAddr = VOS_NULL_PTR;


    for (usIndex = 0; usIndex < RRM_REG_MAX_NUMBER; usIndex++)
    {
        pstRegInfoAddr = RRM_GetRegInfoAddr(usIndex);
        if (VOS_NULL_PTR != pstRegInfoAddr)
        {
            if (PS_FALSE == pstRegInfoAddr->enRegisteredFlg)
            {
                /* 设置REG信息 */
                pstRegInfoAddr->enRegisteredFlg     = enRegisteredFlg;
                pstRegInfoAddr->enRatType           = enRatType;
                pstRegInfoAddr->enModemId           = enModemId;
                pstRegInfoAddr->ulPid               = ulPid;

                break;
            }
        }
    }

    if (RRM_REG_MAX_NUMBER == usIndex)
    {
        RRM_WARNING_LOG4(UEPS_PID_RRM, "Reg Info has been full.",
            enRegisteredFlg, enRatType, enModemId, ulPid);
    }


    return;
}