diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2024-04-16 12:13:19 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2024-04-16 12:53:49 +0200 |
commit | e2ae9946ce1c7137d38fb8518a0301431c5f3936 (patch) | |
tree | c43076b21095091e31f9f4ad65b9e257c71ca371 /src | |
parent | 04d826f563a497f2af0557982cdfae7586ca8efb (diff) |
base-manager: launch modem initialization also in unit tests
The new modem_initialize() method is run for both real devices (after
the modem setup phase) and also for virtual devices in unit
tests (where no modem setup phase exists).
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-base-manager.c | 98 |
1 files changed, 59 insertions, 39 deletions
diff --git a/src/mm-base-manager.c b/src/mm-base-manager.c index b2a14b04..0216d9aa 100644 --- a/src/mm-base-manager.c +++ b/src/mm-base-manager.c @@ -190,66 +190,81 @@ find_device_by_physdev_uid (MMBaseManager *self, /*****************************************************************************/ -typedef struct { - MMBaseManager *self; - MMDevice *device; -} FindDeviceSupportContext; - -static void -find_device_support_context_free (FindDeviceSupportContext *ctx) -{ - g_object_unref (ctx->self); - g_object_unref (ctx->device); - g_slice_free (FindDeviceSupportContext, ctx); -} - -/*****************************************************************************/ static void -initialize_ready (MMBaseModem *self, - GAsyncResult *res) +initialize_ready (MMBaseModem *modem, + GAsyncResult *res) { g_autoptr(GError) error = NULL; - if (!mm_base_modem_initialize_finish (self, res, &error)) { + if (!mm_base_modem_initialize_finish (modem, res, &error)) { if (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_ABORTED)) { /* FATAL error, won't even be exported in DBus */ - mm_obj_err (self, "fatal error initializing: %s", error->message); + mm_obj_err (modem, "fatal error initializing: %s", error->message); } else { /* non-fatal error */ - mm_obj_warn (self, "error initializing: %s", error->message); - mm_base_modem_set_valid (self, TRUE); + mm_obj_warn (modem, "error initializing: %s", error->message); + mm_base_modem_set_valid (modem, TRUE); } } else { - mm_obj_dbg (self, "modem initialized"); - mm_base_modem_set_valid (self, TRUE); + mm_obj_dbg (modem, "modem initialized"); + mm_base_modem_set_valid (modem, TRUE); } } static void +modem_initialize (MMBaseManager *self, + MMDevice *device) +{ + MMBaseModem *modem; + + modem = mm_device_peek_modem (device); + if (!modem) { + mm_obj_warn (self, "cannot initialize modem at device '%s': not found", + mm_device_get_uid (device)); + return; + } + + mm_obj_dbg (modem, "modem initializing..."); + mm_base_modem_initialize (modem, + (GAsyncReadyCallback)initialize_ready, + NULL); +} + +/*****************************************************************************/ + +typedef struct { + MMBaseManager *self; + MMDevice *device; +} FindDeviceSupportContext; + +static void +find_device_support_context_free (FindDeviceSupportContext *ctx) +{ + g_object_unref (ctx->self); + g_object_unref (ctx->device); + g_slice_free (FindDeviceSupportContext, ctx); +} + +static void dispatcher_modem_setup_ready (MMDispatcherModemSetup *dispatcher, GAsyncResult *res, FindDeviceSupportContext *ctx) { - g_autoptr(GError) error = NULL; - MMBaseModem *modem; + g_autoptr(GError) error = NULL; if (!mm_dispatcher_modem_setup_run_finish (dispatcher, res, &error)) { - if (!g_error_matches(error, MM_CORE_ERROR, MM_CORE_ERROR_NOT_FOUND)) { - mm_obj_err (ctx->self, "couldn't run modem setup: %s", error->message); - } else { - mm_obj_dbg (ctx->self, "no need to run modem setup"); - } - } + if (!g_error_matches(error, MM_CORE_ERROR, MM_CORE_ERROR_NOT_FOUND)) + mm_obj_warn (ctx->self, "couldn't run setup for device '%s': %s", + mm_device_get_uid (ctx->device), error->message); + else + mm_obj_dbg (ctx->self, "no need to run setup for device '%s'", + mm_device_get_uid (ctx->device)); + } else + mm_obj_dbg (ctx->self, "setup for device '%s' finished", + mm_device_get_uid (ctx->device)); - modem = mm_device_peek_modem (ctx->device); - if (modem) { - /* As soon as we get the ports organized, we initialize the modem */ - mm_base_modem_initialize (modem, - (GAsyncReadyCallback)initialize_ready, - NULL); - } else { - mm_obj_warn(modem, "no modem found"); - } + /* launch async modem initialization */ + modem_initialize (ctx->self, ctx->device); find_device_support_context_free (ctx); } @@ -293,6 +308,8 @@ modem_setup (FindDeviceSupportContext *ctx) g_ptr_array_add (aux, NULL); modem_ports = (GStrv) g_ptr_array_free (aux, FALSE); + mm_obj_msg (ctx->self, "running setup for device '%s'...", + mm_device_get_uid (ctx->device)); mm_dispatcher_modem_setup_run (dispatcher, mm_base_modem_get_vendor_id (modem), mm_base_modem_get_product_id (modem), @@ -1723,6 +1740,9 @@ handle_set_profile (MmGdbusTest *skeleton, mm_obj_msg (self, "modem for virtual device '%s' successfully created", mm_device_get_uid (device)); + /* launch async modem initialization */ + modem_initialize (self, device); + out: if (error) { |