The detach_shutdown method is invoked to unconditionally release
an active context. For QMI, this is equivalent to a call to
deactivate_primary.
This patch makes the callback to deactivate_primary optional and
implements detach_shutdown to simply call it. When there is no
callback, the stop_net callback notifies ofono about the context
release via an asynchronous ofono_gprs_context_deactivated() call.
---
drivers/qmimodem/gprs-context.c | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/drivers/qmimodem/gprs-context.c b/drivers/qmimodem/gprs-context.c
index 3743bb2..2085898 100644
--- a/drivers/qmimodem/gprs-context.c
+++ b/drivers/qmimodem/gprs-context.c
@@ -309,14 +309,19 @@ static void stop_net_cb(struct qmi_result *result, void
*user_data)
DBG("");
if (qmi_result_set_error(result, NULL)) {
- CALLBACK_WITH_FAILURE(cb, cbd->data);
+ if (cb)
+ CALLBACK_WITH_FAILURE(cb, cbd->data);
return;
}
- data->active_context = 0;
data->pkt_handle = 0;
- CALLBACK_WITH_SUCCESS(cb, cbd->data);
+ if (cb)
+ CALLBACK_WITH_SUCCESS(cb, cbd->data);
+ else
+ ofono_gprs_context_deactivated(gc, data->active_context);
+
+ data->active_context = 0;
}
static void qmi_deactivate_primary(struct ofono_gprs_context *gc,
@@ -343,11 +348,20 @@ static void qmi_deactivate_primary(struct
ofono_gprs_context *gc,
qmi_param_free(param);
error:
- CALLBACK_WITH_FAILURE(cb, cbd->data);
+ if (cb)
+ CALLBACK_WITH_FAILURE(cb, user_data);
g_free(cbd);
}
+static void qmi_gprs_context_detach_shutdown(struct ofono_gprs_context *gc,
+ unsigned int cid)
+{
+ DBG("");
+
+ qmi_deactivate_primary(gc, cid, NULL, NULL);
+}
+
static void create_wds_cb(struct qmi_service *service, void *user_data)
{
struct ofono_gprs_context *gc = user_data;
@@ -476,6 +490,7 @@ static struct ofono_gprs_context_driver driver = {
.activate_primary = qmi_activate_primary,
.deactivate_primary = qmi_deactivate_primary,
.read_settings = qmi_gprs_read_settings,
+ .detach_shutdown = qmi_gprs_context_detach_shutdown,
};
void qmi_gprs_context_init(void)
--
2.9.3
_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono