### Platform Support
The following shows BLE module APIs available for each platform.
| | Linux
(Ubuntu) | Raspbian
(Raspberry Pi) | NuttX
(STM32F4-Discovery) | TizenRT
(Artik053) |
| :---: | :---: | :---: | :---: | :---: |
| ble.startAdvertising | O | O | X | X |
| ble.stopAdvertising | O | O | X | X |
| ble.setServices | O | O | X | X |
# BLE - Bluetooth Low Energy
### Event: 'advertisingStart'
* `callback` {Function}
* error {Error}
Emitted when advertisement starts.
**Example**
```js
var ble = require('ble');
ble.on('advertisingStart', function(error) {
console.log('on -> advertisingStart: ' + (error ? 'error ' + error : 'success'));
if (!error) {
ble.setServices([
// service data
]);
}
});
```
### Event: 'stateChange'
* `callback` {Function}
* `state` {String} Can be 'unknown', 'resetting', 'unsupported', 'unauthorized', 'poweredOff' or 'poweredOn'.
Emitted when adapter state is changed.
**Example**
```js
var ble = require('ble');
ble.on('stateChange', function(state){
console.log('onStateChange: ' + state);
if (state == 'poweredOn') {
ble.startAdvertising('iotjs', ['data'], function(err) {
});
} else {
ble.stopAdvertising(function(err) {
});
}
});
```
### ble.startAdvertising(name, serviceUuids[, callback])
* `name` {string} Maximum 26 bytes.
* `serviceUuids` {Array[String]}
* 1 128-bit service UUID
* 1 128-bit service UUID + 2 16-bit service UUIDs
* 7 16-bit service UUID
* `callback` {Function} Error handler.
* `error` {Error}
Starts advertising.
`ble.state` must be in poweredOn state before advertising is started.
`ble.on('stateChange', callback(state));` can be used to register for state change events.
**Example**
```js
var name = 'name';
var serviceUuids = ['fffffffffffffffffffffffffffffff0']
ble.startAdvertising(name, serviceUuids[, callback(error)]);
```
### ble.stopAdvertising(callback)
* `callback` {Function} Error handler.
* `error` {Error}
Stops advertising.
### ble.setServices(services[, callback])
* `services` {Array[PrimaryService]}
* `callback` {Function} Error handler.
* `error` {Error}
Sets the primary services available on the peripheral.
## Class: Descriptor
Descriptors are defined attributes that describe a characteristic value.
### new Descriptor(options)
* `options` {Object}
* `uuid:` {string} A Universally Unique ID (UUID) is a 16 or 128-bit hex value used to identify the type of every attribute.
* `value` {string|Buffer}
**Example**
```js
var descriptor = new Descriptor({
uuid: '2901',
value: 'value'
});
```
## Class: Characteristic
Characteristics are defined attribute types that contain a single logical value.
### new Characteristic(options)
* `options` {Object}
* `uuid:` {string} A Universally Unique ID (UUID) is a 16 or 128-bit hex value used to identify the type of every attribute.
* `properties` {Array[string]} Can be a combination of 'read', 'write', 'writeWithoutResponse', 'notify' and 'indicate'.
* `secure` {Array[string]} Enables security for properties, can be a combination of 'read', 'write', 'writeWithoutResponse', 'notify' and 'indicate'.
* `value` {Buffer}
* `descriptors` {Array[Descriptor]}
* `onReadRequest` {Function} Read request handler. (optional)
* `offset` {number} (0x0000 - 0xffff)
* `callback` {Function}
* `result` {Characteristic.RESULT_*}
* `data` {Buffer}
* `onWriteRequest` {Function} Write request handler. (optional)
* `data` {Buffer}
* `offset` {number} (0x0000 - 0xffff)
* `withoutResponse` {boolean}
* `callback` {Function}
* `result` {Characteristic.RESULT_*}
* `onSubscribe` {Function} Notify/indicate subscribe handler. (optional)
* `maxValueSize` {number} Maximum data size.
* `updateValueCallback` {Function}
* `onUnsubscribe` {Function} Notify/indicate unsubscribe handler. (optional)
* `onNotify` {Function} Notify sent handler. (optional)
* `onIndicate` {Function} Indicate confirmation received handler. (optional)
Returns: {Characteristic}
**Example**
```js
var characteristic = new Characteristic({
uuid: 'fffffffffffffffffffffffffffffff1', // or 'fff1' for 16-bit
properties: ['read', 'write'],
secure: [],
value: null,
descriptors: [descriptor],
onReadRequest: null,
onWriteRequest: null,
onSubscribe: null,
onUnsubscribe: null,
onNotify: null,
onIndicate: null
});
```
### Characteristic.RESULT_SUCCESS
### Characteristic.RESULT_INVALID_OFFSET
### Characteristic.RESULT_INVALID_ATTRIBUTE_LENGTH
### Characteristic.RESULT_UNLIKELY_ERROR
## Class: PrimaryService
PrimaryService is a collection of characteristics and relationships to other services that encapsulate the behavior of part of a device.
### new PrimaryService(options)
* `options` {Object}
* `uuid` {string} A Universally Unique ID (UUID) is a 16 or 128-bit hex value used to identify the type of every attribute.
* `characteristics` {Array[Characteristic]}
**Example**
```js
var primaryService = new PrimaryService({
uuid: 'fffffffffffffffffffffffffffffff0', // or 'fff0' for 16-bit
characteristics: [
// see Characteristic for data type
]
});
```