diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2011-06-07 15:45:55 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-02-17 13:25:03 +0100 |
commit | e6d085246f3d47e162084234b1199b5ebb840cca (patch) | |
tree | 30109a6b707cbfef0f00ea96794cf8842c722bf4 | |
parent | 4b0cd28baf87a97c623bf25afcbeebc63a413344 (diff) |
iridium: ensure 9600 baudrate is used
-rw-r--r-- | plugins/mm-modem-iridium-gsm.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/plugins/mm-modem-iridium-gsm.c b/plugins/mm-modem-iridium-gsm.c index a3730a0f..66358d0c 100644 --- a/plugins/mm-modem-iridium-gsm.c +++ b/plugins/mm-modem-iridium-gsm.c @@ -37,9 +37,11 @@ * */ +static void modem_init (MMModem *modem_class); static void modem_gsm_network_init (MMModemGsmNetwork *gsm_network_class); G_DEFINE_TYPE_EXTENDED (MMModemIridiumGsm, mm_modem_iridium_gsm, MM_TYPE_GENERIC_GSM, 0, + G_IMPLEMENT_INTERFACE (MM_TYPE_MODEM, modem_init) G_IMPLEMENT_INTERFACE (MM_TYPE_MODEM_GSM_NETWORK, modem_gsm_network_init)) @@ -72,6 +74,37 @@ mm_modem_iridium_gsm_new (const char *device, NULL)); } +static gboolean +grab_port (MMModem *modem, + const char *subsys, + const char *name, + MMPortType suggested_type, + gpointer user_data, + GError **error) +{ + MMGenericGsm *gsm = MM_GENERIC_GSM (modem); + MMPortType ptype = MM_PORT_TYPE_IGNORED; + MMPort *port = NULL; + + if (suggested_type == MM_PORT_TYPE_UNKNOWN) { + if (!mm_generic_gsm_get_at_port (gsm, MM_PORT_TYPE_PRIMARY)) + ptype = MM_PORT_TYPE_PRIMARY; + else if (!mm_generic_gsm_get_at_port (gsm, MM_PORT_TYPE_SECONDARY)) + ptype = MM_PORT_TYPE_SECONDARY; + } else + ptype = suggested_type; + + port = mm_generic_gsm_grab_port (gsm, subsys, name, ptype, error); + if (port && MM_IS_AT_SERIAL_PORT (port)) { + /* Set 9600 baudrate by default */ + g_object_set (G_OBJECT (port), + MM_SERIAL_PORT_BAUD, 9600, + NULL); + } + + return !!port; +} + static void set_allowed_mode (MMGenericGsm *gsm, MMModemGsmAllowedMode mode, @@ -295,6 +328,12 @@ get_property (GObject *object, /*****************************************************************************/ static void +modem_init (MMModem *modem_class) +{ + modem_class->grab_port = grab_port; +} + +static void modem_gsm_network_init (MMModemGsmNetwork *network_class) { network_class->get_signal_quality = get_signal_quality; |