Espruino:Справочник по API/Класс NRF/setServices()
Функция NRF.setServices()[1]
Синтаксис
NRF.setServices(data, options)
Параметры
- data – сервис (и характеристики), данные о которых будут рассылаться в объявлениях
- options – опциональный объект с настройками
Возвращаемое значение
Описание
Меняет названия и настройки сервисов и характеристик, которые Espruino рассылает в объявлениях.
Если вы хотите поменять значение характеристики, вам нужна не эта функция, а NRF.updateServices().
Чтобы показать информацию характеристики ABDC сервиса BCDE, можно сделать вот так:
NRF.setServices({
0xBCDE : {
0xABCD : {
value : "Привет",
readable : true
}
}
});
Или, например, чтобы управлять тремя светодиодами при помощи записи в характеристику чисел от 0 до 7, можно сделать вот так (evt.data – это ArrayBuffer):
NRF.setServices({
0xBCDE : {
0xABCD : {
writable : true,
onWrite : function(evt) {
digitalWrite([LED3,LED2,LED1], evt.data[0]);
}
}
}
});
Вы можете задать множество разных настроек:
NRF.setServices({
0xBCDE : {
0xABCD : {
value : "Привет", // опционально
maxLen : 5, // опционально (или размер исходного значения)
broadcast : false, // опционально (по умолчанию «false»)
readable : true, // опционально (по умолчанию «false»)
writable : true, // опционально (по умолчанию «false»)
notify : true, // опционально (по умолчанию «false»)
indicate : true, // опционально (по умолчанию «false»)
description: "My Characteristic", // опционально
// по умолчанию «null»
security: { // опционально, см. описание NRF.setSecurity()
read: { // опционально
encrypted: false, // опционально (по умолчанию «false»)
mitm: false, // опционально (по умолчанию «false»)
lesc: false, // опционально (по умолчанию «false»)
signed: false // опционально (по умолчанию «false»)
},
write: { // опционально
encrypted: true, // опционально (по умолчанию «false»)
mitm: false, // опционально (по умолчанию «false»)
lesc: false, // опционально (по умолчанию «false»)
signed: false // опционально (по умолчанию «false»)
}
},
onWrite : function(evt) { // опционально
console.log("Got ", evt.data); // объект ArrayBuffer
}
}
// можно задать больше характеристик
}
// можно задать больше сервисов
});
Аргумент options может иметь следующий формат:
NRF.setServices(undefined, {
hid : new Uint8Array(...), // опционально (по умолчанию «undefined»)
// включает поддержку BLE HID
uart : true, // опционально (по умолчанию «true»),
// включает поддержку BLE UART
advertise: [ '180D' ] // опционально; список UUID сервисов,
// которые надо разослать в объявлениях
});
Чтобы включить BLE HID, в настройке hid нужно задать массив c дескриптором отчета HID. Проще всего это сделать с помощью модуля ble_hid_controls или ble_hid_keyboard.
NRF.setServices({
0x180D: { // сердцебиение
0x2A37: { // измерение сердцебиения
notify: true,
value : [0x06, heartrate],
}
}
}, { advertise: [ '180D' ] });
В списке UUID для рассылки можно задавать 128-битные UUID, но это может выдать исключение DATA_SIZE, потому что в BLE-пакете объявления недостаточно места для 128-битного UART-идентификатора (и, соответственно, для заданного вами UUID). В этом случае вы можете задать в options настройку uart:false после поля advertise, чтобы отключить UART, но тогда вы не сможете подключиться к консоли Puck.js по Bluetooth.
Если вам обязательно нужно задать два или более 128-битных UUID, вам нужно будет задать собственные пакеты объявлений с неформатированными данными с помощью функции NRF.setAdvertising().
Примеры
См.также
Внешние ссылки