Tutorial: Work with Bluetooth devices

Work with Bluetooth devices

Bluetooth adapter

Set bluetooth adapter parameters:

// turn it on
stbBluetooth.enable = true;

// set it discoverable
stbBluetooth.visible = true;

// set custom name
stbBluetooth.name = 'My set top box';

Get bluetooth adapter address:

console.log(stbBluetooth.address);

Set all event handlers before discovery process:

stbBluetooth.onDiscoveryStart = function ( config ) {
    console.log('onDiscoveryStart event');
    console.log(config);
};

stbBluetooth.onDiscoveryStop = function () {
    console.log('onDiscoveryStop event');
};

stbBluetooth.onDeviceFound = function ( device ) {
    console.log('onDeviceFound event');
    console.log(device);
};

stbBluetooth.onDeviceRemoved = function ( device ) {
    console.log('onDeviceRemoved event');
    console.log(device);
};

It's also possible to use stbBluetooth.addEventListener and stbBluetooth.removeEventListener methods:

stbBluetooth.addEventListener('discoveryStart', function ( config ) {
    console.log('discoveryStart listener');
    console.log(config);
});

stbBluetooth.addEventListener('discoveryStop', function () {
    console.log('discoveryStop listener');
});

stbBluetooth.addEventListener('deviceFound', function ( device ) {
    console.log('deviceFound listener');
    console.log(device);
});

stbBluetooth.addEventListener('deviceRemoved', function ( device ) {
    console.log('deviceRemoved listener');
    console.log(device);
});

Start searching for devices:

// scan for specific time - 1.28s * 20
stbBluetooth.startDiscovery({duration: 20});

Get all discovered devices list:

console.log(stbBluetooth.devices);

Discovered device

Let's work with one of the found devices:

var device = stbBluetooth.devices[0];

Get device detailed information:

// MAC address
console.log(device.address);

// discoverable name
console.log(device.name);

// BR/EDR or BLE
console.log(device.type);

// vendor identifier
console.log(device.vendorId);

// product identifier
console.log(device.productId);

// connection state - true in case at least one profile is connected
console.log(device.active);

// paired state
console.log(device.paired);

// available profiles
console.log(device.profiles);

Set all event handlers:

device.onPinProvide = function ( pin ) {
    console.log('onPinProvide event');
    console.log(pin);
};

device.onAuthentication = function ( status ) {
    console.log('onAuthentication event');
    console.log(status);
};

device.onChange = function ( name, value ) {
    console.log('onChange event');
    console.log(name, value);
};

It's also possible to use stbBluetoothDevice.addEventListener and stbBluetoothDevice.removeEventListener methods:

device.addEventListener('pinProvide', function ( pin ) {
    console.log('pinProvide listener');
    console.log(pin);
});

device.addEventListener('authentication', function ( status ) {
    console.log('authentication listener');
    console.log(status);
});

device.addEventListener('change', function ( name, value ) {
    console.log('change listener');
    console.log(name, value);
});

Disconnect and unpair the device and remove it from the paired devices list:

device.forget();

Device profile

Let's work with one of the available profiles:

var profile = device.profiles.HID;

Get profile connection state:

console.log(profile.active);

Set all event handlers:

profile.onOpen = function () {
    console.log('onOpen event');
};

profile.onClose = function () {
    console.log('onClose event');
};

It's also possible to use stbBluetoothProfile.addEventListener and stbBluetoothProfile.removeEventListener methods:

profile.addEventListener('open', function () {
    console.log('open listener');
});

profile.addEventListener('close', function () {
    console.log('close listener');
});

Open connection:

profile.open();

Close connection:

profile.close();