diff --git a/plugins/mm-modem-novatel-gsm.c b/plugins/mm-modem-novatel-gsm.c index 4a846269..c8c28d1f 100644 --- a/plugins/mm-modem-novatel-gsm.c +++ b/plugins/mm-modem-novatel-gsm.c @@ -48,13 +48,27 @@ mm_modem_novatel_gsm_new (const char *device, /* Modem class override functions */ /*****************************************************************************/ +static void +dmat_callback2 (MMSerialPort *port, + GString *response, + GError *error, + gpointer user_data) +{ + mm_serial_port_close (port); +} + static void dmat_callback (MMSerialPort *port, GString *response, GError *error, gpointer user_data) { - mm_serial_port_close (port); + if (error) { + /* Try it again */ + if (mm_serial_port_open (port, NULL)) + mm_serial_port_queue_command (port, "$NWDMAT=1", 2, dmat_callback2, NULL); + } else + mm_serial_port_close (port); } static gboolean