aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mm-broadband-modem-mbim.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c
index aaa3e1cc..79f5998e 100644
--- a/src/mm-broadband-modem-mbim.c
+++ b/src/mm-broadband-modem-mbim.c
@@ -75,6 +75,7 @@ struct _MMBroadbandModemMbimPrivate {
guint caps_max_sessions;
gchar *caps_device_id;
gchar *caps_firmware_info;
+ gchar *caps_hardware_info;
/* Process unsolicited notifications */
guint notification_id;
@@ -168,7 +169,7 @@ device_caps_query_ready (MbimDevice *device,
NULL, /* custom_data_class */
&self->priv->caps_device_id,
&self->priv->caps_firmware_info,
- NULL, /* hardware_info */
+ &self->priv->caps_hardware_info,
&error)) {
/* Build mask of modem capabilities */
mask = 0;
@@ -304,6 +305,38 @@ modem_load_revision (MMIfaceModem *_self,
}
/*****************************************************************************/
+/* Hardware Revision loading (Modem interface) */
+
+static gchar *
+modem_load_hardware_revision_finish (MMIfaceModem *self,
+ GAsyncResult *res,
+ GError **error)
+{
+ return g_task_propagate_pointer (G_TASK (res), error);
+}
+
+static void
+modem_load_hardware_revision (MMIfaceModem *_self,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ MMBroadbandModemMbim *self = MM_BROADBAND_MODEM_MBIM (_self);
+ GTask *task;
+
+ task = g_task_new (self, NULL, callback, user_data);
+ if (self->priv->caps_hardware_info)
+ g_task_return_pointer (task,
+ g_strdup (self->priv->caps_hardware_info),
+ g_free);
+ else
+ g_task_return_new_error (task,
+ MM_CORE_ERROR,
+ MM_CORE_ERROR_FAILED,
+ "Hardware revision information not given in device capabilities");
+ g_object_unref (task);
+}
+
+/*****************************************************************************/
/* Equipment Identifier loading (Modem interface) */
static gchar *
@@ -3295,6 +3328,7 @@ finalize (GObject *object)
g_free (self->priv->caps_device_id);
g_free (self->priv->caps_firmware_info);
+ g_free (self->priv->caps_hardware_info);
g_free (self->priv->current_operator_id);
g_free (self->priv->current_operator_name);
@@ -3313,6 +3347,8 @@ iface_modem_init (MMIfaceModem *iface)
iface->load_model_finish = modem_load_model_finish;
iface->load_revision = modem_load_revision;
iface->load_revision_finish = modem_load_revision_finish;
+ iface->load_hardware_revision = modem_load_hardware_revision;
+ iface->load_hardware_revision_finish = modem_load_hardware_revision_finish;
iface->load_equipment_identifier = modem_load_equipment_identifier;
iface->load_equipment_identifier_finish = modem_load_equipment_identifier_finish;
iface->load_device_identifier = modem_load_device_identifier;