Android 学习之QCRIL QMI

https://blog.csdn.net/happyguys12345/article/details/54406888?utm_source=blogxgwz1

信号值由下往上的流程  
1.modem获取信号值 
Qmi_nas.c (amss\mpss.ta.2.2\modem_proc\mmcp\mmode\qmi\src) qmi_nasi_get_signal_strength  
2.通过qmi给ril 
Qcril_qmi_nas.c (android\vendor\qcom\proprietary\qcril\qcril_qmi) qcril_qmi_nas_signal_strength_con_conv_cache2ril  
3.这里会打一个log,搜索这里的log,便可以得知modem给ril的各个信号值 
qcril_qmi_nas_dump_sign_strength_report 
void qcril_qmi_nas_dump_sign_strength_report(RIL_SignalStrength* ril_signal_strength) { 
    QCRIL_LOG_FUNC_ENTRY();  
    QCRIL_LOG_INFO( "..GW");     QCRIL_LOG_INFO( ".. signalStrength %d, bitErrorRate %d", ril_signal_strength->GW_SignalStrength.signalStrength, 
                                                             ril_signal_strength->GW_SignalStrength.bitErrorRate );  
    QCRIL_LOG_INFO( "..TDSCDMA"); #ifndef QMI_RIL_UTF     QCRIL_LOG_INFO( ".. signalStrength %d", ril_signal_strength->TD_SCDMA_SignalStrength.rscp ); #endif  
    QCRIL_LOG_INFO( "..CDMA");     QCRIL_LOG_INFO( ".. dbm %d, ecio %d ", ril_signal_strength->CDMA_SignalStrength.dbm, 
                                                             ril_signal_strength->CDMA_SignalStrength.ecio );  
    QCRIL_LOG_INFO( "..EVDO");     QCRIL_LOG_INFO( ".. dbm %d, ecio %d, signalNoiseRatio %d", ril_signal_strength->EVDO_SignalStrength.dbm, 
                                                             ril_signal_strength->EVDO_SignalStrength.ecio, 
                                                             ril_signal_strength->EVDO_SignalStrength.signalNoiseRatio );  
    QCRIL_LOG_INFO( "..LTE"); 

    QCRIL_LOG_INFO( ".. signalStrength %d, rsrp %d, rsrq %d, rsnnr %d", 

ril_signal_strength->LTE_SignalStrength.signalStrength, 
                                                              ril_signal_strength->LTE_SignalStrength.rsrp, 
                                                              ril_signal_strength->LTE_SignalStrength.rsrq, 
                                                              ril_signal_strength->LTE_SignalStrength.rssnr );  
    QCRIL_LOG_FUNC_RETURN(); }  
4.往上再给Qcril_qmi_nas的qcril_qmi_nas_request_signal_strength Qcril_qmi_nas.c (android\vendor\qcom\proprietary\qcril\qcril_qmi) qcril_qmi_nas_request_signal_strength  
5.往上,接受ril的RIL_REQUEST_SIGNAL_STRENGTH 请求 
Qcril.c (android\vendor\qcom\proprietary\qcril\qcril_qmi) qcril_event_table 
/* 19 - RIL_REQUEST_SIGNAL_STRENGTH */ { QCRIL_REG_ALL_ACTIVE_STATES( RIL_REQUEST_SIGNAL_STRENGTH, qcril_qmi_nas_request_signal_strength ) },  
6.往上,给RIL的getSignalStrength 
RIL.java (android\frameworks\opt\telephony\src\java\com\android\internal\telephony) getSignalStrength  
7.往上给GSST的queueNextSignalStrengthPoll 
GsmServiceStateTracker.java 
(android\frameworks\opt\telephony\src\java\com\android\internal\telephony\gsm) handleMessage 
EVENT_SIM_READY 
EVENT_GET_SIGNAL_STRENGTH queueNextSignalStrengthPoll  
8.往上给SST的onSignalStrengthResult和notifySignalStrength ServiceStateTracker.java 
(frameworks\opt\telephony\src\java\com\android\internal\telephony) onSignalStrengthResult notifySignalStrength  
9.往上给PhoneBase的notifySignalStrength 
PhoneBase.java (frameworks\opt\telephony\src\java\com\android\internal\telephony) notifySignalStrength

10.往上给DefaultPhoneNotifier的notifySignalStrength 
DefaultPhoneNotifier.java 
(frameworks\opt\telephony\src\java\com\android\internal\telephony) notifySignalStrength 
Rlog.d(LOG_TAG, "notifySignalStrength: mRegistry=" + mRegistry 
        + " ss=" + sender.getSignalStrength() + " sender=" + sender);  
11.往上给TelephonyRegistry的notifySignalStrengthForSubscriber 
TelephonyRegistry.java (frameworks\base\services\core\java\com\android\server) notifySignalStrengthForSubscriber  
如此,SignalStrength的各个成员变量便有了对应的信号值,做为显示几格的标准 

猜你喜欢

转载自blog.csdn.net/keyanting_2018/article/details/83539166