您的位置:首页 > 产品设计 > UI/UE

BREW: UIM record read steps

2013-10-22 15:22 627 查看
pbm_gsdi_init()
    mmgsdi_client_evt_reg(pbm_mmgsdi_client_id,
                                        pbm_mmgsdi_card_status_cb,
                                        pbm_mmgsdi_status_cb,
                                        0);

pbm_mmgsdi_card_status_cb()
    rex_set_sigs(&pbm_tcb, PBM_MMGSDI_WAIT_SIG);

pbm_gsdi_sim_cap_cb()
    pbm_gsdi_resp_q_put(PBM_GSDI_RESPONSE_SIG)

pbm_gsdi_resp_handle()
    case PBM_GSDI_SIM_CAP_CB:
         pbm_sim_cap_cb( )
            pbm_init_fileinfo_internal()

开始文件初始化
pbm_init_fileinfo_internal()

pbm_start_fileinfo_request()

pbm_make_fileinfo_request()
    if(pbm_gsdi_is_service_allowed())                             判断service是否允许
         pbm_gsdi_get_file_attributes(pbm_gsdi_fileinfo_cb)       获取文件属性

pbm_gsdi_fileinfo_cb()
   pbm_gsdi_resp_q_put()                                                      设置信号PBM_GSDI_RESPONSE_SIG

pbm_gsdi_resp_handle()
     case PBM_MMGSDI_FILE_INFO_CB:
         pbm_fileinfo_cb()
              得到最大容量等信息
              pbm_fill_pb_cache_info()
              继续获取UIM卡的其他文件信息

所有文件信息获取完成后,进入:
pbm_fileinfo_complete()
     针对每一个文件进行操作
     。。。。。。
     case PBM_CACHE_TYPE_PB:
          把保存记录的内存空间adn_cache.pb_cache_array先清空,然后重新分配空间。
          设置start=1, circular=FALSE,records_in_use = 0;
          break;
   
    pbm_init_seek_data(sim_id);
    pbm_initialize_index[sim_id] = 0;
    pbm_init_entries(sim_id);

开始read记录
pbm_init_entries( ) 
    pbm_seek_unused_records( )
       pbm_start_record_read( )

pbm_sim_read(sim_id, file_id, record_num, pbm_sim_read_cb);
    pbm_send_read_request(sim_id, file_id, filename, index, buffer_index, pbm_gsdi_async_cb)
         pbm_gsdi_sim_read()
             mmgsdi_read_record()

读取到一个记录后
mmgsdi_handle_queue_sig()

mmgsdi_process_cnf()

pbm_gsdi_async_cb()
    设置信号PBM_GSDI_RESPONSE_SIG

pbm_task()收到此信号
pbm_gsdi_resp_handle()

pbm_gsdi_read_cb()

pbm_gsdi_sim_read_cb()
    pbm_gsdi_process_sim_data()
    pbm_sim_read_cb( )
     pbm_cache_record_add( )                      添加到cache中
        pbm_sim_read()
     读取完毕后,core_ui_notify_pb_uim_ok(),通知core_ui.c,然后通知电话簿AP。
 

ADN,FDN,LDN等每种记录读取完毕后,进入:pbm_init_entries()的最后(while外面)
pbm_sim_init_completed()   

 

 

UIM命令操作时一些函数
uim_send_apdu()

uim_rx_isr()

mmgsdi_uim_icc_read_record()

 mmgsdi_process_response()

mmgsdi_cnf_build_and_queue()

uim_process_generic_response()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: