aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/mbm/mm-broadband-modem-mbm.c84
1 files changed, 53 insertions, 31 deletions
diff --git a/src/plugins/mbm/mm-broadband-modem-mbm.c b/src/plugins/mbm/mm-broadband-modem-mbm.c
index cdc2b255..701a86d1 100644
--- a/src/plugins/mbm/mm-broadband-modem-mbm.c
+++ b/src/plugins/mbm/mm-broadband-modem-mbm.c
@@ -415,11 +415,20 @@ static const MMBaseModemAtCommand enabling_modem_init_sequence[] = {
static void
run_enabling_init_sequence (GTask *task)
{
- MMBaseModem *self;
+ MMBaseModem *self;
+ MMPortSerialAt *primary;
self = g_task_get_source_object (task);
+ primary = mm_base_modem_peek_port_primary (self);
+ if (!primary) {
+ g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
+ "Failed to run init sequence: primary port missing");
+ g_object_unref (task);
+ return;
+ }
+
mm_base_modem_at_sequence_full (self,
- mm_base_modem_peek_port_primary (self),
+ primary,
enabling_modem_init_sequence,
NULL, /* response_processor_context */
NULL, /* response_processor_context_free */
@@ -952,7 +961,8 @@ parent_enable_unsolicited_events_ready (MMIfaceModem3gpp *self,
GAsyncResult *res,
GTask *task)
{
- GError *error = NULL;
+ MMPortSerialAt *primary;
+ GError *error = NULL;
if (!iface_modem_3gpp_parent->enable_unsolicited_events_finish (self, res, &error)) {
g_task_return_error (task, error);
@@ -960,10 +970,18 @@ parent_enable_unsolicited_events_ready (MMIfaceModem3gpp *self,
return;
}
+ primary = mm_base_modem_peek_port_primary (MM_BASE_MODEM (self));
+ if (!primary) {
+ g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
+ "Couldn't enable unsolicited events: no primary port");
+ g_object_unref (task);
+ return;
+ }
+
/* Our own enable now */
mm_base_modem_at_sequence_full (
MM_BASE_MODEM (self),
- mm_base_modem_peek_port_primary (MM_BASE_MODEM (self)),
+ primary,
unsolicited_enable_sequence,
NULL, /* response_processor_context */
NULL, /* response_processor_context_free */
@@ -1042,16 +1060,29 @@ modem_3gpp_disable_unsolicited_events (MMIfaceModem3gpp *self,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ MMPortSerialAt *primary;
+ GTask *task;
+
+ task = g_task_new (self, NULL, callback, user_data);
+
+ primary = mm_base_modem_peek_port_primary (MM_BASE_MODEM (self));
+ if (!primary) {
+ g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_FAILED,
+ "Couldn't disable unsolicited events: no primary port");
+ g_object_unref (task);
+ return;
+ }
+
/* Our own disable first */
mm_base_modem_at_sequence_full (
MM_BASE_MODEM (self),
- mm_base_modem_peek_port_primary (MM_BASE_MODEM (self)),
+ primary,
unsolicited_disable_sequence,
NULL, /* response_processor_context */
NULL, /* response_processor_context_free */
NULL, /* cancellable */
(GAsyncReadyCallback)own_disable_unsolicited_events_ready,
- g_task_new (self, NULL, callback, user_data));
+ task);
}
/*****************************************************************************/
@@ -1140,7 +1171,7 @@ gps_disabled_ready (MMBaseModem *self,
ctx = g_task_get_task_data (task);
- mm_base_modem_at_command_full_finish (self, res, &error);
+ mm_base_modem_at_command_finish (self, res, &error);
/* Only use the GPS port in NMEA/RAW setups */
if (ctx->source & (MM_MODEM_LOCATION_SOURCE_GPS_NMEA |
@@ -1189,15 +1220,12 @@ disable_location_gathering (MMIfaceModemLocation *_self,
}
if (stop_gps) {
- mm_base_modem_at_command_full (MM_BASE_MODEM (_self),
- mm_base_modem_peek_port_primary (MM_BASE_MODEM (_self)),
- "AT*E2GPSCTL=0",
- 3,
- FALSE,
- FALSE, /* raw */
- NULL, /* cancellable */
- (GAsyncReadyCallback)gps_disabled_ready,
- task);
+ mm_base_modem_at_command (MM_BASE_MODEM (_self),
+ "AT*E2GPSCTL=0",
+ 3,
+ FALSE,
+ (GAsyncReadyCallback)gps_disabled_ready,
+ task);
return;
}
@@ -1226,7 +1254,7 @@ gps_enabled_ready (MMBaseModem *self,
GError *error = NULL;
MMPortSerialGps *gps_port;
- if (!mm_base_modem_at_command_full_finish (self, res, &error)) {
+ if (!mm_base_modem_at_command_finish (self, res, &error)) {
g_task_return_error (task, error);
g_object_unref (task);
return;
@@ -1308,15 +1336,12 @@ parent_enable_location_gathering_ready (MMIfaceModemLocation *_self,
}
if (start_gps) {
- mm_base_modem_at_command_full (MM_BASE_MODEM (self),
- mm_base_modem_peek_port_primary (MM_BASE_MODEM (self)),
- "AT*E2GPSCTL=1," MBM_GPS_NMEA_INTERVAL ",0",
- 3,
- FALSE,
- FALSE, /* raw */
- NULL, /* cancellable */
- (GAsyncReadyCallback)gps_enabled_ready,
- task);
+ mm_base_modem_at_command (MM_BASE_MODEM (self),
+ "AT*E2GPSCTL=1," MBM_GPS_NMEA_INTERVAL ",0",
+ 3,
+ FALSE,
+ (GAsyncReadyCallback)gps_enabled_ready,
+ task);
return;
}
@@ -1433,11 +1458,8 @@ setup_ports (MMBroadbandModem *_self)
if (!(self->priv->enabled_sources & (MM_MODEM_LOCATION_SOURCE_GPS_NMEA |
MM_MODEM_LOCATION_SOURCE_GPS_RAW |
MM_MODEM_LOCATION_SOURCE_GPS_UNMANAGED))) {
- mm_base_modem_at_command_full (MM_BASE_MODEM (self),
- mm_base_modem_peek_port_primary (MM_BASE_MODEM (self)),
- "AT*E2GPSCTL=0",
- 3, FALSE, FALSE, NULL, NULL, NULL);
-
+ /* make sure GPS is stopped incase it was left enabled */
+ mm_base_modem_at_command (MM_BASE_MODEM (self), "AT*E2GPSCTL=0", 3, FALSE, NULL, NULL);
/* Add handler for the NMEA traces */
mm_port_serial_gps_add_trace_handler (gps_data_port,
(MMPortSerialGpsTraceFn)gps_trace_received,