aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-08-09 11:43:46 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-08-23 19:10:58 +0200
commit174396cb3e9e03c486ed4104f8cbe8149ea6cfec (patch)
tree00a04c48bf8074a1b67da6e10437f225132e3490
parent76ddce2763996931ff2a89c8f67c5b517fbd070d (diff)
broadband-modem-qmi: implement supported modes loading
-rw-r--r--src/mm-broadband-modem-qmi.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index 99e45dd9..21fdf4a9 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -1171,6 +1171,44 @@ modem_load_supported_bands (MMIfaceModem *self,
}
/*****************************************************************************/
+/* Load supported modes (Modem interface) */
+
+static MMModemMode
+modem_load_supported_modes_finish (MMIfaceModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return (MMModemMode)GPOINTER_TO_UINT (g_simple_async_result_get_op_res_gpointer (
+ G_SIMPLE_ASYNC_RESULT (res)));
+}
+
+static void
+modem_load_supported_modes (MMIfaceModem *self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GSimpleAsyncResult *result;
+ MMModemMode mode;
+
+ /* For QMI-powered modems, it is safe to assume they do 2G and 3G */
+ mode = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G);
+
+ /* Then, if the modem has LTE caps, it does 4G */
+ if (mm_iface_modem_is_3gpp_lte (MM_IFACE_MODEM (self)))
+ mode |= MM_MODEM_MODE_4G;
+
+ result = g_simple_async_result_new (G_OBJECT (self),
+ callback,
+ user_data,
+ modem_load_supported_modes);
+ g_simple_async_result_set_op_res_gpointer (result,
+ GUINT_TO_POINTER (mode),
+ NULL);
+ g_simple_async_result_complete_in_idle (result);
+ g_object_unref (result);
+}
+
+/*****************************************************************************/
/* Load signal quality (Modem interface) */
/* Limit the value betweeen [-113,-51] and scale it to a percentage */
@@ -5081,6 +5119,8 @@ iface_modem_init (MMIfaceModem *iface)
iface->load_unlock_retries_finish = modem_load_unlock_retries_finish;
iface->load_supported_bands = modem_load_supported_bands;
iface->load_supported_bands_finish = modem_load_supported_bands_finish;
+ iface->load_supported_modes = modem_load_supported_modes;
+ iface->load_supported_modes_finish = modem_load_supported_modes_finish;
/* Enabling/disabling */
iface->modem_init = NULL;