broadband-modem-mtk-legacy: don't assume primary port always exists

This commit is contained in:
Aleksander Morgado
2024-04-12 01:17:14 +00:00
committed by Dan Williams
parent 62a81425ec
commit 44adf5cd40
+46 -24
View File
@@ -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);
}
/*****************************************************************************/