telit:broadband-mbim: save MBIM originated revision into software_package_version

Currently, MBIM broadband Telit modem does not store firmware revision
into 'software_package_version', so it won't be possible to specialize
behavior based on modem model (using mm_telit_model_from_revision).

This change overloads load-revision in MBIM broadband Telit in order to
call parent's loading and store the returned 'caps_firmware_info' into
'software_package_version' via mm_shared_telit_store_revision.
This commit is contained in:
Carlo Lobrano
2022-06-22 08:37:34 +02:00
parent 50f20163d4
commit b9ca16486e
@@ -129,6 +129,51 @@ load_supported_modes (MMIfaceModem *self,
task);
}
/*****************************************************************************/
/* Load revision (Modem interface) */
static gchar *
load_revision_finish (MMIfaceModem *self,
GAsyncResult *res,
GError **error)
{
return g_task_propagate_pointer (G_TASK (res), error);
}
static void
parent_load_revision_ready (MMIfaceModem *self,
GAsyncResult *res,
GTask *task)
{
GError *error = NULL;
gchar *revision = NULL;
revision = iface_modem_parent->load_revision_finish (self, res, &error);
if (!revision) {
g_task_return_error (task, error);
g_object_unref (task);
return;
}
mm_shared_telit_store_revision (MM_SHARED_TELIT (self), revision);
g_task_return_pointer (task, revision, g_free);
g_object_unref (task);
}
static void
load_revision (MMIfaceModem *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
/* Run parent's loading */
/* Telit's custom revision loading (in telit/mm-shared) is AT-only and the
* MBIM modem might not have an AT port available, so we call the parent's
* load_revision and store the revision taken from the firmware info capabilities. */
iface_modem_parent->load_revision (
MM_IFACE_MODEM (self),
(GAsyncReadyCallback)parent_load_revision_ready,
g_task_new (self, NULL, callback, user_data));
}
/*****************************************************************************/
MMBroadbandModemMbimTelit *
@@ -175,6 +220,8 @@ iface_modem_init (MMIfaceModem *iface)
iface->load_current_modes_finish = mm_shared_telit_load_current_modes_finish;
iface->set_current_modes = mm_shared_telit_set_current_modes;
iface->set_current_modes_finish = mm_shared_telit_set_current_modes_finish;
iface->load_revision_finish = load_revision_finish;
iface->load_revision = load_revision;
}
static MMIfaceModem *