aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2017-08-22 13:35:04 +0200
committerAleksander Morgado <aleksander@aleksander.es>2017-09-15 10:31:21 -0700
commit91f4ea56899b596c7d0548ed81cef8197dbd0bca (patch)
tree75887da65c3cf68e4fbb9f8bed6a904e64e2fd59
parent2d0b7b4ae0be4710b9dee2462f3e20d95e7d6edf (diff)
ublox: try to use AT+UACT? to query current bands
-rw-r--r--plugins/ublox/mm-broadband-modem-ublox.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/plugins/ublox/mm-broadband-modem-ublox.c b/plugins/ublox/mm-broadband-modem-ublox.c
index 27345752..23f14c7c 100644
--- a/plugins/ublox/mm-broadband-modem-ublox.c
+++ b/plugins/ublox/mm-broadband-modem-ublox.c
@@ -179,24 +179,43 @@ load_supported_bands (MMIfaceModem *self,
/* Load current bands (Modem interface) */
static GArray *
-load_current_bands_finish (MMIfaceModem *self,
+load_current_bands_finish (MMIfaceModem *_self,
GAsyncResult *res,
GError **error)
{
- const gchar *response;
+ MMBroadbandModemUblox *self = MM_BROADBAND_MODEM_UBLOX (_self);
+ const gchar *response;
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, error);
if (!response)
return NULL;
+ if (self->priv->uact == FEATURE_SUPPORTED)
+ return mm_ublox_parse_uact_response (response, error);
+
return mm_ublox_parse_ubandsel_response (response, error);
}
static void
-load_current_bands (MMIfaceModem *self,
+load_current_bands (MMIfaceModem *_self,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ MMBroadbandModemUblox *self = MM_BROADBAND_MODEM_UBLOX (_self);
+
+ g_assert (self->priv->uact != FEATURE_SUPPORT_UNKNOWN);
+
+ if (self->priv->uact == FEATURE_SUPPORTED) {
+ mm_base_modem_at_command (
+ MM_BASE_MODEM (self),
+ "+UACT?",
+ 3,
+ FALSE,
+ (GAsyncReadyCallback)callback,
+ user_data);
+ return;
+ }
+
mm_base_modem_at_command (
MM_BASE_MODEM (self),
"+UBANDSEL?",