aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkash Aggarwal <quic_akasagga@quicinc.com>2022-09-01 17:00:16 +0530
committerAleksander Morgado <aleksander@aleksander.es>2022-09-05 13:00:54 +0000
commitb2a186b5c8c5f36fe02b8fab0f64fabf2878bc21 (patch)
tree6f4c76fb915b570a00f2bf31f3871fa2282a2b57
parent34d534a52097fcbdd9c964e353ae8c43c139958a (diff)
mm-broadband-modem-qmi: fix updating access technology and location
Access technology and location properties are updated if modem is in registered state. Cache and update them when processing DSD system status indication.
-rw-r--r--src/mm-broadband-modem-qmi.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index 89edd3bc..25de488f 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -176,6 +176,10 @@ struct _MMBroadbandModemQmiPrivate {
gboolean dsd_supported;
gboolean dsd_data_rat_available;
MMModem3gppRegistrationState system_info_ps_registration_state;
+ MMModemAccessTechnology access_tech;
+ guint16 location_area_code;
+ guint16 tracking_area_code;
+ guint32 cell_id;
};
/*****************************************************************************/
@@ -3955,6 +3959,10 @@ common_process_system_info_3gpp (MMBroadbandModemQmi *self,
self->priv->system_info_ps_registration_state = ps_registration_state;
consolidated_update_ps_registration_state (self, has_lte_info, has_nr5g_info);
+ self->priv->access_tech = act;
+ self->priv->location_area_code = lac;
+ self->priv->tracking_area_code = tac;
+ self->priv->cell_id = cid;
mm_iface_modem_3gpp_update_access_technologies (MM_IFACE_MODEM_3GPP (self), act);
mm_iface_modem_3gpp_update_location (MM_IFACE_MODEM_3GPP (self), lac, tac, cid);
}
@@ -4042,6 +4050,8 @@ common_process_system_status_3gpp (MMBroadbandModemQmi *self,
/* Store DSD data RAT availability and update PS/EPS/5GS states accordingly */
self->priv->dsd_data_rat_available = data_rat_available;
consolidated_update_ps_registration_state (self, is_lte, is_nr5g);
+ mm_iface_modem_3gpp_update_access_technologies (MM_IFACE_MODEM_3GPP (self), self->priv->access_tech);
+ mm_iface_modem_3gpp_update_location (MM_IFACE_MODEM_3GPP (self), self->priv->location_area_code, self->priv->tracking_area_code, self->priv->cell_id);
}
static void
@@ -12984,6 +12994,7 @@ mm_broadband_modem_qmi_init (MMBroadbandModemQmi *self)
MM_TYPE_BROADBAND_MODEM_QMI,
MMBroadbandModemQmiPrivate);
self->priv->system_info_ps_registration_state = MM_MODEM_3GPP_REGISTRATION_STATE_UNKNOWN;
+ self->priv->access_tech = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN;
}
static void