diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-base-manager.c | 46 | ||||
-rw-r--r-- | src/mm-device.c | 49 | ||||
-rw-r--r-- | src/mm-device.h | 7 |
3 files changed, 52 insertions, 50 deletions
diff --git a/src/mm-base-manager.c b/src/mm-base-manager.c index 0216d9aa..b928820e 100644 --- a/src/mm-base-manager.c +++ b/src/mm-base-manager.c @@ -190,48 +190,6 @@ find_device_by_physdev_uid (MMBaseManager *self, /*****************************************************************************/ -static void -initialize_ready (MMBaseModem *modem, - GAsyncResult *res) -{ - g_autoptr(GError) error = NULL; - - 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 (modem, "fatal error initializing: %s", error->message); - } else { - /* non-fatal error */ - mm_obj_warn (modem, "error initializing: %s", error->message); - mm_base_modem_set_valid (modem, TRUE); - } - } else { - 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; @@ -264,7 +222,7 @@ dispatcher_modem_setup_ready (MMDispatcherModemSetup *dispatcher, mm_device_get_uid (ctx->device)); /* launch async modem initialization */ - modem_initialize (ctx->self, ctx->device); + mm_device_initialize_modem (ctx->device); find_device_support_context_free (ctx); } @@ -1741,7 +1699,7 @@ handle_set_profile (MmGdbusTest *skeleton, mm_device_get_uid (device)); /* launch async modem initialization */ - modem_initialize (self, device); + mm_device_initialize_modem (device); out: diff --git a/src/mm-device.c b/src/mm-device.c index e6bd36bb..09d15d7a 100644 --- a/src/mm-device.c +++ b/src/mm-device.c @@ -402,6 +402,48 @@ export_modem (MMDevice *self) /*****************************************************************************/ static void +initialize_ready (MMBaseModem *modem, + GAsyncResult *res, + MMDevice *_self) /* full reference */ +{ + g_autoptr(MMDevice) self = _self; + g_autoptr(GError) error = NULL; + + 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); + } else { + /* non-fatal error */ + mm_obj_warn (self, "error initializing: %s", error->message); + mm_base_modem_set_valid (modem, TRUE); + } + } else { + mm_obj_dbg (self, "modem initialized"); + mm_base_modem_set_valid (modem, TRUE); + } +} + +void +mm_device_initialize_modem (MMDevice *self) +{ + MMBaseModem *modem; + + modem = mm_device_peek_modem (self); + if (!modem) { + mm_obj_warn (self, "cannot initialize modem: not found"); + return; + } + + mm_obj_dbg (self, "modem initializing..."); + mm_base_modem_initialize (modem, + (GAsyncReadyCallback)initialize_ready, + g_object_ref (self)); +} + +/*****************************************************************************/ + +static void clear_modem (MMDevice *self) { if (self->priv->modem_valid_id) { @@ -434,16 +476,17 @@ mm_device_remove_modem (MMDevice *self) static gboolean reprobe (MMDevice *self) { - GError *error = NULL; + g_autoptr (GError) error = NULL; self->priv->reprobe_id = 0; mm_obj_dbg (self, "Reprobing modem..."); if (!mm_device_create_modem (self, &error)) { mm_obj_warn (self, "could not recreate modem: %s", error->message); - g_error_free (error); - } else + } else { mm_obj_dbg (self, "modem recreated"); + mm_device_initialize_modem (self); + } return G_SOURCE_REMOVE; } diff --git a/src/mm-device.h b/src/mm-device.h index eb376974..5426ef17 100644 --- a/src/mm-device.h +++ b/src/mm-device.h @@ -80,9 +80,10 @@ void mm_device_release_port_name (MMDevice *self, const gchar *subsystem, const gchar *name); -gboolean mm_device_create_modem (MMDevice *self, - GError **error); -void mm_device_remove_modem (MMDevice *self); +gboolean mm_device_create_modem (MMDevice *self, + GError **error); +void mm_device_remove_modem (MMDevice *self); +void mm_device_initialize_modem (MMDevice *self); void mm_device_inhibit (MMDevice *self, GAsyncReadyCallback callback, |