broadband-modem-mtk-legacy: don't assume primary port always exists
This commit is contained in:
committed by
Dan Williams
parent
62a81425ec
commit
44adf5cd40
@@ -689,17 +689,21 @@ modem_3gpp_cleanup_unsolicited_events (MMIfaceModem3gpp *self,
|
||||
g_task_new (self, NULL, callback, user_data));
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static const MMBaseModemAtCommand unsolicited_enable_sequence[] = {
|
||||
/* enable signal URC */
|
||||
{ "+ECSQ=2", 5, FALSE, NULL },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static const MMBaseModemAtCommand unsolicited_disable_sequence[] = {
|
||||
/* disable signal URC */
|
||||
{ "+ECSQ=0" , 5, FALSE, NULL },
|
||||
{ NULL }
|
||||
};
|
||||
static gboolean
|
||||
modem_3gpp_enable_unsolicited_events_finish (MMIfaceModem3gpp *self,
|
||||
GAsyncResult *res,
|
||||
GError **error)
|
||||
{
|
||||
return g_task_propagate_boolean (G_TASK (res), error);
|
||||
}
|
||||
|
||||
static void
|
||||
own_enable_unsolicited_events_ready (MMBaseModem *self,
|
||||
@@ -722,7 +726,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);
|
||||
@@ -730,10 +735,17 @@ parent_enable_unsolicited_events_ready (MMIfaceModem3gpp *self,
|
||||
return;
|
||||
}
|
||||
|
||||
/* Our own enable now */
|
||||
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;
|
||||
}
|
||||
|
||||
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,NULL,NULL,
|
||||
(GAsyncReadyCallback)own_enable_unsolicited_events_ready,
|
||||
@@ -752,10 +764,18 @@ modem_3gpp_enable_unsolicited_events (MMIfaceModem3gpp *self,
|
||||
g_task_new (self, NULL, callback, user_data));
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static const MMBaseModemAtCommand unsolicited_disable_sequence[] = {
|
||||
/* disable signal URC */
|
||||
{ "+ECSQ=0" , 5, FALSE, NULL },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static gboolean
|
||||
modem_3gpp_enable_unsolicited_events_finish (MMIfaceModem3gpp *self,
|
||||
GAsyncResult *res,
|
||||
GError **error)
|
||||
modem_3gpp_disable_unsolicited_events_finish (MMIfaceModem3gpp *self,
|
||||
GAsyncResult *res,
|
||||
GError **error)
|
||||
{
|
||||
return g_task_propagate_boolean (G_TASK (res), error);
|
||||
}
|
||||
@@ -771,7 +791,6 @@ parent_disable_unsolicited_events_ready (MMIfaceModem3gpp *self,
|
||||
g_task_return_error (task, error);
|
||||
else
|
||||
g_task_return_boolean (task, TRUE);
|
||||
|
||||
g_object_unref (task);
|
||||
}
|
||||
|
||||
@@ -789,7 +808,6 @@ own_disable_unsolicited_events_ready (MMBaseModem *self,
|
||||
return;
|
||||
}
|
||||
|
||||
/* Next, chain up parent's disable */
|
||||
iface_modem_3gpp_parent->disable_unsolicited_events (
|
||||
MM_IFACE_MODEM_3GPP (self),
|
||||
(GAsyncReadyCallback)parent_disable_unsolicited_events_ready,
|
||||
@@ -801,22 +819,26 @@ modem_3gpp_disable_unsolicited_events (MMIfaceModem3gpp *self,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
/* Our own disable first */
|
||||
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;
|
||||
}
|
||||
|
||||
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, NULL, NULL,
|
||||
(GAsyncReadyCallback)own_disable_unsolicited_events_ready,
|
||||
g_task_new (self, NULL, callback, user_data));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
modem_3gpp_disable_unsolicited_events_finish (MMIfaceModem3gpp *self,
|
||||
GAsyncResult *res,
|
||||
GError **error)
|
||||
{
|
||||
return g_task_propagate_boolean (G_TASK (res), error);
|
||||
task);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
Reference in New Issue
Block a user