broadband-modem-novatel: clean up access technology reporting
Instead of mixing the QCDM Novatel Snapshot code directly into the access technology checking code, split it out with its own async result. At the same time, make sure to open the QCDM port when it's needed, instead of assuming its already open. Since it won't always be.
This commit is contained in:
@@ -397,107 +397,84 @@ set_current_modes (MMIfaceModem *self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* Load access technologies (Modem interface) */
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
guint hdr_revision; /* QCDM_HDR_REV_x */
|
|
||||||
MMModemAccessTechnology generic_act;
|
|
||||||
guint mask;
|
|
||||||
} SnapshotResult;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
MMBaseModem *self;
|
|
||||||
MMPortSerialQcdm *port;
|
|
||||||
GSimpleAsyncResult *simple;
|
|
||||||
MMModemAccessTechnology generic_act;
|
|
||||||
guint mask;
|
|
||||||
} SnapshotContext;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
snapshot_result_complete (GSimpleAsyncResult *simple,
|
close_and_unref_port (MMPortSerialQcdm *port)
|
||||||
guint hdr_revision,
|
|
||||||
MMModemAccessTechnology generic_act,
|
|
||||||
guint mask)
|
|
||||||
{
|
{
|
||||||
SnapshotResult *r;
|
mm_port_serial_close (MM_PORT_SERIAL (port));
|
||||||
|
g_object_unref (port);
|
||||||
|
}
|
||||||
|
|
||||||
r = g_new0 (SnapshotResult, 1);
|
static gboolean
|
||||||
r->hdr_revision = hdr_revision;
|
get_evdo_version_finish (MMBaseModem *self,
|
||||||
r->generic_act = generic_act;
|
GAsyncResult *res,
|
||||||
r->mask = mask;
|
guint *hdr_revision, /* QCDM_HDR_REV_* */
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
gssize result;
|
||||||
|
|
||||||
g_simple_async_result_set_op_res_gpointer (simple, r, g_free);
|
result = g_task_propagate_int (G_TASK (res), error);
|
||||||
g_simple_async_result_complete (simple);
|
if (result < 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
*hdr_revision = (guint8) result;
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
snapshot_result_complete_simple (GSimpleAsyncResult *simple,
|
nw_snapshot_old_ready (MMPortSerialQcdm *port,
|
||||||
MMModemAccessTechnology generic_act,
|
GAsyncResult *res,
|
||||||
guint mask)
|
GTask *task)
|
||||||
{
|
|
||||||
snapshot_result_complete (simple, QCDM_HDR_REV_UNKNOWN, generic_act, mask);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
snapshot_context_complete_and_free (SnapshotContext *ctx, guint hdr_revision)
|
|
||||||
{
|
|
||||||
snapshot_result_complete (ctx->simple,
|
|
||||||
hdr_revision,
|
|
||||||
ctx->generic_act,
|
|
||||||
ctx->mask);
|
|
||||||
g_object_unref (ctx->simple);
|
|
||||||
g_object_unref (ctx->self);
|
|
||||||
g_object_unref (ctx->port);
|
|
||||||
g_free (ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
nw_snapshot_old_cb (MMPortSerialQcdm *port,
|
|
||||||
GAsyncResult *res,
|
|
||||||
SnapshotContext *ctx)
|
|
||||||
{
|
{
|
||||||
QcdmResult *result;
|
QcdmResult *result;
|
||||||
guint8 hdr_revision = QCDM_HDR_REV_UNKNOWN;
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
GByteArray *response;
|
GByteArray *response;
|
||||||
|
guint8 hdr_revision = QCDM_HDR_REV_UNKNOWN;
|
||||||
|
|
||||||
response = mm_port_serial_qcdm_command_finish (port, res, &error);
|
response = mm_port_serial_qcdm_command_finish (port, res, &error);
|
||||||
if (error) {
|
if (error) {
|
||||||
/* Just ignore the error and complete with the input info */
|
/* Just ignore the error and complete with the input info */
|
||||||
mm_dbg ("Couldn't run QCDM Novatel Modem MSM6500 snapshot: '%s'", error->message);
|
mm_dbg ("Couldn't run QCDM Novatel Modem MSM6500 snapshot: '%s'", error->message);
|
||||||
g_error_free (error);
|
g_task_return_error (task, error);
|
||||||
snapshot_context_complete_and_free (ctx, QCDM_HDR_REV_UNKNOWN);
|
g_object_unref (task);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Parse the response */
|
/* Parse the response */
|
||||||
result = qcdm_cmd_nw_subsys_modem_snapshot_cdma_result ((const gchar *) response->data, response->len, NULL);
|
result = qcdm_cmd_nw_subsys_modem_snapshot_cdma_result ((const gchar *) response->data, response->len, NULL);
|
||||||
g_byte_array_unref (response);
|
g_byte_array_unref (response);
|
||||||
if (result) {
|
if (!result) {
|
||||||
qcdm_result_get_u8 (result, QCDM_CMD_NW_SUBSYS_MODEM_SNAPSHOT_CDMA_ITEM_HDR_REV, &hdr_revision);
|
|
||||||
qcdm_result_unref (result);
|
qcdm_result_unref (result);
|
||||||
} else
|
mm_dbg ("Failed to get QCDM Novatel Modem MSM6500 snapshot: %s", error->message);
|
||||||
mm_dbg ("Failed to get QCDM Novatel Modem MSM6500 snapshot.");
|
g_task_return_error (task, error);
|
||||||
|
g_object_unref (task);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
snapshot_context_complete_and_free (ctx, hdr_revision);
|
/* Success */
|
||||||
|
qcdm_result_get_u8 (result, QCDM_CMD_NW_SUBSYS_MODEM_SNAPSHOT_CDMA_ITEM_HDR_REV, &hdr_revision);
|
||||||
|
qcdm_result_unref (result);
|
||||||
|
|
||||||
|
g_task_return_int (task, (gint) hdr_revision);
|
||||||
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
nw_snapshot_new_cb (MMPortSerialQcdm *port,
|
nw_snapshot_new_ready (MMPortSerialQcdm *port,
|
||||||
GAsyncResult *res,
|
GAsyncResult *res,
|
||||||
SnapshotContext *ctx)
|
GTask *task)
|
||||||
{
|
{
|
||||||
QcdmResult *result;
|
QcdmResult *result;
|
||||||
GByteArray *nwsnap;
|
GByteArray *nwsnap;
|
||||||
guint8 hdr_revision = QCDM_HDR_REV_UNKNOWN;
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
GByteArray *response;
|
GByteArray *response;
|
||||||
|
guint8 hdr_revision = QCDM_HDR_REV_UNKNOWN;
|
||||||
|
|
||||||
response = mm_port_serial_qcdm_command_finish (port, res, &error);
|
response = mm_port_serial_qcdm_command_finish (port, res, &error);
|
||||||
if (error) {
|
if (error) {
|
||||||
mm_dbg ("Couldn't run QCDM Novatel Modem MSM6800 snapshot: '%s'", error->message);
|
mm_dbg ("Couldn't run QCDM Novatel Modem MSM6800 snapshot: '%s'", error->message);
|
||||||
g_error_free (error);
|
g_task_return_error (task, error);
|
||||||
snapshot_context_complete_and_free (ctx, QCDM_HDR_REV_UNKNOWN);
|
g_object_unref (task);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -505,9 +482,12 @@ nw_snapshot_new_cb (MMPortSerialQcdm *port,
|
|||||||
result = qcdm_cmd_nw_subsys_modem_snapshot_cdma_result ((const gchar *) response->data, response->len, NULL);
|
result = qcdm_cmd_nw_subsys_modem_snapshot_cdma_result ((const gchar *) response->data, response->len, NULL);
|
||||||
g_byte_array_unref (response);
|
g_byte_array_unref (response);
|
||||||
if (result) {
|
if (result) {
|
||||||
|
/* Success */
|
||||||
qcdm_result_get_u8 (result, QCDM_CMD_NW_SUBSYS_MODEM_SNAPSHOT_CDMA_ITEM_HDR_REV, &hdr_revision);
|
qcdm_result_get_u8 (result, QCDM_CMD_NW_SUBSYS_MODEM_SNAPSHOT_CDMA_ITEM_HDR_REV, &hdr_revision);
|
||||||
qcdm_result_unref (result);
|
qcdm_result_unref (result);
|
||||||
snapshot_context_complete_and_free (ctx, hdr_revision);
|
|
||||||
|
g_task_return_int (task, (gint) hdr_revision);
|
||||||
|
g_object_unref (task);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -521,32 +501,40 @@ nw_snapshot_new_cb (MMPortSerialQcdm *port,
|
|||||||
nwsnap,
|
nwsnap,
|
||||||
3,
|
3,
|
||||||
NULL,
|
NULL,
|
||||||
(GAsyncReadyCallback)nw_snapshot_old_cb,
|
(GAsyncReadyCallback)nw_snapshot_old_ready,
|
||||||
ctx);
|
task);
|
||||||
g_byte_array_unref (nwsnap);
|
g_byte_array_unref (nwsnap);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static void
|
||||||
get_nw_modem_snapshot (MMBaseModem *self,
|
get_evdo_version (MMBaseModem *self,
|
||||||
GSimpleAsyncResult *simple,
|
GAsyncReadyCallback callback,
|
||||||
MMModemAccessTechnology generic_act,
|
gpointer user_data)
|
||||||
guint mask)
|
|
||||||
{
|
{
|
||||||
SnapshotContext *ctx;
|
GError *error = NULL;
|
||||||
GByteArray *nwsnap;
|
GByteArray *nwsnap;
|
||||||
|
GTask *task;
|
||||||
MMPortSerialQcdm *port;
|
MMPortSerialQcdm *port;
|
||||||
|
|
||||||
port = mm_base_modem_peek_port_qcdm (self);
|
task = g_task_new (self, NULL, callback, user_data);
|
||||||
if (!port)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
/* Setup context */
|
port = mm_base_modem_get_port_qcdm (self);
|
||||||
ctx = g_new0 (SnapshotContext, 1);
|
if (!port) {
|
||||||
ctx->self = g_object_ref (self);
|
error = g_error_new (MM_CORE_ERROR,
|
||||||
ctx->port = g_object_ref (port);
|
MM_CORE_ERROR_FAILED,
|
||||||
ctx->simple = simple;
|
"No available QCDM port.");
|
||||||
ctx->generic_act = generic_act;
|
g_task_return_error (task, error);
|
||||||
ctx->mask = mask;
|
g_object_unref (task);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
g_task_set_task_data (task, port, (GDestroyNotify) close_and_unref_port);
|
||||||
|
|
||||||
|
if (!mm_port_serial_open (MM_PORT_SERIAL (port), &error)) {
|
||||||
|
g_prefix_error (&error, "Couldn't open QCDM port: ");
|
||||||
|
g_task_return_error (task, error);
|
||||||
|
g_object_unref (task);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Try MSM6800 first since newer cards use that */
|
/* Try MSM6800 first since newer cards use that */
|
||||||
nwsnap = g_byte_array_sized_new (25);
|
nwsnap = g_byte_array_sized_new (25);
|
||||||
@@ -556,12 +544,20 @@ get_nw_modem_snapshot (MMBaseModem *self,
|
|||||||
nwsnap,
|
nwsnap,
|
||||||
3,
|
3,
|
||||||
NULL,
|
NULL,
|
||||||
(GAsyncReadyCallback)nw_snapshot_new_cb,
|
(GAsyncReadyCallback)nw_snapshot_new_ready,
|
||||||
ctx);
|
task);
|
||||||
g_byte_array_unref (nwsnap);
|
g_byte_array_unref (nwsnap);
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* Load access technologies (Modem interface) */
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
MMModemAccessTechnology act;
|
||||||
|
guint mask;
|
||||||
|
guint hdr_revision; /* QCDM_HDR_REV_* */
|
||||||
|
} AccessTechContext;
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
modem_load_access_technologies_finish (MMIfaceModem *self,
|
modem_load_access_technologies_finish (MMIfaceModem *self,
|
||||||
GAsyncResult *res,
|
GAsyncResult *res,
|
||||||
@@ -569,48 +565,45 @@ modem_load_access_technologies_finish (MMIfaceModem *self,
|
|||||||
guint *mask,
|
guint *mask,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
SnapshotResult *r;
|
GTask *task = G_TASK (res);
|
||||||
MMModemAccessTechnology act;
|
AccessTechContext *ctx = g_task_get_task_data (task);
|
||||||
|
|
||||||
if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error))
|
if (!g_task_propagate_boolean (task, error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
r = g_simple_async_result_get_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (res));
|
/* Update access technology with specific EVDO revision from QCDM if we have them */
|
||||||
|
if (ctx->act & MM_IFACE_MODEM_CDMA_ALL_EVDO_ACCESS_TECHNOLOGIES_MASK) {
|
||||||
act = r->generic_act;
|
if (ctx->hdr_revision == QCDM_HDR_REV_0) {
|
||||||
if (act & MM_IFACE_MODEM_CDMA_ALL_EVDO_ACCESS_TECHNOLOGIES_MASK) {
|
|
||||||
/* Update access technology with specific EVDO revision from QCDM */
|
|
||||||
if (r->hdr_revision == QCDM_HDR_REV_0) {
|
|
||||||
mm_dbg ("Novatel Modem Snapshot EVDO revision: 0");
|
mm_dbg ("Novatel Modem Snapshot EVDO revision: 0");
|
||||||
act &= ~MM_IFACE_MODEM_CDMA_ALL_EVDO_ACCESS_TECHNOLOGIES_MASK;
|
ctx->act &= ~MM_IFACE_MODEM_CDMA_ALL_EVDO_ACCESS_TECHNOLOGIES_MASK;
|
||||||
act |= MM_MODEM_ACCESS_TECHNOLOGY_EVDO0;
|
ctx->act |= MM_MODEM_ACCESS_TECHNOLOGY_EVDO0;
|
||||||
} else if (r->hdr_revision == QCDM_HDR_REV_A) {
|
} else if (ctx->hdr_revision == QCDM_HDR_REV_A) {
|
||||||
mm_dbg ("Novatel Modem Snapshot EVDO revision: A");
|
mm_dbg ("Novatel Modem Snapshot EVDO revision: A");
|
||||||
act &= ~MM_IFACE_MODEM_CDMA_ALL_EVDO_ACCESS_TECHNOLOGIES_MASK;
|
ctx->act &= ~MM_IFACE_MODEM_CDMA_ALL_EVDO_ACCESS_TECHNOLOGIES_MASK;
|
||||||
act |= MM_MODEM_ACCESS_TECHNOLOGY_EVDOA;
|
ctx->act |= MM_MODEM_ACCESS_TECHNOLOGY_EVDOA;
|
||||||
} else
|
} else
|
||||||
mm_dbg ("Novatel Modem Snapshot EVDO revision: %d (unknown)", r->hdr_revision);
|
mm_dbg ("Novatel Modem Snapshot EVDO revision: %d (unknown)", ctx->hdr_revision);
|
||||||
}
|
}
|
||||||
|
|
||||||
*access_technologies = act;
|
*access_technologies = ctx->act;
|
||||||
*mask = r->mask;
|
*mask = ctx->mask;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cnti_set_ready (MMBaseModem *self,
|
cnti_set_ready (MMBaseModem *self,
|
||||||
GAsyncResult *res,
|
GAsyncResult *res,
|
||||||
GSimpleAsyncResult *simple)
|
GTask *task)
|
||||||
{
|
{
|
||||||
|
AccessTechContext *ctx = g_task_get_task_data (task);
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
const gchar *response;
|
const gchar *response;
|
||||||
const gchar *p;
|
const gchar *p;
|
||||||
|
|
||||||
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error);
|
response = mm_base_modem_at_command_finish (MM_BASE_MODEM (self), res, &error);
|
||||||
if (!response) {
|
if (!response) {
|
||||||
g_simple_async_result_take_error (simple, error);
|
g_task_return_error (task, error);
|
||||||
g_simple_async_result_complete (simple);
|
g_object_unref (task);
|
||||||
g_object_unref (simple);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -621,55 +614,64 @@ cnti_set_ready (MMBaseModem *self,
|
|||||||
MM_CORE_ERROR_FAILED,
|
MM_CORE_ERROR_FAILED,
|
||||||
"Couldn't parse $CNTI result '%s'",
|
"Couldn't parse $CNTI result '%s'",
|
||||||
response);
|
response);
|
||||||
g_simple_async_result_take_error (simple, error);
|
g_task_return_error (task, error);
|
||||||
g_simple_async_result_complete (simple);
|
g_object_unref (task);
|
||||||
g_object_unref (simple);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
snapshot_result_complete_simple (simple,
|
ctx->act = mm_string_to_access_tech (p);
|
||||||
mm_string_to_access_tech (p),
|
ctx->mask = MM_IFACE_MODEM_3GPP_ALL_ACCESS_TECHNOLOGIES_MASK;
|
||||||
MM_IFACE_MODEM_3GPP_ALL_ACCESS_TECHNOLOGIES_MASK);
|
g_task_return_boolean (task, TRUE);
|
||||||
g_object_unref (simple);
|
g_object_unref (task);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
evdo_version_ready (MMBaseModem *self,
|
||||||
|
GAsyncResult *res,
|
||||||
|
GTask *task)
|
||||||
|
{
|
||||||
|
GError *error = NULL;
|
||||||
|
AccessTechContext *ctx = g_task_get_task_data (task);
|
||||||
|
|
||||||
|
if (!get_evdo_version_finish (self, res, &ctx->hdr_revision, &error)) {
|
||||||
|
g_task_return_error (task, error);
|
||||||
|
g_object_unref (task);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_task_return_boolean (task, TRUE);
|
||||||
|
g_object_unref (task);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parent_load_access_technologies_ready (MMIfaceModem *self,
|
parent_load_access_technologies_ready (MMIfaceModem *self,
|
||||||
GAsyncResult *res,
|
GAsyncResult *res,
|
||||||
GSimpleAsyncResult *simple)
|
GTask *task)
|
||||||
{
|
{
|
||||||
MMModemAccessTechnology act = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN;
|
|
||||||
guint mask = 0;
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
AccessTechContext *ctx = g_task_get_task_data (task);
|
||||||
|
|
||||||
if (!iface_modem_parent->load_access_technologies_finish (self,
|
if (!iface_modem_parent->load_access_technologies_finish (self,
|
||||||
res,
|
res,
|
||||||
&act,
|
&ctx->act,
|
||||||
&mask,
|
&ctx->mask,
|
||||||
&error)) {
|
&error)) {
|
||||||
g_simple_async_result_take_error (simple, error);
|
g_task_return_error (task, error);
|
||||||
g_simple_async_result_complete (simple);
|
g_object_unref (task);
|
||||||
g_object_unref (simple);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* No point in checking EVDO revision if EVDO isn't being used or if for
|
/* No point in checking EVDO revision if EVDO isn't being used */
|
||||||
* some reason we don't have a QCDM port.
|
if (!(ctx->act & MM_IFACE_MODEM_CDMA_ALL_EVDO_ACCESS_TECHNOLOGIES_MASK)) {
|
||||||
*/
|
g_task_return_boolean (task, TRUE);
|
||||||
if (!(act & MM_IFACE_MODEM_CDMA_ALL_EVDO_ACCESS_TECHNOLOGIES_MASK)) {
|
g_object_unref (task);
|
||||||
snapshot_result_complete (simple, QCDM_HDR_REV_UNKNOWN, act, mask);
|
|
||||||
g_object_unref (simple);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pass along the access tech & mask that the parent determined so we
|
/* Get the EVDO revision from QCDM */
|
||||||
* can specialize it based on the EVDO revision from QCDM.
|
get_evdo_version (MM_BASE_MODEM (self),
|
||||||
*/
|
(GAsyncReadyCallback) evdo_version_ready,
|
||||||
if (!get_nw_modem_snapshot (MM_BASE_MODEM (self), simple, act, mask)) {
|
task);
|
||||||
/* If there's any error, use the access tech that the parent interface determined */
|
|
||||||
snapshot_result_complete (simple, QCDM_HDR_REV_UNKNOWN, act, mask);
|
|
||||||
g_object_unref (simple);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -677,12 +679,14 @@ modem_load_access_technologies (MMIfaceModem *self,
|
|||||||
GAsyncReadyCallback callback,
|
GAsyncReadyCallback callback,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GSimpleAsyncResult *result;
|
AccessTechContext *ctx;
|
||||||
|
GTask *task;
|
||||||
|
|
||||||
result = g_simple_async_result_new (G_OBJECT (self),
|
/* Setup context */
|
||||||
callback,
|
task = g_task_new (self, NULL, callback, user_data);
|
||||||
user_data,
|
|
||||||
modem_load_access_technologies);
|
ctx = g_new0 (AccessTechContext, 1);
|
||||||
|
g_task_set_task_data (task, ctx, g_free);
|
||||||
|
|
||||||
/* CDMA-only modems defer to parent for generic access technology
|
/* CDMA-only modems defer to parent for generic access technology
|
||||||
* checking, but can determine EVDOr0 vs. EVDOrA through proprietary
|
* checking, but can determine EVDOr0 vs. EVDOrA through proprietary
|
||||||
@@ -692,7 +696,7 @@ modem_load_access_technologies (MMIfaceModem *self,
|
|||||||
iface_modem_parent->load_access_technologies (
|
iface_modem_parent->load_access_technologies (
|
||||||
self,
|
self,
|
||||||
(GAsyncReadyCallback)parent_load_access_technologies_ready,
|
(GAsyncReadyCallback)parent_load_access_technologies_ready,
|
||||||
result);
|
task);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -702,7 +706,7 @@ modem_load_access_technologies (MMIfaceModem *self,
|
|||||||
3,
|
3,
|
||||||
FALSE,
|
FALSE,
|
||||||
(GAsyncReadyCallback)cnti_set_ready,
|
(GAsyncReadyCallback)cnti_set_ready,
|
||||||
result);
|
task);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
Reference in New Issue
Block a user