diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/option/mm-broadband-modem-hso.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/plugins/option/mm-broadband-modem-hso.c b/src/plugins/option/mm-broadband-modem-hso.c index 308991b5..02cea99a 100644 --- a/src/plugins/option/mm-broadband-modem-hso.c +++ b/src/plugins/option/mm-broadband-modem-hso.c @@ -513,9 +513,19 @@ disable_location_gathering (MMIfaceModemLocation *self, } if (stop_gps) { + MMPortSerialAt *gps_control; + /* We enable continuous GPS fixes with AT_OGPS=0 */ + gps_control = mm_base_modem_peek_port_gps_control (MM_BASE_MODEM (self)); + if (!gps_control) { + g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "Cannot stop GPS: no control port"); + g_object_unref (task); + return; + } + mm_base_modem_at_command_full (MM_BASE_MODEM (self), - mm_base_modem_peek_port_gps_control (MM_BASE_MODEM (self)), + gps_control, "_OGPS=0", 3, FALSE, @@ -617,9 +627,19 @@ parent_enable_location_gathering_ready (MMIfaceModemLocation *_self, } if (start_gps) { + MMPortSerialAt *gps_control; + /* We enable continuous GPS fixes with AT_OGPS=2 */ + gps_control = mm_base_modem_peek_port_gps_control (MM_BASE_MODEM (self)); + if (!gps_control) { + g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "Cannot start GPS: no control port"); + g_object_unref (task); + return; + } + mm_base_modem_at_command_full (MM_BASE_MODEM (self), - mm_base_modem_peek_port_gps_control (MM_BASE_MODEM (self)), + gps_control, "_OGPS=2", 3, FALSE, |