broadband-modem-qmi: update EPS registration state for LTE qmi modems

MM was not updating the EPS registration status for qmi modems. This
led to LTE-only modems never having 'registered' status. This was
happening for Quectel EC21-V modem.
This commit is contained in:
Alfonso Sánchez-Beato
2018-02-13 10:07:25 -06:00
committed by Dan Williams
parent dce0752743
commit 10cb61f399
+12 -6
View File
@@ -4744,6 +4744,8 @@ common_process_serving_system_3gpp (MMBroadbandModemQmi *self,
/* Report new registration states */
mm_iface_modem_3gpp_update_cs_registration_state (MM_IFACE_MODEM_3GPP (self), mm_cs_registration_state);
mm_iface_modem_3gpp_update_ps_registration_state (MM_IFACE_MODEM_3GPP (self), mm_ps_registration_state);
if (mm_access_technologies & MM_MODEM_ACCESS_TECHNOLOGY_LTE)
mm_iface_modem_3gpp_update_eps_registration_state (MM_IFACE_MODEM_3GPP (self), mm_ps_registration_state);
/* Get 3GPP location LAC and CI */
lac = 0;
@@ -5199,6 +5201,7 @@ common_process_system_info_3gpp (MMBroadbandModemQmi *self,
guint16 lac;
guint32 cid;
gchar *operator_id;
gboolean has_lte_info;
ps_registration_state = MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN;
cs_registration_state = MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN;
@@ -5210,12 +5213,13 @@ common_process_system_info_3gpp (MMBroadbandModemQmi *self,
* LTE > WCDMA > GSM
* The first one giving results will be the one reported.
*/
if (!process_lte_info (response_output, indication_output,
&cs_registration_state,
&ps_registration_state,
&lac,
&cid,
&operator_id) &&
has_lte_info = process_lte_info (response_output, indication_output,
&cs_registration_state,
&ps_registration_state,
&lac,
&cid,
&operator_id);
if (!has_lte_info &&
!process_wcdma_info (response_output, indication_output,
&cs_registration_state,
&ps_registration_state,
@@ -5240,6 +5244,8 @@ common_process_system_info_3gpp (MMBroadbandModemQmi *self,
/* Report new registration states */
mm_iface_modem_3gpp_update_cs_registration_state (MM_IFACE_MODEM_3GPP (self), cs_registration_state);
mm_iface_modem_3gpp_update_ps_registration_state (MM_IFACE_MODEM_3GPP (self), ps_registration_state);
if (has_lte_info)
mm_iface_modem_3gpp_update_eps_registration_state (MM_IFACE_MODEM_3GPP (self), ps_registration_state);
mm_iface_modem_3gpp_update_location (MM_IFACE_MODEM_3GPP (self), lac, cid);
}