Merge pull request #2802 from AnotherStranger/feature/add-bootgatthrm

[bootgatthrm]: Extract HRM Sensor Data into Separate Bootloader App
master
Gordon Williams 2023-06-09 10:52:27 +01:00 committed by GitHub
commit 0e47f36557
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 86 additions and 0 deletions

View File

@ -0,0 +1 @@
0.01: Initial release.

View File

@ -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

54
apps/bootgatthrm/boot.js Normal file
View File

@ -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); });
})();

View File

@ -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"}
]
}