コード例 #1
0
/*****************************************************************************
 Function Name  : NAS_LMM_DecodeSimImsi
 Discription    : 解码IMSI
 Input          : pstNvCtrlTbl:公共处理结构
 Output         : 解码后的数据
 Return         :
 History:
*****************************************************************************/
VOS_UINT32  NAS_LMM_DecodeSimImsi(const NAS_NVIM_CTRL_TBL *pstNvCtrlTbl)
{
    VOS_UINT8                           *pucImsi;
    NAS_EMM_UEID_STRU                   *pstUeId;

    pstUeId = (VOS_VOID *)NAS_EMM_GetEmmGlobleAddr(NAS_LMM_GLOBLE_PAEA_UEID);

    pucImsi = (VOS_VOID *)NAS_EMM_GetEmmGlobleAddr(NAS_LMM_GLOBLE_PAEA_IMSI);

    if((NAS_NVIM_NULL_PTR == pstUeId) || (NAS_NVIM_NULL_PTR == pucImsi))
    {
        /* 打印查询的 类型 */
        NAS_LMM_NVIM_LOG_ERR("NAS_LMM_DecodeSimImsi: Point is Null");
        return NAS_LMM_NVIM_FAIL;
    }

    if (NAS_LMM_NVIM_IMSI_FILE_LEN != pstNvCtrlTbl->usNvDataLen)
    {
        NAS_LMM_NVIM_LOG_ERR("NAS_LMM_DecodeSimImsi: USIM IMSI LENGTH ERR");

        return NAS_LMM_NVIM_FAIL;
    }

    pstUeId->bitOpImsi                  = NAS_NVIM_BIT_SLCT;

    NAS_LMM_MEM_CPY(                     pucImsi,
                                        pstNvCtrlTbl->pNvData,
                                        NAS_LMM_NVIM_IMSI_FILE_LEN);
/*PC REPLAY MODIFY BY LEILI DELETE*/

    NAS_LMM_NVIM_LOG_INFO("NAS_LMM_DecodeSimImsi: IMSI IS ");
    NAS_COMM_PrintArray(NAS_COMM_GET_MM_PRINT_BUF(),pucImsi,NAS_LMM_NVIM_IMSI_FILE_LEN);

    return  NAS_LMM_NVIM_OK;
}
コード例 #2
0
VOS_UINT32  NAS_LMM_DecodeSimMncLen(NAS_NVIM_CTRL_TBL *pstNvCtrlTbl)
{
    VOS_UINT32                          *pstImsiMncLen;
    VOS_UINT8                           *pUsimData;
    VOS_UINT32                           ulMncLen = 0;

    pstImsiMncLen = (VOS_VOID *)NAS_EMM_GetEmmGlobleAddr(NAS_LMM_GLOBLE_PARA_MNC_LEN);
    pUsimData     = (VOS_UINT8*)pstNvCtrlTbl->pNvData;

    /* 31.102,4.2.18章节,SIM卡文件长度不小于3,携带MNC需要不小于4 */
    if (NAS_LMM_NVIM_MNCLEN_FILE_MIN_LEN > pstNvCtrlTbl->usNvDataLen)
    {
        NAS_LMM_NVIM_LOG_ERR("NAS_LMM_DecodeMncLen: Sim Mnc file Length ERR");
        return NAS_LMM_NVIM_FAIL;
    }

    /* 取出相应位置的低4bit */
    ulMncLen = pUsimData[NAS_LMM_NVIM_MNC_LENGTH_POSITION-1] & NAS_LMM_NVIM_LOW_4_BIT_1;

    /* 协议规定MNC的有效长度只能是2或3 */
    if (( NAS_LMM_NVIM_MNCLEN_VALUE_2 == ulMncLen ) || ( NAS_LMM_NVIM_MNCLEN_VALUE_3 == ulMncLen))
    {
        *pstImsiMncLen = ulMncLen;
    }
    else
    {
        /* 赵学理说GU NAS默认值为3,需要跟GU NAS保持一致 */
        NAS_LMM_NVIM_LOG_ERR("NAS_LMM_DecodeMncLen: Mnc Length ERR, set len=3");
        *pstImsiMncLen = NAS_LMM_NVIM_MNCLEN_VALUE_3;
    }

    return  NAS_LMM_NVIM_OK;
}