diff options
-rw-r--r-- | src/mm-broadband-modem-mbim.c | 43 | ||||
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 43 | ||||
-rw-r--r-- | src/mm-broadband-modem.c | 43 | ||||
-rw-r--r-- | src/mm-iface-modem-firmware.c | 52 | ||||
-rw-r--r-- | src/mm-iface-modem-firmware.h | 11 |
5 files changed, 81 insertions, 111 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index d22d1146..82a7b574 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -10303,21 +10303,7 @@ modem_firmware_load_update_settings_finish (MMIfaceModemFirmware *self, GAsyncResult *res, GError **error) { - return g_task_propagate_pointer (G_TASK (res), error); -} - -static gboolean -modem_is_sahara_supported (MMBaseModem *modem, - MMKernelDevice *kernel_device) -{ - return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_SAHARA"); -} - -static gboolean -modem_is_firehose_supported (MMBaseModem *modem, - MMKernelDevice *kernel_device) -{ - return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_FIREHOSE"); + return mm_iface_modem_firmware_load_update_settings_in_port_finish (self, res, error); } static void @@ -10325,28 +10311,11 @@ modem_firmware_load_update_settings (MMIfaceModemFirmware *self, GAsyncReadyCallback callback, gpointer user_data) { - GTask *task; - MMPortMbim *mbim_port; - MMKernelDevice *kernel_device; - MMModemFirmwareUpdateMethod update_methods; - g_autoptr(MMFirmwareUpdateSettings) update_settings = NULL; - - task = g_task_new (self, NULL, callback, user_data); - - update_methods = MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE; - mbim_port = mm_broadband_modem_mbim_peek_port_mbim (MM_BROADBAND_MODEM_MBIM (self)); - if (mbim_port) { - kernel_device = mm_port_peek_kernel_device (MM_PORT (mbim_port)); - - if (modem_is_firehose_supported (MM_BASE_MODEM (self), kernel_device)) - update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_FIREHOSE; - if (modem_is_sahara_supported (MM_BASE_MODEM (self), kernel_device)) - update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_SAHARA; - } - - update_settings = mm_firmware_update_settings_new (update_methods); - g_task_return_pointer (task, g_object_ref (update_settings), (GDestroyNotify)g_object_unref); - g_object_unref (task); + mm_iface_modem_firmware_load_update_settings_in_port ( + self, + MM_PORT (mm_broadband_modem_mbim_peek_port_mbim (MM_BROADBAND_MODEM_MBIM (self))), + callback, + user_data); } /*****************************************************************************/ diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 5c23e918..b0cd45da 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -13112,21 +13112,7 @@ modem_firmware_load_update_settings_finish (MMIfaceModemFirmware *self, GAsyncResult *res, GError **error) { - return g_task_propagate_pointer (G_TASK (res), error); -} - -static gboolean -modem_is_sahara_supported (MMBaseModem *modem, - MMKernelDevice *kernel_device) -{ - return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_SAHARA"); -} - -static gboolean -modem_is_firehose_supported (MMBaseModem *modem, - MMKernelDevice *kernel_device) -{ - return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_FIREHOSE"); + return mm_iface_modem_firmware_load_update_settings_in_port_finish (self, res, error); } static void @@ -13134,28 +13120,11 @@ modem_firmware_load_update_settings (MMIfaceModemFirmware *self, GAsyncReadyCallback callback, gpointer user_data) { - GTask *task; - MMPortQmi *qmi_port; - MMKernelDevice *kernel_device; - MMModemFirmwareUpdateMethod update_methods; - g_autoptr(MMFirmwareUpdateSettings) update_settings = NULL; - - task = g_task_new (self, NULL, callback, user_data); - - update_methods = MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE; - qmi_port = mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (self)); - if (qmi_port) { - kernel_device = mm_port_peek_kernel_device (MM_PORT (qmi_port)); - - if (modem_is_firehose_supported (MM_BASE_MODEM (self), kernel_device)) - update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_FIREHOSE; - if (modem_is_sahara_supported (MM_BASE_MODEM (self), kernel_device)) - update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_SAHARA; - } - - update_settings = mm_firmware_update_settings_new (update_methods); - g_task_return_pointer (task, g_object_ref (update_settings), (GDestroyNotify)g_object_unref); - g_object_unref (task); + mm_iface_modem_firmware_load_update_settings_in_port ( + self, + MM_PORT (mm_broadband_modem_qmi_peek_port_qmi (MM_BROADBAND_MODEM_QMI (self))), + callback, + user_data); } /*****************************************************************************/ diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 3311ffae..ddeb8d0e 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -11398,21 +11398,7 @@ modem_firmware_load_update_settings_finish (MMIfaceModemFirmware *self, GAsyncResult *res, GError **error) { - return g_task_propagate_pointer (G_TASK (res), error); -} - -static gboolean -modem_is_sahara_supported (MMBaseModem *modem, - MMKernelDevice *kernel_device) -{ - return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_SAHARA"); -} - -static gboolean -modem_is_firehose_supported (MMBaseModem *modem, - MMKernelDevice *kernel_device) -{ - return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_FIREHOSE"); + return mm_iface_modem_firmware_load_update_settings_in_port_finish (self, res, error); } static void @@ -11420,28 +11406,11 @@ modem_firmware_load_update_settings (MMIfaceModemFirmware *self, GAsyncReadyCallback callback, gpointer user_data) { - GTask *task; - MMIfacePortAt *at_port; - MMKernelDevice *kernel_device; - MMModemFirmwareUpdateMethod update_methods; - g_autoptr(MMFirmwareUpdateSettings) update_settings = NULL; - - task = g_task_new (self, NULL, callback, user_data); - - update_methods = MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE; - at_port = mm_base_modem_peek_best_at_port (MM_BASE_MODEM (self), NULL); - if (at_port) { - kernel_device = mm_port_peek_kernel_device (MM_PORT (at_port)); - - if (modem_is_firehose_supported (MM_BASE_MODEM (self), kernel_device)) - update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_FIREHOSE; - if (modem_is_sahara_supported (MM_BASE_MODEM (self), kernel_device)) - update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_SAHARA; - } - - update_settings = mm_firmware_update_settings_new (update_methods); - g_task_return_pointer (task, g_object_ref (update_settings), (GDestroyNotify)g_object_unref); - g_object_unref (task); + mm_iface_modem_firmware_load_update_settings_in_port ( + self, + MM_PORT (mm_base_modem_peek_port_primary (MM_BASE_MODEM (self))), + callback, + user_data); } /*****************************************************************************/ diff --git a/src/mm-iface-modem-firmware.c b/src/mm-iface-modem-firmware.c index 9872db23..ee52ae80 100644 --- a/src/mm-iface-modem-firmware.c +++ b/src/mm-iface-modem-firmware.c @@ -40,6 +40,58 @@ mm_iface_modem_firmware_bind_simple_status (MMIfaceModemFirmware *self, } /*****************************************************************************/ +/* Load update settings in port (Firmware interface) */ + +MMFirmwareUpdateSettings * +mm_iface_modem_firmware_load_update_settings_in_port_finish (MMIfaceModemFirmware *self, + GAsyncResult *res, + GError **error) +{ + return g_task_propagate_pointer (G_TASK (res), error); +} + +static gboolean +modem_is_sahara_supported (MMKernelDevice *kernel_device) +{ + return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_SAHARA"); +} + +static gboolean +modem_is_firehose_supported (MMKernelDevice *kernel_device) +{ + return mm_kernel_device_get_global_property_as_boolean (kernel_device, "ID_MM_QUALCOMM_FIREHOSE"); +} + +void +mm_iface_modem_firmware_load_update_settings_in_port (MMIfaceModemFirmware *self, + MMPort *port, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GTask *task; + MMModemFirmwareUpdateMethod update_methods; + g_autoptr(MMFirmwareUpdateSettings) update_settings = NULL; + + task = g_task_new (self, NULL, callback, user_data); + + update_methods = MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE; + if (MM_IS_PORT (port)) { + MMKernelDevice *kernel_device; + + kernel_device = mm_port_peek_kernel_device (MM_PORT (port)); + + if (modem_is_firehose_supported (kernel_device)) + update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_FIREHOSE; + if (modem_is_sahara_supported (kernel_device)) + update_methods |= MM_MODEM_FIRMWARE_UPDATE_METHOD_SAHARA; + } + + update_settings = mm_firmware_update_settings_new (update_methods); + g_task_return_pointer (task, g_object_ref (update_settings), (GDestroyNotify)g_object_unref); + g_object_unref (task); +} + +/*****************************************************************************/ /* Handle the 'List' method from DBus */ typedef struct { diff --git a/src/mm-iface-modem-firmware.h b/src/mm-iface-modem-firmware.h index e5ee980d..83485a3c 100644 --- a/src/mm-iface-modem-firmware.h +++ b/src/mm-iface-modem-firmware.h @@ -87,4 +87,15 @@ void mm_iface_modem_firmware_shutdown (MMIfaceModemFirmware *self); void mm_iface_modem_firmware_bind_simple_status (MMIfaceModemFirmware *self, MMSimpleStatus *status); +/* Helper to load common update settings on the primary port */ +void mm_iface_modem_firmware_load_update_settings_in_port ( + MMIfaceModemFirmware *self, + MMPort *port, + GAsyncReadyCallback callback, + gpointer user_data); +MMFirmwareUpdateSettings *mm_iface_modem_firmware_load_update_settings_in_port_finish ( + MMIfaceModemFirmware *self, + GAsyncResult *res, + GError **error); + #endif /* MM_IFACE_MODEM_FIRMWARE_H */ |