diff options
Diffstat (limited to 'src/plugins/mtk/mm-broadband-modem-mtk-legacy.c')
-rw-r--r-- | src/plugins/mtk/mm-broadband-modem-mtk-legacy.c | 99 |
1 files changed, 11 insertions, 88 deletions
diff --git a/src/plugins/mtk/mm-broadband-modem-mtk-legacy.c b/src/plugins/mtk/mm-broadband-modem-mtk-legacy.c index 02089a76..36121d0e 100644 --- a/src/plugins/mtk/mm-broadband-modem-mtk-legacy.c +++ b/src/plugins/mtk/mm-broadband-modem-mtk-legacy.c @@ -31,16 +31,19 @@ #include "mm-iface-modem.h" #include "mm-iface-modem-3gpp.h" #include "mm-broadband-modem-mtk-legacy.h" +#include "mm-shared-mtk.h" static void iface_modem_init (MMIfaceModemInterface *iface); static void iface_modem_3gpp_init (MMIfaceModem3gppInterface *iface); +static void shared_mtk_init (MMSharedMtkInterface *iface); static MMIfaceModemInterface *iface_modem_parent; static MMIfaceModem3gppInterface *iface_modem_3gpp_parent; G_DEFINE_TYPE_EXTENDED (MMBroadbandModemMtkLegacy, mm_broadband_modem_mtk_legacy, MM_TYPE_BROADBAND_MODEM, 0, G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM, iface_modem_init) - G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_3GPP, iface_modem_3gpp_init)); + G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_3GPP, iface_modem_3gpp_init) + G_IMPLEMENT_INTERFACE (MM_TYPE_SHARED_MTK, shared_mtk_init)); struct _MMBroadbandModemMtkLegacyPrivate { /* Signal quality regex */ @@ -52,91 +55,6 @@ struct _MMBroadbandModemMtkLegacyPrivate { }; /*****************************************************************************/ -/* Unlock retries (Modem interface) */ - -static MMUnlockRetries * -load_unlock_retries_finish (MMIfaceModem *self, - GAsyncResult *res, - GError **error) -{ - return g_task_propagate_pointer (G_TASK (res), error); -} - -static void -load_unlock_retries_ready (MMBaseModem *self, - GAsyncResult *res, - GTask *task) -{ - g_autoptr(GMatchInfo) match_info = NULL; - g_autoptr(GRegex) r = NULL; - const gchar *response; - GError *error = NULL; - GError *match_error = NULL; - gint pin1; - gint puk1; - gint pin2; - gint puk2; - MMUnlockRetries *retries; - - response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error); - if (!response) { - g_task_return_error (task, error); - g_object_unref (task); - return; - } - - r = g_regex_new ( - "\\+EPINC:\\s*([0-9]+),\\s*([0-9]+),\\s*([0-9]+),\\s*([0-9]+)", - 0, - 0, - NULL); - - g_assert (r != NULL); - - if (!g_regex_match_full (r, response, strlen (response), 0, 0, &match_info, &match_error)){ - if (match_error) - g_task_return_error (task, match_error); - else - g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, - "Failed to match EPINC response: %s", response); - g_task_return_error (task, error); - } else if (!mm_get_int_from_match_info (match_info, 1, &pin1) || - !mm_get_int_from_match_info (match_info, 2, &pin2) || - !mm_get_int_from_match_info (match_info, 3, &puk1) || - !mm_get_int_from_match_info (match_info, 4, &puk2)) { - g_task_return_new_error (task, - MM_CORE_ERROR, - MM_CORE_ERROR_FAILED, - "Failed to parse the EPINC response: '%s'", - response); - } else { - retries = mm_unlock_retries_new (); - - mm_unlock_retries_set (retries, MM_MODEM_LOCK_SIM_PIN, pin1); - mm_unlock_retries_set (retries, MM_MODEM_LOCK_SIM_PIN2, pin2); - mm_unlock_retries_set (retries, MM_MODEM_LOCK_SIM_PUK, puk1); - mm_unlock_retries_set (retries, MM_MODEM_LOCK_SIM_PUK2, puk2); - - g_task_return_pointer (task, retries, g_object_unref); - } - g_object_unref (task); -} - -static void -load_unlock_retries (MMIfaceModem *self, - GAsyncReadyCallback callback, - gpointer user_data) -{ - mm_base_modem_at_command ( - MM_BASE_MODEM (self), - "+EPINC?", - 3, - FALSE, - (GAsyncReadyCallback)load_unlock_retries_ready, - g_task_new (self, NULL, callback, user_data)); -} - -/*****************************************************************************/ static gboolean modem_after_sim_unlock_finish (MMIfaceModem *self, GAsyncResult *res, @@ -925,8 +843,13 @@ iface_modem_init (MMIfaceModemInterface *iface) iface->load_current_modes_finish = load_current_modes_finish; iface->set_current_modes = set_current_modes; iface->set_current_modes_finish = set_current_modes_finish; - iface->load_unlock_retries = load_unlock_retries; - iface->load_unlock_retries_finish = load_unlock_retries_finish; + iface->load_unlock_retries = mm_shared_mtk_load_unlock_retries; + iface->load_unlock_retries_finish = mm_shared_mtk_load_unlock_retries_finish; +} + +static void +shared_mtk_init (MMSharedMtkInterface *iface) +{ } static void |