diff options
author | Jimmy Huang <jimmy.huang@intel.com> | 2016-09-23 09:55:03 -0700 |
---|---|---|
committer | Jimmy Huang <jimmy.huang@intel.com> | 2016-09-23 09:59:39 -0700 |
commit | 9a5a4f8c302494568a4509284f33bf16a65c3b5a (patch) | |
tree | 4d031e5adc722fa36718cdb297caaf6b5bb1eb54 | |
parent | 97e5e7e70344879e7c075982a1567b56fc94e03c (diff) |
[BLE] Implement missing disconnect() API
Signed-off-by: Jimmy Huang <jimmy.huang@intel.com>
-rw-r--r-- | docs/ble.md | 7 | ||||
-rw-r--r-- | src/zjs_ble.c | 17 |
2 files changed, 24 insertions, 0 deletions
diff --git a/docs/ble.md b/docs/ble.md index 107e9e4..0632bf5 100644 --- a/docs/ble.md +++ b/docs/ble.md @@ -33,6 +33,7 @@ specific API functions. [NoInterfaceObject] interface BLE { + void disconnect(); void on(string eventType, EventCallback callback); void startAdvertising(string name, string[] uuids, string url); void stopAdvertising(); @@ -90,6 +91,12 @@ interface Characteristic { API Documentation ----------------- +### BLE.disconnect + +`void disconnect();` + +Disconnect the remote client. + ### BLE.on `void on(string eventType, EventCallback callback);` diff --git a/src/zjs_ble.c b/src/zjs_ble.c index 5b43f5f..9c4e724 100644 --- a/src/zjs_ble.c +++ b/src/zjs_ble.c @@ -575,6 +575,22 @@ void zjs_ble_enable() { bt_conn_auth_cb_register(&zjs_ble_auth_cb_display); } +static jerry_value_t zjs_ble_disconnect(const jerry_value_t function_obj, + const jerry_value_t this, + const jerry_value_t argv[], + const jerry_length_t argc) +{ + if (zjs_ble_default_conn) { + int error = bt_conn_disconnect(zjs_ble_default_conn, + BT_HCI_ERR_REMOTE_USER_TERM_CONN); + if (error) { + return zjs_error("zjs_ble_disconnect: disconnect failed"); + } + } + + return ZJS_UNDEFINED; +} + static jerry_value_t zjs_ble_on(const jerry_value_t function_obj, const jerry_value_t this, const jerry_value_t argv[], @@ -1254,6 +1270,7 @@ jerry_value_t zjs_ble_init() // create global BLE object jerry_value_t ble_obj = jerry_create_object(); + zjs_obj_add_function(ble_obj, zjs_ble_disconnect, "disconnect"); zjs_obj_add_function(ble_obj, zjs_ble_on, "on"); zjs_obj_add_function(ble_obj, zjs_ble_start_advertising, "startAdvertising"); zjs_obj_add_function(ble_obj, zjs_ble_stop_advertising, "stopAdvertising"); |