diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-02-18 15:34:57 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-02-18 15:41:26 +0100 |
commit | 7a58647af78295d059628c73c4dc2558131fea51 (patch) | |
tree | e8e6741010b5f18b6de41f0901459c557efcea39 /src | |
parent | 553bebe8255a78e1f9f7b559d7782f9ac87be443 (diff) |
broadband-bearer: fully reopen data port before flashing
When disconnecting the data port, first fully close and reopen the port before
flashing. This helps with some modems where the flashing mechanism doesn't
fully work, like this ZTE modem:
Before:
[1360325270.357678] [mm-bearer.c:690] mm_bearer_disconnect(): Disconnecting bearer '/org/freedesktop/ModemManager1/Bearer/0'
[1360325270.357796] [mm-iface-modem.c:1198] mm_iface_modem_update_state(): Modem /org/freedesktop/ModemManager1/Modem/1: state changed (connected -> disconnecting)
[1360325270.358503] [mm-broadband-bearer.c:1539] disconnect_3gpp(): Sending PDP context deactivation in secondary port...
[1360325270.358549] [mm-serial-port.c:927] mm_serial_port_open(): (ttyUSB4) device open count is 2 (open)
[1360325270.358633] [mm-at-serial-port.c:392] debug_log(): (ttyUSB4): --> 'AT+CGACT=0,2<CR>'
[1360325270.375131] [mm-at-serial-port.c:392] debug_log(): (ttyUSB4): <-- '<CR><LF>OK<CR><LF>'
[1360325270.375251] [mm-serial-port.c:967] mm_serial_port_close(): (ttyUSB7) device open count is 1 (close)
[1360325270.375282] [mm-serial-port.c:927] mm_serial_port_open(): (ttyUSB7) device open count is 2 (open)
[1360325270.375300] [mm-broadband-bearer.c:1497] cgact_secondary_ready(): Flash primary port...
[1360325270.375833] [mm-serial-port.c:967] mm_serial_port_close(): (ttyUSB4) device open count is 1 (close)
[1360325271.377539] [mm-broadband-bearer.c:1455] primary_flash_3gpp_ready(): PDP disconnection already sent in secondary port
[1360325271.377634] [mm-serial-port.c:967] mm_serial_port_close(): (ttyUSB7) device open count is 1 (close)
[1360325271.377680] [mm-port.c:149] mm_port_set_connected(): (ttyUSB7): port now disconnected
[1360325271.377721] [mm-bearer.c:623] disconnect_ready(): Disconnected bearer '/org/freedesktop/ModemManager1/Bearer/0'
[1360325286.415396] [mm-serial-port.c:927] mm_serial_port_open(): (ttyUSB7) device open count is 2 (open)
[1360325286.415510] [mm-at-serial-port.c:392] debug_log(): (ttyUSB7): --> 'AT+ZPAS?<CR>'
[1360325287.400589] [mm-broadband-modem.c:1717] modem_load_signal_quality(): loading signal quality...
[1360325287.400679] [mm-serial-port.c:927] mm_serial_port_open(): (ttyUSB7) device open count is 3 (open)
[1360325289.401873] [mm-iface-modem.c:762] access_technologies_check_ready(): Couldn't refresh access technologies: 'Serial command timed out'
[1360325289.401940] [mm-serial-port.c:967] mm_serial_port_close(): (ttyUSB7) device open count is 2 (close)
[1360325289.401998] [mm-at-serial-port.c:392] debug_log(): (ttyUSB7): --> 'AT+CIND?<CR>'
[1360325292.403162] [mm-serial-port.c:927] mm_serial_port_open(): (ttyUSB7) device open count is 3 (open)
[1360325292.403247] [mm-serial-port.c:967] mm_serial_port_close(): (ttyUSB7) device open count is 2 (close
...
After:
[1360326617.604527] [mm-bearer.c:690] mm_bearer_disconnect(): Disconnecting bearer '/org/freedesktop/ModemManager1/Bearer/0'
[1360326617.604622] [mm-iface-modem.c:1198] mm_iface_modem_update_state(): Modem /org/freedesktop/ModemManager1/Modem/0: state changed (connected -> disconnecting)
[1360326617.605006] [mm-broadband-bearer.c:1535] disconnect_3gpp(): Sending PDP context deactivation in secondary port...
[1360326617.605034] [mm-serial-port.c:929] mm_serial_port_open(): (ttyUSB4) device open count is 2 (open)
[1360326617.605088] [mm-at-serial-port.c:392] debug_log(): (ttyUSB4): --> 'AT+CGACT=0,2<CR>'
[1360326617.620075] [mm-at-serial-port.c:392] debug_log(): (ttyUSB4): <-- '<CR><LF>OK<CR><LF>'
[1360326617.620206] [mm-broadband-bearer.c:1493] cgact_secondary_ready(): Flash primary port...
[1360326617.620241] [mm-serial-port.c:1334] mm_serial_port_flash(): (ttyUSB7) reopening before flash (2)
[1360326617.620265] [mm-serial-port.c:969] mm_serial_port_close(): (ttyUSB7) device open count is 1 (close)
[1360326617.620286] [mm-serial-port.c:969] mm_serial_port_close(): (ttyUSB7) device open count is 0 (close)
[1360326617.620320] [mm-serial-port.c:985] mm_serial_port_close(): (ttyUSB7) closing serial port...
[1360326617.620356] [mm-port.c:149] mm_port_set_connected(): (ttyUSB7): port now disconnected
[1360326617.621355] [mm-serial-port.c:1017] mm_serial_port_close(): (ttyUSB7) serial port closed
[1360326617.621403] [mm-serial-port.c:860] mm_serial_port_open(): (ttyUSB7) opening serial port...
[1360326617.622836] [mm-serial-port.c:417] real_config_fd(): (ttyUSB7): port attributes not fully set
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-broadband-bearer.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/mm-broadband-bearer.c b/src/mm-broadband-bearer.c index f300baa4..61dedbd9 100644 --- a/src/mm-broadband-bearer.c +++ b/src/mm-broadband-bearer.c @@ -1304,6 +1304,7 @@ disconnect_cdma (MMBroadbandBearer *self, gpointer user_data) { DetailedDisconnectContext *ctx; + GError *error = NULL; g_assert (primary != NULL); @@ -1318,6 +1319,13 @@ disconnect_cdma (MMBroadbandBearer *self, callback, user_data); + /* Fully reopen the port before flashing */ + mm_dbg ("Reopening primary port..."); + if (!mm_serial_port_reopen (MM_SERIAL_PORT (ctx->primary), &error)) { + mm_warn ("Disconnecting CDMA: %s", error->message); + g_error_free (error); + } + /* Just flash the data port */ mm_serial_port_flash (MM_SERIAL_PORT (ctx->data), 1000, @@ -1404,6 +1412,15 @@ data_flash_3gpp_ready (MMSerialPort *data, static void data_flash_3gpp (DetailedDisconnectContext *ctx) { + GError *error = NULL; + + /* Fully reopen the port before flashing */ + mm_dbg ("Reopening data port..."); + if (!mm_serial_port_reopen (MM_SERIAL_PORT (ctx->data), &error)) { + mm_warn ("Disconnecting 3GPP: %s", error->message); + g_error_free (error); + } + mm_dbg ("Flash data port..."); mm_serial_port_flash (MM_SERIAL_PORT (ctx->data), 1000, |