diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2017-08-22 13:35:04 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2017-09-15 10:31:21 -0700 |
commit | 91f4ea56899b596c7d0548ed81cef8197dbd0bca (patch) | |
tree | 75887da65c3cf68e4fbb9f8bed6a904e64e2fd59 | |
parent | 2d0b7b4ae0be4710b9dee2462f3e20d95e7d6edf (diff) |
ublox: try to use AT+UACT? to query current bands
-rw-r--r-- | plugins/ublox/mm-broadband-modem-ublox.c | 25 |
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?", |