diff options
author | Li, Xiaoming <lixm.fnst@cn.fujitsu.com> | 2020-09-26 09:58:21 -0700 |
---|---|---|
committer | Li, Xiaoming <lixm.fnst@cn.fujitsu.com> | 2020-09-26 10:10:09 -0700 |
commit | 8ba3e0d2ffe62c2c94844d8b536c1d49e12e35dd (patch) | |
tree | ac871f7bc9008ad4258f6c72878e4c8e331944bf /binding/bluetooth-api.c | |
parent | cf647a95213c209ab7214f1c1c16f1771c4bb229 (diff) |
Improve default_adapter verb performance
If not provide a new adapter or if new adapter is the same one with
default, reply with existing defalut adapter.
At the same time, clean some unnecessary code, following up the change
of
https://gerrit.automotivelinux.org/gerrit/c/apps/agl-service-bluetooth/+/25292
Bug-AGL: SPEC-3577
Change-Id: If3cbf8d1fb36a144f321db1056c38fd335ef9a28
Signed-off-by: Li, Xiaoming <lixm.fnst@cn.fujitsu.com>
Diffstat (limited to 'binding/bluetooth-api.c')
-rw-r--r-- | binding/bluetooth-api.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/binding/bluetooth-api.c b/binding/bluetooth-api.c index 86883e0..876f546 100644 --- a/binding/bluetooth-api.c +++ b/binding/bluetooth-api.c @@ -1006,29 +1006,28 @@ static void bluetooth_adapter(afb_req_t request) static void bluetooth_default_adapter(afb_req_t request) { - struct bluetooth_state *ns = bluetooth_get_userdata(request); const char *adapter = afb_req_value(request, "adapter"); json_object *jresp = json_object_new_object(); + afb_api_t api = afb_req_get_api(request); + const char *adapter_default = get_default_adapter(api); int rc; - if (!ns || !adapter ) { - afb_req_fail(request, "failed", - "No default adapter"); - return; + if (adapter) { + if (adapter_default && g_strcmp0(adapter_default, adapter)) { + rc = set_default_adapter(api, adapter); + if (rc) { + AFB_DEBUG("Request to save default adapter to persistent storage failed "); + afb_req_fail(request, "failed", "Update default adapter failed"); + return; + } + } + json_object_object_add(jresp, "adapter", json_object_new_string(adapter)); + } else if (adapter_default) { + json_object_object_add(jresp, "adapter", json_object_new_string(adapter_default)); + } else { + afb_req_fail(request, "failed", "No default adapter"); + return; } - - call_work_lock(ns); - rc = set_default_adapter(afb_req_get_api(request), adapter); - - if (ns->adapter) - g_free(ns->adapter); - ns->adapter = g_strdup(adapter); - - json_object_object_add(jresp, "adapter", json_object_new_string(ns->adapter)); - call_work_unlock(ns); - if (rc) - AFB_DEBUG("Request to save default adapter to persistent storage failed "); - afb_req_success(request, jresp, "Bluetooth - default adapter"); } |