📄 em.c
字号:
case EM_IN_NC_FN_OFFSET_2:
case EM_IN_NC_TA_OFFSET_2:
case EM_IN_NC_LAC_2:
case EM_IN_NC_BA_2:
case EM_IN_NC_BQ_2:
case EM_IN_NC_TIL_STATE_2:
cell_id = 1;
break;
case EM_IN_NC_BCCH_3:
case EM_IN_NC_RX_3:
case EM_IN_NC_C1_3:
case EM_IN_NC_C2_3:
case EM_IN_NC_BSIC_3:
case EM_IN_NC_CID_3:
case EM_IN_NC_FN_OFFSET_3:
case EM_IN_NC_TA_OFFSET_3:
case EM_IN_NC_LAC_3:
case EM_IN_NC_BA_3:
case EM_IN_NC_BQ_3:
case EM_IN_NC_TIL_STATE_3:
cell_id = 2;
break;
case EM_IN_NC_BCCH_4:
case EM_IN_NC_RX_4:
case EM_IN_NC_C1_4:
case EM_IN_NC_C2_4:
case EM_IN_NC_BSIC_4:
case EM_IN_NC_CID_4:
case EM_IN_NC_FN_OFFSET_4:
case EM_IN_NC_TA_OFFSET_4:
case EM_IN_NC_LAC_4:
case EM_IN_NC_BA_4:
case EM_IN_NC_BQ_4:
case EM_IN_NC_TIL_STATE_4:
cell_id = 3;
break;
case EM_IN_NC_BCCH_5:
case EM_IN_NC_RX_5:
case EM_IN_NC_C1_5:
case EM_IN_NC_C2_5:
case EM_IN_NC_BSIC_5:
case EM_IN_NC_CID_5:
case EM_IN_NC_FN_OFFSET_5:
case EM_IN_NC_TA_OFFSET_5:
case EM_IN_NC_LAC_5:
case EM_IN_NC_BA_5:
case EM_IN_NC_BQ_5:
case EM_IN_NC_TIL_STATE_5:
cell_id = 4;
break;
case EM_IN_NC_BCCH_6:
case EM_IN_NC_RX_6:
case EM_IN_NC_C1_6:
case EM_IN_NC_C2_6:
case EM_IN_NC_BSIC_6:
case EM_IN_NC_CID_6:
case EM_IN_NC_FN_OFFSET_6:
case EM_IN_NC_TA_OFFSET_6:
case EM_IN_NC_LAC_6:
case EM_IN_NC_BA_6:
case EM_IN_NC_BQ_6:
case EM_IN_NC_TIL_STATE_6:
cell_id = 5;
break;
case EM_IN_NC_TIL_SYNC_CNT:
case EM_IN_NC_TIL_BCCH_CNT:
cell_id = 6; // Serving cell
break;
default:
return EM_DATA_NOT_AVAIL;
}
ret = em_get_nc_data (&em_nc_data, cell_id); // ncell data
switch (em_type)
{
case EM_IN_NC_BCCH_1:
case EM_IN_NC_BCCH_2:
case EM_IN_NC_BCCH_3:
case EM_IN_NC_BCCH_4:
case EM_IN_NC_BCCH_5:
case EM_IN_NC_BCCH_6:
if (ret NEQ 0)
{
sprintf ((char *)out_em_data->em_parameter,"%3x",em_nc_data.arfcn);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
else
return EM_DATA_NOT_AVAIL;
break;
case EM_IN_NC_RX_1:
case EM_IN_NC_RX_2:
case EM_IN_NC_RX_3:
case EM_IN_NC_RX_4:
case EM_IN_NC_RX_5:
case EM_IN_NC_RX_6:
if (ret NEQ 0)
{
sprintf ((char *)out_em_data->em_parameter,"%3d",em_nc_data.rxlev);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
else
return EM_DATA_NOT_AVAIL;
break;
case EM_IN_NC_BSIC_1:
case EM_IN_NC_BSIC_2:
case EM_IN_NC_BSIC_3:
case EM_IN_NC_BSIC_4:
case EM_IN_NC_BSIC_5:
case EM_IN_NC_BSIC_6:
if (ret NEQ 0)
{
sprintf ((char *)out_em_data->em_parameter,"%3x",em_nc_data.bsic);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
else
return EM_DATA_NOT_AVAIL;
break;
case EM_IN_NC_C1_1:
case EM_IN_NC_C1_2:
case EM_IN_NC_C1_3:
case EM_IN_NC_C1_4:
case EM_IN_NC_C1_5:
case EM_IN_NC_C1_6:
if (ret EQ 1)
{
sprintf ((char *)out_em_data->em_parameter,"%3d",em_nc_data.c1);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
else
return EM_DATA_NOT_AVAIL;
break;
case EM_IN_NC_C2_1:
case EM_IN_NC_C2_2:
case EM_IN_NC_C2_3:
case EM_IN_NC_C2_4:
case EM_IN_NC_C2_5:
case EM_IN_NC_C2_6:
if (ret EQ 1)
{
sprintf ((char *)out_em_data->em_parameter,"%3d",em_nc_data.c2);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
else
return EM_DATA_NOT_AVAIL;
break;
case EM_IN_NC_LAC_1:
case EM_IN_NC_LAC_2:
case EM_IN_NC_LAC_3:
case EM_IN_NC_LAC_4:
case EM_IN_NC_LAC_5:
case EM_IN_NC_LAC_6:
if (ret EQ 1)
{
sprintf ((char *)out_em_data->em_parameter,"%3x",em_nc_data.lac);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
else
return EM_DATA_NOT_AVAIL;
break;
case EM_IN_NC_BA_1:
case EM_IN_NC_BA_2:
case EM_IN_NC_BA_3:
case EM_IN_NC_BA_4:
case EM_IN_NC_BA_5:
case EM_IN_NC_BA_6:
if (ret EQ 1)
{
sprintf ((char *)out_em_data->em_parameter,"%3x",em_nc_data.cba);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
else
return EM_DATA_NOT_AVAIL;
break;
case EM_IN_NC_BQ_1:
case EM_IN_NC_BQ_2:
case EM_IN_NC_BQ_3:
case EM_IN_NC_BQ_4:
case EM_IN_NC_BQ_5:
case EM_IN_NC_BQ_6:
if (ret EQ 1)
{
sprintf ((char *)out_em_data->em_parameter,"%3x",em_nc_data.cbq);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
else
return EM_DATA_NOT_AVAIL;
break;
case EM_IN_NC_TIL_STATE_1:
case EM_IN_NC_TIL_STATE_2:
case EM_IN_NC_TIL_STATE_3:
case EM_IN_NC_TIL_STATE_4:
case EM_IN_NC_TIL_STATE_5:
case EM_IN_NC_TIL_STATE_6:
#if !defined(FF_GTI)
if (ret NEQ 0)
{
sprintf ((char *)out_em_data->em_parameter,"%3d",em_nc_data.til_state);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
else
#endif /* !FF_GTI */
return EM_DATA_NOT_AVAIL;
break;
case EM_IN_NC_TIL_SYNC_CNT:
#if !defined(FF_GTI)
if ( (ret EQ 1) && (em_nc_data.sync_cnt NEQ 0xFF) )
{
sprintf ((char *)out_em_data->em_parameter,"%3d",em_nc_data.sync_cnt);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
else
#endif /* !FF_GTI */
return EM_DATA_NOT_AVAIL;
break;
case EM_IN_NC_TIL_BCCH_CNT:
#if !defined(FF_GTI)
if ( (ret EQ 1) && (em_nc_data.bcch_cnt NEQ 0xFF) )
{
sprintf ((char *)out_em_data->em_parameter,"%3d",em_nc_data.bcch_cnt);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
else
#endif /* !FF_GTI */
return EM_DATA_NOT_AVAIL;
break;
default:
return EM_INVALID_TYPE;
break;
}
}
LOCAL UBYTE em_check_em_subclass_lup_and_pag (UBYTE em_type,
em_data_type * out_em_data)
{
UBYTE * sys_info_3 = NULL;
out_em_data->em_class = EM_CLASS_INFRA_DATA;
out_em_data->em_subclass = EM_SUBCLASS_LUP_AND_PAG;
out_em_data->em_type = em_type;
#if defined(FF_GTI)
sys_info_3 = em_get_sysinfo_type3 (); // sys info 3
#else
sys_info_3 = em_get_sys_info (0x1B); // sys info 3
#endif /* FF_GTI */
switch (em_type)
{
case EM_IN_LP_BS_PA_MFRMS:
if (sys_info_3 EQ NULL)
return EM_DATA_NOT_AVAIL;
else
{
sprintf ((char *)out_em_data->em_parameter,"%d",(sys_info_3[10]&7)+2);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
case EM_IN_LP_T3212:
if (sys_info_3 EQ NULL)
return EM_DATA_NOT_AVAIL;
else
{
sprintf ((char *)out_em_data->em_parameter,"%d",sys_info_3[11]);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
case EM_IN_LP_MCC:
if (sys_info_3 EQ NULL)
return EM_DATA_NOT_AVAIL;
else
{
USHORT mcc;
mcc = (sys_info_3[4] & 0x0F)*100 +
((sys_info_3[4] & 0xF0)>>4)*10 +
(sys_info_3[5] & 0x0F);
sprintf ((char *)out_em_data->em_parameter,"%d",mcc);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
case EM_IN_LP_MNC:
if (sys_info_3 EQ NULL)
return EM_DATA_NOT_AVAIL;
else
{
USHORT mnc;
mnc = (sys_info_3[6] & 0x0F)*10 +
((sys_info_3[6] & 0xF0)>>4);
sprintf ((char *)out_em_data->em_parameter,"%d",mnc);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
return DRV_OK;
}
case EM_IN_LP_LAC:
case EM_IN_LP_LAC_RAW:
if (sys_info_3 EQ NULL)
return EM_DATA_NOT_AVAIL;
else
{
USHORT lac;
lac = (sys_info_3[7] << 8) +
sys_info_3[8];
if (em_type EQ EM_IN_LP_LAC)
{
sprintf ((char *)out_em_data->em_parameter,"%d",lac);
out_em_data->em_length = strlen ((char *)out_em_data->em_parameter);
}
else
{
out_em_data->em_parameter[0] = sys_info_3[7];
out_em_data->em_parameter[1] = sys_info_3[8];
out_em_data->em_length = 2;
}
return DRV_OK;
}
case EM_IN_LP_CI_RAW:
if (sys_info_3 EQ NULL)
return EM_DATA_NOT_AVAIL;
else
{
out_em_data->em_parameter[0] = sys_info_3[2];
out_em_data->em_parameter[1] = sys_info_3[3];
out_em_data->em_length = 2;
}
return DRV_OK;
default:
return EM_INVALID_TYPE;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -