6225平台,想要获取到基站信息,Cell_ID和LAI
在工程模式的Network Setting->Network Info下面设置好后,
就可以输出了
<MCC>:460 <MNC>:00F <LAC>:80 184
<CELL_ID>:3424
想把它写成一个接口,调用它就可以返回信息。
--------------------------------------------------------------------
在EngineerModeTracer.c 找到工程模式的源码
//结构体
typedef struct
{
} mmi_rr_em_lai_info_t;
//打印函数
kal_uint8 mmi_em_rr_lai_info_logs(kal_uint8 screen_num, mmi_rr_em_lai_info_t *rr_em_lai_info)
{....}
发现里面的函数,只起到一个打印的作用.沿着输出函数一路向上找,
->mmi_em_parsing_data(void *info){...}
->SetProtocolEventHandler(mmi_em_parsing_data, MSG_ID_MMI_EM_STATUS_IND);
基站信息就是在mmi_em_parsing_data的info指针里面传过来的啊
用 mmi_rr_em_lai_info_t 强转一下就应该可以解析了
///
MOD_AS改成MOD_AS_2
{
#ifdef __MTK_TARGET__
MYQUEUE Message = {0};
mmi_em_start_req_struct *em_start_req;
g_cell_info_funcb = fun;
Message.oslMsgId = MSG_ID_MMI_EM_START_REQ;
em_start_req = OslConstructDataPtr(sizeof(mmi_em_start_req_struct));
em_start_req->mod_id = MOD_AS;
em_start_req->info_request = RR_EM_LAI_INFO;
Message.oslDataPtr = (oslParaType *)em_start_req;
Message.oslPeerBuffPtr = NULL;
Message.oslSrcId = MOD_MMI;
if (g_pwr_context.CurrentServiceType == FULL_SERVICE)
{
Message.oslDestId = MOD_L4C;
DW_TRACE_INFO("---------EmStatusHandleRsp SIM1");
}
#ifdef __MMI_DUAL_SIM_MASTER__
else if (g_pwr_context_2.CurrentServiceType == FULL_SERVICE)
{
Message.oslDestId = MOD_L4C_2;
DW_TRACE_INFO("---------EmStatusHandleRsp SIM2");
}
#endif
ClearProtocolEventHandler(MSG_ID_EM_START_RSP);
SetProtocolEventHandler(dw_sys_cell_status_ind, MSG_ID_MMI_EM_STATUS_IND);
OslMsgSendExtQueue(&Message);
#else
fun(460,0,10145,3782);
#endif
}
在MTK平台,我希望取得基站信息,但是目前是卡1取得到,卡2却取不到(全是0),是什么原因,要怎么做呢?
代码如上。我现在知道是MOD_MMI和MOD_L4C/MOD_L4C_2通讯,但最终是通过MOD_AS这个模块去取的,那么是不是对卡2要改成其它id?
还是有其它方法....