当前位置: 代码迷 >> 综合 >> MTK to obtain base station information
  详细解决方案

MTK to obtain base station information

热度:46   发布时间:2024-01-19 16:55:15.0
1. First of all should be opened this Marco __NBR_CELL_INFO__ 


2. Write two functions similar to the following
// 


void mmi_Cell_Info_start_req(module_type mod_id)
{
    mmi_frm_set_protocol_event_handler(MSG_ID_L4C_NBR_CELL_INFO_REG_CNF,mmi_Cell_Info_parsing_data,
                 MMI_FALSE);
    mmi_frm_set_protocol_event_handler(MSG_ID_L4C_NBR_CELL_INFO_IND,mmi_Cell_Info_parsing_data,
                 MMI_FALSE);


    mmi_frm_send_ilm(mod_id,MSG_ID_L4C_NBR_CELL_INFO_REG_REQ, NULL, NULL);


return;
}


//
void mmi_Cell_Info_stop_req(module_type mod_id)
{
    mmi_frm_clear_protocol_event_handler(MSG_ID_L4C_NBR_CELL_INFO_IND,
                            (PsIntFuncPtr)mmi_Cell_Info_parsing_data);
    mmi_frm_clear_protocol_event_handler(MSG_ID_L4C_NBR_CELL_INFO_REG_CNF,
                            (PsIntFuncPtr)mmi_Cell_Info_parsing_data);


    mmi_frm_send_ilm(mod_id,MSG_ID_L4C_NBR_CELL_INFO_DEREG_REQ, NULL, NULL);


return;
}


3. Response function
void mmi_Cell_Info_parsing_data(void *info, int mod_src)
{
l4c_nbr_cell_info_ind_struct* cell_info;
int valid_cell;
int i=0;
int j;


MMI_CELLS_ID_INFOR cells_id_infor;
memset(&cells_id_infor,0,sizeof(cells_id_infor));

cell_info = (l4c_nbr_cell_info_ind_struct *)info;




//Service cell information
cells_id_infor.cells[0].mcc=cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.serv_info.gci.mcc;
cells_id_infor.cells[0].mnc=cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.serv_info.gci.mnc;
cells_id_infor.cells[0].lac=cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.serv_info.gci.lac;
cells_id_infor.cells[0].cell_id=cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.serv_info.gci.ci;
cells_id_infor.total++;
cells_id_infor.cell_id_num[0] = 1;


// neighbor cell information : PLMN, Cell ID, LAC, BSIC, Rx Level, Arfcn
if (cell_info->is_nbr_info_valid)
{
   for (j = 0; j < cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_num; j++)
   {
       //g_mmi_nbr_neighbor_cell_info[mod_src-MOD_L4C][j].mcc = cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].gci.mcc;
       //g_mmi_nbr_neighbor_cell_info[mod_src-MOD_L4C][j].mnc = cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].gci.mnc;
       //g_mmi_nbr_neighbor_cell_info[mod_src-MOD_L4C][j].lac = cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].gci.lac;
       //g_mmi_nbr_neighbor_cell_info[mod_src-MOD_L4C][j].cell_id = cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].gci.ci;
       if (cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].nbr_meas_rslt_index>= cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_meas_rslt.nbr_meas_num)
           continue;
//Information of the neighboring cells
{
i++;
cells_id_infor.cells[i].mcc=cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].gci.mcc;
cells_id_infor.cells[i].mnc=cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].gci.mnc;
cells_id_infor.cells[i].lac=cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].gci.lac;
cells_id_infor.cells[i].cell_id=cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].gci.ci;

cells_id_infor.cells[i].rxlev=cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_meas_rslt.nbr_cells[cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].nbr_meas_rslt_index].rxlev;
cells_id_infor.cells[i].arfcn=cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_meas_rslt.nbr_cells[cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].nbr_meas_rslt_index].arfcn;
cells_id_infor.cells[i].bsic=cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_meas_rslt.nbr_cells[cell_info->ps_nbr_cell_info_union.gas_nbr_cell_info.nbr_cell_info[j].nbr_meas_rslt_index].bsic;


cells_id_infor.total++;
cells_id_infor.cell_id_num[i] = i + 1;


}
   }
}


          // Here is the preservation of access to the data, according to their actual situation
//Em_SetCellsIdInfor(&cells_id_infor);


return;

}




4.Method
//enable
mmi_Cell_Info_start_req(MOD_L4C);
//disable
mmi_Cell_Info_stop_req(MOD_L4C);
  相关解决方案