diff options
author | Michael Biebl <biebl@debian.org> | 2011-08-07 01:47:27 +0200 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2014-02-05 08:38:27 +0100 |
commit | 95e75c9fd39d5c16c79add762ca578e0360509d6 (patch) | |
tree | 2f09dec06f41503d32a3deade89123ba3ce267c2 /plugins/mm-modem-gobi-gsm.c | |
parent | 59ed3390b9a798ff8bf9133cbc28c4539ad99f42 (diff) | |
parent | a09050a7f63a262bf90dcb1c7a41f9cfd205db43 (diff) |
Imported Debian patch 0.5-1debian/0.5-1
Diffstat (limited to 'plugins/mm-modem-gobi-gsm.c')
-rw-r--r-- | plugins/mm-modem-gobi-gsm.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/plugins/mm-modem-gobi-gsm.c b/plugins/mm-modem-gobi-gsm.c index ab19642..eea13ce 100644 --- a/plugins/mm-modem-gobi-gsm.c +++ b/plugins/mm-modem-gobi-gsm.c @@ -24,6 +24,7 @@ #include "mm-callback-info.h" #include "mm-modem-gsm-card.h" #include "mm-at-serial-port.h" +#include "mm-modem-helpers.h" static void modem_init (MMModem *modem_class); static void modem_gsm_card_init (MMModemGsmCard *gsm_card_class); @@ -56,6 +57,55 @@ mm_modem_gobi_gsm_new (const char *device, /*****************************************************************************/ static void +get_act_request_done (MMAtSerialPort *port, + GString *response, + GError *error, + gpointer user_data) +{ + MMCallbackInfo *info = user_data; + MMModemGsmAccessTech act = MM_MODEM_GSM_ACCESS_TECH_UNKNOWN; + const char *p; + + /* If the modem has already been removed, return without + * scheduling callback */ + if (mm_callback_info_check_modem_removed (info)) + return; + + if (error) + info->error = g_error_copy (error); + else { + p = mm_strip_tag (response->str, "*CNTI:"); + p = strchr (p, ','); + if (p) + act = mm_gsm_string_to_access_tech (p + 1); + } + + mm_callback_info_set_result (info, GUINT_TO_POINTER (act), NULL); + mm_callback_info_schedule (info); +} + +static void +get_access_technology (MMGenericGsm *modem, + MMModemUIntFn callback, + gpointer user_data) +{ + MMAtSerialPort *port; + MMCallbackInfo *info; + + info = mm_callback_info_uint_new (MM_MODEM (modem), callback, user_data); + + port = mm_generic_gsm_get_best_at_port (modem, &info->error); + if (!port) { + mm_callback_info_schedule (info); + return; + } + + mm_at_serial_port_queue_command (port, "*CNTI=0", 3, get_act_request_done, info); +} + +/*****************************************************************************/ + +static void get_string_done (MMAtSerialPort *port, GString *response, GError *error, @@ -118,5 +168,8 @@ mm_modem_gobi_gsm_init (MMModemGobiGsm *self) static void mm_modem_gobi_gsm_class_init (MMModemGobiGsmClass *klass) { + MMGenericGsmClass *gsm_class = MM_GENERIC_GSM_CLASS (klass); + + gsm_class->get_access_technology = get_access_technology; } |