现在的位置: 首页 > 综合 > 正文

基站定位(2)

2013年08月10日 ⁄ 综合 ⁄ 共 1769字 ⁄ 字号 评论关闭

09A 获取小区cell_id  

 

MTK更新平台10A做了好多变化,苦逼了程序员,很多地方又要重新学,不过有好有坏,一些接口什么的提供了更多更具体更简单了,包括和今天写的有关的获取sim卡相关内容的接口。

        10A直接提供获取包括cell_id(小区ID),IMEI,IMSI在内的接口,但是在09A上获取这些东西稍显麻烦了,要自己发送消息到L4C获取。新近做了个功能要获取cell_id,过程比较复杂,来之不易,记录下。

void get_cell_id_rsq(void *info)
{
 mmi_em_status_ind_struct *msg = (mmi_em_status_ind_struct*) info;
 
 ClearProtocolEventHandler(MSG_ID_MMI_EM_UPDATE_RSP);
 ClearProtocolEventHandler(MSG_ID_MMI_EM_STATUS_IND);
 #ifdef __MMI_DUAL_SIM_MASTER__
 ClearSlaveProtocolEventHandler(MSG_ID_MMI_EM_UPDATE_RSP);
 ClearSlaveProtocolEventHandler(MSG_ID_MMI_EM_STATUS_IND);
 #endif

 if (msg->em_info == RR_EM_LAI_INFO)
 {
  rr_em_lai_info_struct *data_ptr;
  kal_uint16 mm_pdu_len;
  data_ptr = (rr_em_lai_info_struct*) get_pdu_ptr(msg->info, &mm_pdu_len);
  
  //cell_id
  sprintf(cell_id, "%d", data_ptr->cell_id);
  
  //sys_print(0, "data_ptr->cell_id = %d", data_ptr->cell_id);
  //sys_print(0, "cell_id111 = %s", fspice_cell_id);
 }

 free_peer_buff(msg->info);
}

void get_cell_id_req(void)
{
 S32 i;
 MYQUEUE Message;
 mmi_em_update_req_struct *update_req;
 
 Message.oslMsgId = MSG_ID_MMI_EM_UPDATE_REQ;
 update_req = OslConstructDataPtr(sizeof(mmi_em_update_req_struct));

 for(i = 0; i < EM_INFO_REQ_NUM; i++)
 {
 update_req->info_request[i] = EM_NC;
 }
 
 update_req->info_request[RR_EM_LAI_INFO] = EM_ON;     ////获取之后还需要在退出的地方重新发一次消息设为EM_OFF,否则会一直获取
 Message.oslDataPtr = (oslParaType*) update_req;
 Message.oslPeerBuffPtr = NULL;
 Message.oslSrcId = MOD_MMI;

#ifdef __MMI_DUAL_SIM_MASTER__
 if (fspice_get_active_sim() == 2) // 仅卡2有效
 {
  Message.oslDestId = MOD_L4C_2;    //这个卡1和卡2是不同的
  OslMsgSendExtQueue(&Message);
  SetSlaveProtocolEventHandler(get_cell_id_rsq, MSG_ID_MMI_EM_STATUS_IND);  //slave  //这个卡1和卡2是不同的
 }
 else
#endif
 {
  Message.oslDestId = MOD_L4C;
  OslMsgSendExtQueue(&Message);
  SetProtocolEventHandler(get_cell_id_rsq, MSG_ID_MMI_EM_STATUS_IND);
 }
}

抱歉!评论已关闭.