Merge pull request #2802 from AnotherStranger/feature/add-bootgatthrm
[bootgatthrm]: Extract HRM Sensor Data into Separate Bootloader Appmaster
commit
0e47f36557
|
|
@ -0,0 +1 @@
|
||||||
|
0.01: Initial release.
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
# BLE GATT HRM Service
|
||||||
|
|
||||||
|
Adds the GATT HRM Service to advertise the current HRM over Bluetooth.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
This boot code runs in the background and has no user interface.
|
||||||
|
|
||||||
|
## Creator
|
||||||
|
|
||||||
|
[Another Stranger](https://github.com/anotherstranger)
|
||||||
|
|
||||||
|
## Aknowledgements
|
||||||
|
|
||||||
|
Special thanks to [Jonathan Jefferies](https://github.com/jjok) for creating the
|
||||||
|
bootgattbat app, which was the inspiration for this App!
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -0,0 +1,54 @@
|
||||||
|
(() => {
|
||||||
|
function setupHRMAdvertising() {
|
||||||
|
/*
|
||||||
|
* This function prepares BLE heart rate Advertisement.
|
||||||
|
*/
|
||||||
|
|
||||||
|
NRF.setServices({
|
||||||
|
0x180D: { // heart_rate
|
||||||
|
0x2A37: { // heart_rate_measurement
|
||||||
|
notify: true,
|
||||||
|
value: [0x06, 0],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, { advertise: [0x180d] });
|
||||||
|
|
||||||
|
}
|
||||||
|
function updateBLEHeartRate(hrm) {
|
||||||
|
/*
|
||||||
|
* Send updated heart rate measurement via BLE
|
||||||
|
*/
|
||||||
|
if (hrm === undefined || hrm.confidence < 50) return;
|
||||||
|
try {
|
||||||
|
NRF.updateServices({
|
||||||
|
0x180D: {
|
||||||
|
0x2A37: {
|
||||||
|
value: [
|
||||||
|
0x06, //
|
||||||
|
hrm.bpm
|
||||||
|
],
|
||||||
|
notify: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
if (error.message.includes("BLE restart")) {
|
||||||
|
/*
|
||||||
|
* BLE has to restart after service setup.
|
||||||
|
*/
|
||||||
|
NRF.disconnect();
|
||||||
|
}
|
||||||
|
else if (error.message.includes("UUID 0x2a37")) {
|
||||||
|
/*
|
||||||
|
* Setup service if it wasn't setup correctly for some reason
|
||||||
|
*/
|
||||||
|
setupHRMAdvertising();
|
||||||
|
} else {
|
||||||
|
console.log("[bootgatthrm]: Unexpected error occured while updating HRM over BLE! Error: " + error.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setupHRMAdvertising();
|
||||||
|
Bangle.on("HRM", function (hrm) { updateBLEHeartRate(hrm); });
|
||||||
|
})();
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"id": "bootgatthrm",
|
||||||
|
"name": "BLE GATT HRM Service",
|
||||||
|
"shortName": "BLE HRM Service",
|
||||||
|
"version": "0.01",
|
||||||
|
"description": "Adds the GATT HRM Service to advertise the measured HRM over Bluetooth.\n",
|
||||||
|
"icon": "bluetooth.png",
|
||||||
|
"type": "bootloader",
|
||||||
|
"tags": "hrm,health,ble,bluetooth,gatt",
|
||||||
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
|
"readme": "README.md",
|
||||||
|
"storage": [
|
||||||
|
{"name":"gatthrm.boot.js","url":"boot.js"}
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue