diff options
-rw-r--r-- | src/mm-iface-modem.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c index b3b287ff..05f6588d 100644 --- a/src/mm-iface-modem.c +++ b/src/mm-iface-modem.c @@ -754,6 +754,7 @@ mm_iface_modem_signal_quality_check (MMIfaceModem *self, typedef enum { DISABLING_STEP_FIRST, + DISABLING_STEP_FLASH_PORT, DISABLING_STEP_LAST } DisablingStep; @@ -826,6 +827,24 @@ mm_iface_modem_disable_finish (MMIfaceModem *self, } static void +interface_disabling_flash_done (MMSerialPort *port, + GError *error, + gpointer user_data) +{ + DisablingContext *ctx = user_data; + + if (error) { + g_simple_async_result_set_from_error (ctx->result, error); + disabling_context_complete_and_free (ctx); + return; + } + + /* Go on to next step */ + ctx->step++; + interface_disabling_step (ctx); +} + +static void interface_disabling_step (DisablingContext *ctx) { switch (ctx->step) { @@ -833,6 +852,19 @@ interface_disabling_step (DisablingContext *ctx) /* Fall down to next step */ ctx->step++; + case DISABLING_STEP_FLASH_PORT: + /* If primary port connected, flash port */ + if (mm_port_get_connected (MM_PORT (ctx->primary))) { + mm_serial_port_flash (MM_SERIAL_PORT (ctx->primary), + 100, + TRUE, + interface_disabling_flash_done, + ctx); + return; + } + /* Fall down to next step */ + ctx->step++; + case DISABLING_STEP_LAST: /* We are done without errors! */ g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); |