B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer: Difference between revisions
< B2G | Bluetooth | WebBluetooth-v2
Jump to navigation
Jump to search
(→removeService(BluetoothGattService service): Refine the description that the promise would be rejected if the service doesn't exist in the server.) |
|||
| (22 intermediate revisions by 3 users not shown) | |||
| Line 3: | Line 3: | ||
== Interfaces == | == Interfaces == | ||
[[B2G/Bluetooth/WebBluetooth-v2/ | [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#BluetoothGattServer|BluetoothGattServer]] | ||
=== BluetoothGattServer === | === BluetoothGattServer === | ||
| Line 11: | Line 11: | ||
[Cached, Pure] readonly attribute sequence<[[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattService#BluetoothGattService|BluetoothGattService]]> [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#services|services]]; | [Cached, Pure] readonly attribute sequence<[[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattService#BluetoothGattService|BluetoothGattService]]> [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#services|services]]; | ||
attribute EventHandler [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#onconnectionstatechanged|onconnectionstatechanged]]; | |||
attribute EventHandler [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#onattributereadreq|onattributereadreq]]; | |||
attribute EventHandler [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#onattributewritereq|onattributewritereq]]; | |||
<!-- attribute EventHandler [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#onexecutewritereq|onexecutewritereq]]; --> | |||
[NewObject | [NewObject] Promise<void> [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#connect.28DOMString_address|connect(DOMString address)]]; | ||
[NewObject | [NewObject] Promise<void> [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#disconnect.28DOMString_address.29|disconnect(DOMString address)]]; | ||
[NewObject | [NewObject] Promise<void> [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#addService.28BluetoothGattService_service.29|addService(BluetoothGattService service)]]; | ||
[NewObject | [NewObject] Promise<void> [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#removeService.28BluetoothGattService_service.29|removeService(BluetoothGattService service)]]; | ||
[NewObject | [NewObject] Promise<void> [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#notifyCharacteristicChanged.28DOMString_address.2C_BluetoothGattCharacteristic_characteristic.2C_bool_confirm.29|notifyCharacteristicChanged(DOMString address, BluetoothGattCharacteristic characteristic, bool confirm)]]; | ||
[NewObject] Promise<void> [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#sendResponse.28DOMString_address.2C_unsigned_short_status.2C_unsigned_long_requestId.29|sendResponse(DOMString address, unsigned short status, unsigned long requestId)]]; | |||
[NewObject | |||
}; | }; | ||
| Line 44: | Line 42: | ||
* [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#onattributereadreq|BluetoothGattServer.onattributereadreq]] | * [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#onattributereadreq|BluetoothGattServer.onattributereadreq]] | ||
* [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#onattributewritereq|BluetoothGattServer.onattributewritereq]] | * [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#onattributewritereq|BluetoothGattServer.onattributewritereq]] | ||
* [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#onexecutewritereq|BluetoothGattServer.onexecutewritereq]] | <!-- * [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#onexecutewritereq|BluetoothGattServer.onexecutewritereq]] --> | ||
=== | === onconnectionstatechanged === | ||
; Description | ; Description | ||
: A handler to trigger when a remote LE device has been connected or disconnected. | : A handler to trigger when a remote LE device has been connected or disconnected. | ||
; | ; Argument | ||
: DOMString ''address'' | [CheckPermissions="bluetooth"] | ||
interface BluetoothStatusChangedEvent : Event | |||
{ | |||
readonly attribute DOMString address; | |||
readonly attribute boolean status; | |||
}; | |||
: ''address'' | |||
:: Address of the connected/disconnected remote LE device. | :: Address of the connected/disconnected remote LE device. | ||
: | : ''status'' | ||
:: Whether the remote LE device is connected (true) or disconnected (false). | :: Whether the remote LE device is connected (true) or disconnected (false). | ||
| Line 60: | Line 65: | ||
: A handler to trigger when a remote client has requested to read a local characteristic or descriptor. | : A handler to trigger when a remote client has requested to read a local characteristic or descriptor. | ||
; | ; Argument | ||
[CheckPermissions="bluetooth"] | |||
interface BluetoothGattAttributeEvent : Event | |||
{ | |||
readonly attribute DOMString address; | |||
readonly attribute unsigned long requestId; | |||
readonly attribute BluetoothGattCharacteristic? characteristic; | |||
readonly attribute BluetoothGattDescriptor? descriptor; | |||
readonly attribute ArrayBuffer? value; | |||
readonly attribute boolean needRsp; | |||
}; | |||
: ''address'' | : ''address'' | ||
:: Address of the remote client. | :: Address of the remote client. | ||
: ''requestId'' | : ''requestId'' | ||
:: Request id of the attribute read request. | :: Request id of the attribute read request. | ||
: ''characteristic | : ''characteristic'' | ||
:: The characteristic requested to read. Null if remote client requests to read a local descriptor. | :: The characteristic requested to read. Null if remote client requests to read a local descriptor. | ||
: ''descriptor | : ''descriptor'' | ||
:: The descriptor requested to read. Null if remote client requests to read a local characteristic. | :: The descriptor requested to read. Null if remote client requests to read a local characteristic. | ||
: ''value'' | |||
:: The new characteristic/descriptor value to be written in write requests. Null if the request was a read request. | |||
: ''needRsp'' | |||
:: Indicate whether a response is needed or not. If needRsp is true, application needs to explicitly call [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#sendResponse.28DOMString_address.2C_unsigned_short_status.2C_unsigned_long_requestId.29|sendResponse(DOMString address, unsigned short status, unsigned long requestId)]]. | |||
=== onattributewritereq === | === onattributewritereq === | ||
| Line 74: | Line 94: | ||
: A handler to trigger when a remote client has requested to write a local characteristic or descriptor. | : A handler to trigger when a remote client has requested to write a local characteristic or descriptor. | ||
; | ; Argument | ||
[CheckPermissions="bluetooth"] | |||
interface BluetoothGattAttributeEvent : Event | |||
{ | |||
readonly attribute DOMString address; | |||
readonly attribute unsigned long requestId; | |||
readonly attribute BluetoothGattCharacteristic? characteristic; | |||
readonly attribute BluetoothGattDescriptor? descriptor; | |||
readonly attribute ArrayBuffer? value; | |||
readonly attribute boolean needRsp; | |||
}; | |||
: ''address'' | : ''address'' | ||
:: Address of the remote client. | :: Address of the remote client. | ||
: ''requestId'' | : ''requestId'' | ||
:: Request id of the attribute write request. | :: Request id of the attribute write request. | ||
: ''characteristic | : ''characteristic'' | ||
:: The characteristic requested to write. Null if remote client requests to write a local descriptor. | :: The characteristic requested to write. Null if remote client requests to write a local descriptor. | ||
: ''descriptor | : ''descriptor'' | ||
:: The descriptor requested to write. Null if remote client requests to write a local characteristic. | :: The descriptor requested to write. Null if remote client requests to write a local characteristic. | ||
: ''value'' | |||
:: The new characteristic/descriptor value to be written in write requests. Null if the request was a read request. | |||
: ''needRsp'' | |||
:: Indicate whether a response is needed or not. If needRsp is true, application needs to explicitly call [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#sendResponse.28DOMString_address.2C_unsigned_short_status.2C_unsigned_long_requestId.29|sendResponse(DOMString address, unsigned_short status, unsigned long requestId)]]. | |||
<!-- | |||
=== onexecutewritereq === | === onexecutewritereq === | ||
; Description | ; Description | ||
: A handler to trigger when a remote client has requested to execute all pending write operations. | : A handler to trigger when a remote client has requested to execute all pending write operations. | ||
; | ; Argument | ||
[CheckPermissions="bluetooth"] | |||
interface BluetoothExecuteWriteEvent : Event | |||
{ | |||
readonly attribute DOMString address; | |||
readonly attribute short requestId; | |||
readonly attribute boolean execute; | |||
}; | |||
: ''address'' | : ''address'' | ||
:: Address of the remote client. | :: Address of the remote client. | ||
| Line 94: | Line 137: | ||
:: Request id of the attribute read request. | :: Request id of the attribute read request. | ||
: ''execute'' | : ''execute'' | ||
:: Whether to execute all pending write operations (true) or not (false). | :: Whether to execute all pending write operations (true) or not (false). --> | ||
== Methods == | == Methods == | ||
* [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#connect.28DOMString_address | * [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#connect.28DOMString_address|BluetoothGattServer.connect(DOMString address)]] | ||
* [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#disconnect.28DOMString_address.29|BluetoothGattServer.disconnect(DOMString address)]] | * [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#disconnect.28DOMString_address.29|BluetoothGattServer.disconnect(DOMString address)]] | ||
* [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#addService.28BluetoothGattService_service.29|BluetoothGattServer.addService(BluetoothGattService service)]] | * [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#addService.28BluetoothGattService_service.29|BluetoothGattServer.addService(BluetoothGattService service)]] | ||
* [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#removeService.28BluetoothGattService_service.29|BluetoothGattServer.removeService(BluetoothGattService service)]] | * [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#removeService.28BluetoothGattService_service.29|BluetoothGattServer.removeService(BluetoothGattService service)]] | ||
* [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#notifyCharacteristicChanged.28DOMString_address.2C_BluetoothGattCharacteristic_characteristic.2C_bool_confirm.29|BluetoothGattServer.notifyCharacteristicChanged(DOMString address, BluetoothGattCharacteristic characteristic, bool confirm)]] | |||
* [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#sendResponse.28DOMString_address.2C_unsigned_short_status.2C_unsigned_long_requestId.29|BluetoothGattServer.sendResponse(DOMString address, unsigned short status, unsigned long requestId)]] | |||
* [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#notifyCharacteristicChanged.28DOMString_address. | |||
* [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#sendResponse.28DOMString_address. | |||
=== connect(DOMString address | === connect(DOMString address) === | ||
; Description | ; Description | ||
: The method initiates a connection to remote LE device. | : The method initiates a connection to remote LE device. | ||
| Line 113: | Line 154: | ||
: ''address'' | : ''address'' | ||
:: The address of remote LE device to connect. | :: The address of remote LE device to connect. | ||
<!-- | |||
: ''autoConnect'' | : ''autoConnect'' | ||
:: Whether to directly connect to the remote device (false) or to automatically connect as soon as the remote device becomes available (true). | :: Whether to directly connect to the remote device (false) or to automatically connect as soon as the remote device becomes available (true). | ||
--> | |||
; Return | ; Return | ||
: A Promise to indicate whether the operation is resolved or rejected. | : A Promise to indicate whether the operation is resolved or rejected. | ||
| Line 132: | Line 174: | ||
=== addService(BluetoothGattService service) === | === addService(BluetoothGattService service) === | ||
; Description | ; Description | ||
: The method adds a service | : The method adds a service. If the service already exists in the GATT server, the promise will be rejected. | ||
; Parameter | ; Parameter | ||
| Line 143: | Line 185: | ||
=== removeService(BluetoothGattService service) === | === removeService(BluetoothGattService service) === | ||
; Description | ; Description | ||
: The method removes a provided service. | : The method removes a provided service. If the service doesn't exist in the GATT server, the promise will be rejected. | ||
; Parameter | ; Parameter | ||
| Line 152: | Line 194: | ||
: A Promise to indicate whether the operation is resolved or rejected. If the Promise is resolved, property [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#services|services]] is also updated without the removed service. | : A Promise to indicate whether the operation is resolved or rejected. If the Promise is resolved, property [[B2G/Bluetooth/WebBluetooth-v2/BluetoothGattServer#services|services]] is also updated without the removed service. | ||
=== notifyCharacteristicChanged(DOMString address, BluetoothGattCharacteristic characteristic, bool confirm) === | |||
=== notifyCharacteristicChanged(DOMString address, | |||
; Description | ; Description | ||
: The method sends a notification/indication that a local characteristic has been updated. | : The method sends a notification/indication that a local characteristic has been updated. | ||
| Line 173: | Line 201: | ||
: ''address'' | : ''address'' | ||
:: The address of remote LE device to notify. | :: The address of remote LE device to notify. | ||
: '' | : ''characteristic'' | ||
:: The updated characteristic. | |||
:: | |||
: ''confirm'' | : ''confirm'' | ||
:: Whether to request confirmation from the client (indication) or not (notification). | :: Whether to request confirmation from the client (indication) or not (notification). | ||
| Line 183: | Line 209: | ||
: A Promise to indicate whether the operation is resolved or rejected. | : A Promise to indicate whether the operation is resolved or rejected. | ||
=== sendResponse(DOMString address, | === sendResponse(DOMString address, unsigned short status, unsigned long requestId) === | ||
; Description | ; Description | ||
: The method sends a response | : The method sends a response of a read or write request to a remote LE device. | ||
; Parameter | ; Parameter | ||
| Line 192: | Line 218: | ||
:: The address of remote LE device to notify. | :: The address of remote LE device to notify. | ||
: ''status'' | : ''status'' | ||
:: The status of the request to reply. | :: The status of the request to reply. 0 for successful reply, otherwise, please see Bluetooth Core Specification vol 3, part F, 3.4.1.1 for defined error status codes. | ||
: ''requestId'' | : ''requestId'' | ||
:: The ID of the request to reply. | :: The ID of the request to reply. | ||
; Return | ; Return | ||
: A Promise to indicate whether the operation is resolved or rejected. | : A Promise to indicate whether the operation is resolved or rejected. | ||
Latest revision as of 04:00, 16 September 2015
Overview
BluetoothGattServer provides bluetooth Generic Attribute Profile (GATT) server functionality to create Bluetooth Smart services and characteristics.
Interfaces
BluetoothGattServer
[CheckPermissions="bluetooth"]
interface BluetoothGattServer
{
[Cached, Pure] readonly attribute sequence<BluetoothGattService> services;
attribute EventHandler onconnectionstatechanged;
attribute EventHandler onattributereadreq;
attribute EventHandler onattributewritereq;
[NewObject] Promise<void> connect(DOMString address);
[NewObject] Promise<void> disconnect(DOMString address);
[NewObject] Promise<void> addService(BluetoothGattService service);
[NewObject] Promise<void> removeService(BluetoothGattService service);
[NewObject] Promise<void> notifyCharacteristicChanged(DOMString address, BluetoothGattCharacteristic characteristic, bool confirm);
[NewObject] Promise<void> sendResponse(DOMString address, unsigned short status, unsigned long requestId);
};
Properties
services
- Description
- Array of services offered by this device.
- Value Type
- sequence<BluetoothGattService>
- Default Value
- Empty array (array with length = 0)
Event Handlers
- BluetoothGattServer.ondeviceconnectionstatechanged
- BluetoothGattServer.onattributereadreq
- BluetoothGattServer.onattributewritereq
onconnectionstatechanged
- Description
- A handler to trigger when a remote LE device has been connected or disconnected.
- Argument
[CheckPermissions="bluetooth"]
interface BluetoothStatusChangedEvent : Event
{
readonly attribute DOMString address;
readonly attribute boolean status;
};
- address
- Address of the connected/disconnected remote LE device.
- status
- Whether the remote LE device is connected (true) or disconnected (false).
onattributereadreq
- Description
- A handler to trigger when a remote client has requested to read a local characteristic or descriptor.
- Argument
[CheckPermissions="bluetooth"]
interface BluetoothGattAttributeEvent : Event
{
readonly attribute DOMString address;
readonly attribute unsigned long requestId;
readonly attribute BluetoothGattCharacteristic? characteristic;
readonly attribute BluetoothGattDescriptor? descriptor;
readonly attribute ArrayBuffer? value;
readonly attribute boolean needRsp;
};
- address
- Address of the remote client.
- requestId
- Request id of the attribute read request.
- characteristic
- The characteristic requested to read. Null if remote client requests to read a local descriptor.
- descriptor
- The descriptor requested to read. Null if remote client requests to read a local characteristic.
- value
- The new characteristic/descriptor value to be written in write requests. Null if the request was a read request.
- needRsp
- Indicate whether a response is needed or not. If needRsp is true, application needs to explicitly call sendResponse(DOMString address, unsigned short status, unsigned long requestId).
onattributewritereq
- Description
- A handler to trigger when a remote client has requested to write a local characteristic or descriptor.
- Argument
[CheckPermissions="bluetooth"]
interface BluetoothGattAttributeEvent : Event
{
readonly attribute DOMString address;
readonly attribute unsigned long requestId;
readonly attribute BluetoothGattCharacteristic? characteristic;
readonly attribute BluetoothGattDescriptor? descriptor;
readonly attribute ArrayBuffer? value;
readonly attribute boolean needRsp;
};
- address
- Address of the remote client.
- requestId
- Request id of the attribute write request.
- characteristic
- The characteristic requested to write. Null if remote client requests to write a local descriptor.
- descriptor
- The descriptor requested to write. Null if remote client requests to write a local characteristic.
- value
- The new characteristic/descriptor value to be written in write requests. Null if the request was a read request.
- needRsp
- Indicate whether a response is needed or not. If needRsp is true, application needs to explicitly call sendResponse(DOMString address, unsigned_short status, unsigned long requestId).
Methods
- BluetoothGattServer.connect(DOMString address)
- BluetoothGattServer.disconnect(DOMString address)
- BluetoothGattServer.addService(BluetoothGattService service)
- BluetoothGattServer.removeService(BluetoothGattService service)
- BluetoothGattServer.notifyCharacteristicChanged(DOMString address, BluetoothGattCharacteristic characteristic, bool confirm)
- BluetoothGattServer.sendResponse(DOMString address, unsigned short status, unsigned long requestId)
connect(DOMString address)
- Description
- The method initiates a connection to remote LE device.
- Parameter
- address
- The address of remote LE device to connect.
- Return
- A Promise to indicate whether the operation is resolved or rejected.
disconnect(DOMString address)
- Description
- The method disconnects the established connection of remote LE device.
- Parameter
- address
- The address of remote LE device to disconnect.
- Return
- A Promise to indicate whether the operation is resolved or rejected.
addService(BluetoothGattService service)
- Description
- The method adds a service. If the service already exists in the GATT server, the promise will be rejected.
- Parameter
- service
- The BluetoothGattService object to add.
- Return
- A Promise to indicate whether the operation is resolved or rejected. If the Promise is resolved, property services is also updated with the added service.
removeService(BluetoothGattService service)
- Description
- The method removes a provided service. If the service doesn't exist in the GATT server, the promise will be rejected.
- Parameter
- service
- The BluetoothGattService object to remove.
- Return
- A Promise to indicate whether the operation is resolved or rejected. If the Promise is resolved, property services is also updated without the removed service.
notifyCharacteristicChanged(DOMString address, BluetoothGattCharacteristic characteristic, bool confirm)
- Description
- The method sends a notification/indication that a local characteristic has been updated.
- Parameter
- address
- The address of remote LE device to notify.
- characteristic
- The updated characteristic.
- confirm
- Whether to request confirmation from the client (indication) or not (notification).
- Return
- A Promise to indicate whether the operation is resolved or rejected.
sendResponse(DOMString address, unsigned short status, unsigned long requestId)
- Description
- The method sends a response of a read or write request to a remote LE device.
- Parameter
- address
- The address of remote LE device to notify.
- status
- The status of the request to reply. 0 for successful reply, otherwise, please see Bluetooth Core Specification vol 3, part F, 3.4.1.1 for defined error status codes.
- requestId
- The ID of the request to reply.
- Return
- A Promise to indicate whether the operation is resolved or rejected.