1. 当sim卡状态发生变化时,modem侧发送QCRIL_EVT_UIM_QMI_INDICATION事件到AP侧。
2. AP侧QCRIL的UIM模块(qcril_uim.c等文件)用来处理sim卡相关业务。当收到QCRIL_EVT_UIM_QMI_INDICATION事件时,调用对应的事件处理函数qcril_uim_process_qmi_indication(),检查如果上报的是指示为sim卡状态改变,则再调用qcril_uim_process_status_change_ind()函数,该函数检查sim卡状态是否发生改变,如果是,则保存新状态到qcril_uim.card_status变量中,然后向框架层发送主动上报RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED。
3. 框架层UiccManager模块(UiccManager.java)对该主动上报的对应事件(EVENT_ICC_STATUS_CHANGED)进行了注册,收到该事件后,调用RIL.java函数getIccCardStatus(),下发RIL_REQUEST_GET_SIM_STATUS请求获取sim卡状态。
4. QCRIL的UIM模块收到RIL_REQUEST_GET_SIM_STATUS请求后,调用qcril_uim_request_get_sim_status()函数从qcril_uim.card_status变量中获取sim卡状态,然后传回给框架层。
(未完)