aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/foxconn/mm-broadband-modem-mbim-foxconn.c76
1 files changed, 33 insertions, 43 deletions
diff --git a/plugins/foxconn/mm-broadband-modem-mbim-foxconn.c b/plugins/foxconn/mm-broadband-modem-mbim-foxconn.c
index 3f93bef5..ae6fa196 100644
--- a/plugins/foxconn/mm-broadband-modem-mbim-foxconn.c
+++ b/plugins/foxconn/mm-broadband-modem-mbim-foxconn.c
@@ -81,6 +81,33 @@ firmware_load_update_settings_finish (MMIfaceModemFirmware *self,
return g_task_propagate_pointer (G_TASK (res), error);
}
+static MMFirmwareUpdateSettings *
+create_update_settings (MMBroadbandModemMbimFoxconn *self,
+ const gchar *version_str)
+{
+ MMModemFirmwareUpdateMethod methods = MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE;
+ MMFirmwareUpdateSettings *update_settings = NULL;
+ guint vendor_id;
+ guint product_id;
+
+ /* 0x105b is the T99W175 module, T99W175 supports QDU,
+ * T99W265(0x0489:0xe0da ; 0x0489:0xe0db): supports QDU
+ * else support FASTBOOT and QMI PDC.
+ */
+ vendor_id = mm_base_modem_get_vendor_id (MM_BASE_MODEM (self));
+ product_id = mm_base_modem_get_product_id (MM_BASE_MODEM (self));
+ if (vendor_id == 0x105b || (vendor_id == 0x0489 && (product_id == 0xe0da || product_id == 0xe0db)))
+ methods = MM_MODEM_FIRMWARE_UPDATE_METHOD_MBIM_QDU;
+ else
+ methods = MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT | MM_MODEM_FIRMWARE_UPDATE_METHOD_QMI_PDC;
+
+ update_settings = mm_firmware_update_settings_new (methods);
+ if (methods & MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT)
+ mm_firmware_update_settings_set_fastboot_at (update_settings, "AT^FASTBOOT");
+ mm_firmware_update_settings_set_version (update_settings, version_str);
+ return update_settings;
+}
+
static void
dms_foxconn_get_firmware_version_ready (QmiClientDms *client,
GAsyncResult *res,
@@ -88,11 +115,7 @@ dms_foxconn_get_firmware_version_ready (QmiClientDms *client,
{
g_autoptr(QmiMessageDmsFoxconnGetFirmwareVersionOutput) output = NULL;
GError *error = NULL;
- MMFirmwareUpdateSettings *update_settings = NULL;
const gchar *str;
- MMIfaceModemFirmware *self;
- guint vendor_id;
- guint product_id;
output = qmi_client_dms_foxconn_get_firmware_version_finish (client, res, &error);
if (!output || !qmi_message_dms_foxconn_get_firmware_version_output_get_result (output, &error)) {
@@ -101,25 +124,11 @@ dms_foxconn_get_firmware_version_ready (QmiClientDms *client,
return;
}
- /* Create update settings now:
- * 0x105b is the T99W175 module, T99W175 supports QDU,
- * T99W265(0x0489:0xe0da ; 0x0489:0xe0db): supports QDU
- * else support FASTBOOT and QMI PDC.
- */
- self = g_task_get_source_object (task);
- vendor_id = mm_base_modem_get_vendor_id (MM_BASE_MODEM (self));
- product_id = mm_base_modem_get_product_id (MM_BASE_MODEM (self));
- if (vendor_id == 0x105b || (vendor_id == 0x0489 && (product_id == 0xe0da || product_id == 0xe0db)))
- update_settings = mm_firmware_update_settings_new (MM_MODEM_FIRMWARE_UPDATE_METHOD_MBIM_QDU);
- else {
- update_settings = mm_firmware_update_settings_new (MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT |
- MM_MODEM_FIRMWARE_UPDATE_METHOD_QMI_PDC);
- mm_firmware_update_settings_set_fastboot_at (update_settings, "AT^FASTBOOT");
- }
qmi_message_dms_foxconn_get_firmware_version_output_get_version (output, &str, NULL);
- mm_firmware_update_settings_set_version (update_settings, str);
- g_task_return_pointer (task, update_settings, g_object_unref);
+ g_task_return_pointer (task,
+ create_update_settings (g_task_get_source_object (task), str),
+ g_object_unref);
g_object_unref (task);
}
@@ -130,11 +139,7 @@ fox_get_firmware_version_ready (QmiClientFox *client,
{
g_autoptr(QmiMessageFoxGetFirmwareVersionOutput) output = NULL;
GError *error = NULL;
- MMFirmwareUpdateSettings *update_settings = NULL;
const gchar *str;
- MMIfaceModemFirmware *self;
- guint vendor_id;
- guint product_id;
output = qmi_client_fox_get_firmware_version_finish (client, res, &error);
if (!output || !qmi_message_fox_get_firmware_version_output_get_result (output, &error)) {
@@ -143,26 +148,11 @@ fox_get_firmware_version_ready (QmiClientFox *client,
return;
}
- /* Create update settings now:
- * 0x105b is the T99W175 module, T99W175 supports QDU,
- * T99W265(0x0489:0xe0da ; 0x0489:0xe0db): supports QDU
- * else support FASTBOOT and QMI PDC.
- */
- self = g_task_get_source_object (task);
- vendor_id = mm_base_modem_get_vendor_id (MM_BASE_MODEM (self));
- product_id = mm_base_modem_get_product_id (MM_BASE_MODEM (self));
- if (vendor_id == 0x105b || (vendor_id == 0x0489 && (product_id == 0xe0da || product_id == 0xe0db)))
- update_settings = mm_firmware_update_settings_new (MM_MODEM_FIRMWARE_UPDATE_METHOD_MBIM_QDU);
- else {
- update_settings = mm_firmware_update_settings_new (MM_MODEM_FIRMWARE_UPDATE_METHOD_FASTBOOT |
- MM_MODEM_FIRMWARE_UPDATE_METHOD_QMI_PDC);
- mm_firmware_update_settings_set_fastboot_at (update_settings, "AT^FASTBOOT");
- }
-
qmi_message_fox_get_firmware_version_output_get_version (output, &str, NULL);
- mm_firmware_update_settings_set_version (update_settings, str);
- g_task_return_pointer (task, update_settings, g_object_unref);
+ g_task_return_pointer (task,
+ create_update_settings (g_task_get_source_object (task), str),
+ g_object_unref);
g_object_unref (task);
}