aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2020-03-23 06:36:36 +0100
committerAleksander Morgado <aleksander@aleksander.es>2020-04-09 12:38:50 +0000
commit7354dc928f389d090dfa5c3599ed199f232c2fde (patch)
tree7573f89e232b88980a44e73e3a0a4b966ce69cb8 /src
parentbf771be7fac874a26f35afebd1fad27af64eaae7 (diff)
api: new 5GNR capability
Diffstat (limited to 'src')
-rw-r--r--src/mm-iface-modem.c8
-rw-r--r--src/mm-modem-helpers-qmi.c13
-rw-r--r--src/mm-modem-helpers.h3
3 files changed, 17 insertions, 7 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c
index 9671e396..c9f5c174 100644
--- a/src/mm-iface-modem.c
+++ b/src/mm-iface-modem.c
@@ -4220,8 +4220,7 @@ current_capabilities_internal_load_unlock_required_ready (MMIfaceModem *self,
mm_obj_dbg (self, "multimode device without SIM, no 3GPP capabilities");
caps = mm_gdbus_modem_get_current_capabilities (ctx->skeleton);
- caps &= ~MM_MODEM_CAPABILITY_GSM_UMTS;
- caps &= ~MM_MODEM_CAPABILITY_LTE;
+ caps &= ~MM_MODEM_CAPABILITY_3GPP;
/* CDMA-EVDO must still be around */
g_assert (caps & MM_MODEM_CAPABILITY_CDMA_EVDO);
@@ -4283,8 +4282,7 @@ load_current_capabilities_ready (MMIfaceModem *self,
/* If the device is a multimode device (3GPP+3GPP2) check whether we have a
* SIM or not. */
- if (caps & MM_MODEM_CAPABILITY_CDMA_EVDO &&
- (caps & MM_MODEM_CAPABILITY_GSM_UMTS || caps & MM_MODEM_CAPABILITY_LTE)) {
+ if ((caps & MM_MODEM_CAPABILITY_CDMA_EVDO) && (caps & MM_MODEM_CAPABILITY_3GPP)) {
mm_obj_dbg (self, "checking if multimode device has a SIM...");
internal_load_unlock_required (
self,
@@ -5570,7 +5568,7 @@ mm_iface_modem_is_3gpp_lte_only (MMIfaceModem *self)
MMModemCapability capabilities;
capabilities = mm_iface_modem_get_current_capabilities (self);
- return (capabilities & MM_MODEM_CAPABILITY_LTE) && !((MM_MODEM_CAPABILITY_LTE ^ capabilities) & capabilities);
+ return ((capabilities & MM_MODEM_CAPABILITY_LTE) && !((MM_MODEM_CAPABILITY_LTE ^ capabilities) & capabilities));
}
gboolean
diff --git a/src/mm-modem-helpers-qmi.c b/src/mm-modem-helpers-qmi.c
index 531c5849..d735c0d4 100644
--- a/src/mm-modem-helpers-qmi.c
+++ b/src/mm-modem-helpers-qmi.c
@@ -1029,6 +1029,9 @@ mm_modem_capability_from_qmi_rat_mode_preference (QmiNasRatModePreference qmi)
if (qmi & QMI_NAS_RAT_MODE_PREFERENCE_LTE)
caps |= MM_MODEM_CAPABILITY_LTE;
+ if (qmi & QMI_NAS_RAT_MODE_PREFERENCE_5GNR)
+ caps |= MM_MODEM_CAPABILITY_5GNR;
+
return caps;
}
@@ -1050,6 +1053,9 @@ mm_modem_capability_to_qmi_rat_mode_preference (MMModemCapability caps)
if (caps & MM_MODEM_CAPABILITY_LTE)
qmi |= QMI_NAS_RAT_MODE_PREFERENCE_LTE;
+ if (caps & MM_MODEM_CAPABILITY_5GNR)
+ qmi |= QMI_NAS_RAT_MODE_PREFERENCE_5GNR;
+
return qmi;
}
@@ -1063,6 +1069,11 @@ mm_modem_capability_to_qmi_acquisition_order_preference (MMModemCapability caps)
array = g_array_new (FALSE, FALSE, sizeof (QmiNasRadioInterface));
+ if (caps & MM_MODEM_CAPABILITY_5GNR) {
+ value = QMI_NAS_RADIO_INTERFACE_5GNR;
+ g_array_append_val (array, value);
+ }
+
if (caps & MM_MODEM_CAPABILITY_LTE) {
value = QMI_NAS_RADIO_INTERFACE_LTE;
g_array_append_val (array, value);
@@ -1166,7 +1177,7 @@ mm_modem_capability_from_qmi_radio_technology_preference (QmiNasRadioTechnologyP
if (qmi & QMI_NAS_RADIO_TECHNOLOGY_PREFERENCE_LTE)
caps |= MM_MODEM_CAPABILITY_LTE;
- /* FIXME: LTE Advanced? */
+ /* NOTE: no 5GNR defined in Technology Preference */
return caps;
}
diff --git a/src/mm-modem-helpers.h b/src/mm-modem-helpers.h
index 4adaee2a..cf60e425 100644
--- a/src/mm-modem-helpers.h
+++ b/src/mm-modem-helpers.h
@@ -41,7 +41,8 @@
#define MM_MODEM_CAPABILITY_3GPP \
(MM_MODEM_CAPABILITY_GSM_UMTS | \
- MM_MODEM_CAPABILITY_LTE)
+ MM_MODEM_CAPABILITY_LTE | \
+ MM_MODEM_CAPABILITY_5GNR)
gchar *mm_strip_quotes (gchar *str);
const gchar *mm_strip_tag (const gchar *str,