aboutsummaryrefslogtreecommitdiff
path: root/plugins/nokia/mm-broadband-modem-nokia.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/nokia/mm-broadband-modem-nokia.c')
-rw-r--r--plugins/nokia/mm-broadband-modem-nokia.c77
1 files changed, 34 insertions, 43 deletions
diff --git a/plugins/nokia/mm-broadband-modem-nokia.c b/plugins/nokia/mm-broadband-modem-nokia.c
index c169e1b4..6172c7e2 100644
--- a/plugins/nokia/mm-broadband-modem-nokia.c
+++ b/plugins/nokia/mm-broadband-modem-nokia.c
@@ -103,45 +103,6 @@ modem_load_supported_modes (MMIfaceModem *self,
}
/*****************************************************************************/
-/* Modem initialization (Modem interface) */
-
-static gboolean
-modem_init_finish (MMIfaceModem *self,
- GAsyncResult *res,
- GError **error)
-{
- return !mm_base_modem_at_sequence_finish (MM_BASE_MODEM (self), res, NULL, error);
-}
-
-static const MMBaseModemAtCommand modem_init_sequence[] = {
- /* Also, when initializing a Nokia phone, first enable the echo,
- * and then disable it, so that we get it properly disabled.
- */
- { "E1 E0 V1", 3, FALSE, NULL },
-
- /* Setup errors */
- { "+CMEE=1", 3, FALSE, NULL },
-
- /* Additional OPTIONAL initialization */
- { "X4 &C1", 3, FALSE, NULL },
-
- { NULL }
-};
-
-static void
-modem_init (MMIfaceModem *self,
- GAsyncReadyCallback callback,
- gpointer user_data)
-{
- mm_base_modem_at_sequence (MM_BASE_MODEM (self),
- modem_init_sequence,
- NULL, /* response_processor_context */
- NULL, /* response_processor_context_free */
- callback,
- user_data);
-}
-
-/*****************************************************************************/
/* Initializing the modem (during first enabling) */
typedef struct {
@@ -236,6 +197,39 @@ enabling_modem_init (MMBroadbandModem *self,
}
/*****************************************************************************/
+/* Setup ports (Broadband modem class) */
+
+static const gchar *primary_init_sequence[] = {
+ /* When initializing a Nokia port, first enable the echo,
+ * and then disable it, so that we get it properly disabled. */
+ "E1 E0",
+ /* Get word responses */
+ "V1",
+ /* Extended numeric codes */
+ "+CMEE=1",
+ /* Report all call status */
+ "X4",
+ /* Assert DCD when carrier detected */
+ "&C1",
+ NULL
+};
+
+static void
+setup_ports (MMBroadbandModem *self)
+{
+ MMAtSerialPort *primary;
+
+ /* Call parent's setup ports first always */
+ MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_nokia_parent_class)->setup_ports (self);
+
+ primary = mm_base_modem_peek_port_primary (MM_BASE_MODEM (self));
+
+ g_object_set (primary,
+ MM_AT_SERIAL_PORT_INIT_SEQUENCE, primary_init_sequence,
+ NULL);
+}
+
+/*****************************************************************************/
MMBroadbandModemNokia *
mm_broadband_modem_nokia_new (const gchar *device,
@@ -269,10 +263,6 @@ iface_modem_messaging_init (MMIfaceModemMessaging *iface)
static void
iface_modem_init (MMIfaceModem *iface)
{
- /* Setup custom modem init */
- iface->modem_init = modem_init;
- iface->modem_init_finish = modem_init_finish;
-
/* Create Nokia-specific SIM*/
iface->create_sim = create_sim;
iface->create_sim_finish = create_sim_finish;
@@ -302,6 +292,7 @@ mm_broadband_modem_nokia_class_init (MMBroadbandModemNokiaClass *klass)
{
MMBroadbandModemClass *broadband_modem_class = MM_BROADBAND_MODEM_CLASS (klass);
+ broadband_modem_class->setup_ports = setup_ports;
broadband_modem_class->enabling_modem_init = enabling_modem_init;
broadband_modem_class->enabling_modem_init_finish = enabling_modem_init_finish;
}