Added temperature and heart rate service advertising
parent
a45f7506ff
commit
7fe88fd02c
|
|
@ -7,6 +7,12 @@
|
||||||
// Non-user-configurable constants
|
// Non-user-configurable constants
|
||||||
const APP_ID = 'sensible';
|
const APP_ID = 'sensible';
|
||||||
const ESPRUINO_COMPANY_CODE = 0x0590;
|
const ESPRUINO_COMPANY_CODE = 0x0590;
|
||||||
|
const DEFAULT_ADVERTISING_OPTIONS = {
|
||||||
|
showName: false,
|
||||||
|
manufacturer: ESPRUINO_COMPANY_CODE,
|
||||||
|
manufacturerData: JSON.stringify({ name: APP_ID }),
|
||||||
|
interval: 2000
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// Global variables
|
// Global variables
|
||||||
|
|
@ -20,6 +26,12 @@ let isBarEnabled = true;
|
||||||
let isGpsEnabled = true;
|
let isGpsEnabled = true;
|
||||||
let isHrmEnabled = true;
|
let isHrmEnabled = true;
|
||||||
let isMagEnabled = true;
|
let isMagEnabled = true;
|
||||||
|
let isNewAccData = false;
|
||||||
|
let isNewBarData = false;
|
||||||
|
let isNewGpsData = false;
|
||||||
|
let isNewHrmData = false;
|
||||||
|
let isNewMagData = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Menus
|
// Menus
|
||||||
|
|
@ -104,9 +116,33 @@ function transmitAppName() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Check for new sensor data and update the advertising sequence
|
||||||
|
function transmitUpdatedSensorData() {
|
||||||
|
let data = [];
|
||||||
|
|
||||||
|
if(isNewBarData) {
|
||||||
|
let encT = Math.round(bar.temperature * 100); // TODO: signed int16
|
||||||
|
data.push({ 0x2a6e: [ encT & 0xff, (encT >> 8) & 0xff ] });
|
||||||
|
isNewBarData = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isNewHrmData) {
|
||||||
|
data.push({ 0x2a37: [ 0, hrm.bpm ] });
|
||||||
|
isNewHrmData = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(data.length === 0) {
|
||||||
|
return NRF.setAdvertising({}, DEFAULT_ADVERTISING_OPTIONS);
|
||||||
|
}
|
||||||
|
|
||||||
|
NRF.setAdvertising(data, { showName: false, interval: 200 });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Update acceleration
|
// Update acceleration
|
||||||
Bangle.on('accel', function(newAcc) {
|
Bangle.on('accel', function(newAcc) {
|
||||||
acc = newAcc;
|
acc = newAcc;
|
||||||
|
isNewAccData = true;
|
||||||
|
|
||||||
if(isAccMenu) {
|
if(isAccMenu) {
|
||||||
accMenu.x.value = acc.x.toFixed(2);
|
accMenu.x.value = acc.x.toFixed(2);
|
||||||
|
|
@ -119,6 +155,7 @@ Bangle.on('accel', function(newAcc) {
|
||||||
// Update barometer
|
// Update barometer
|
||||||
Bangle.on('pressure', function(newBar) {
|
Bangle.on('pressure', function(newBar) {
|
||||||
bar = newBar;
|
bar = newBar;
|
||||||
|
isNewBarData = true;
|
||||||
|
|
||||||
if(isBarMenu) {
|
if(isBarMenu) {
|
||||||
barMenu.Altitude.value = bar.altitude.toFixed(1) + 'm';
|
barMenu.Altitude.value = bar.altitude.toFixed(1) + 'm';
|
||||||
|
|
@ -131,6 +168,7 @@ Bangle.on('pressure', function(newBar) {
|
||||||
// Update GPS
|
// Update GPS
|
||||||
Bangle.on('GPS', function(newGps) {
|
Bangle.on('GPS', function(newGps) {
|
||||||
gps = newGps;
|
gps = newGps;
|
||||||
|
isNewGpsData = true;
|
||||||
|
|
||||||
if(isGpsMenu) {
|
if(isGpsMenu) {
|
||||||
gpsMenu.Lat.value = gps.lat.toFixed(4);
|
gpsMenu.Lat.value = gps.lat.toFixed(4);
|
||||||
|
|
@ -145,6 +183,7 @@ Bangle.on('GPS', function(newGps) {
|
||||||
// Update heart rate monitor
|
// Update heart rate monitor
|
||||||
Bangle.on('HRM', function(newHrm) {
|
Bangle.on('HRM', function(newHrm) {
|
||||||
hrm = newHrm;
|
hrm = newHrm;
|
||||||
|
isNewHrmData = true;
|
||||||
|
|
||||||
if(isHrmMenu) {
|
if(isHrmMenu) {
|
||||||
hrmMenu.BPM.value = hrm.bpm;
|
hrmMenu.BPM.value = hrm.bpm;
|
||||||
|
|
@ -156,6 +195,7 @@ Bangle.on('HRM', function(newHrm) {
|
||||||
// Update magnetometer
|
// Update magnetometer
|
||||||
Bangle.on('mag', function(newMag) {
|
Bangle.on('mag', function(newMag) {
|
||||||
mag = newMag;
|
mag = newMag;
|
||||||
|
isNewMagData = true;
|
||||||
|
|
||||||
if(isMagMenu) {
|
if(isMagMenu) {
|
||||||
magMenu.x.value = mag.x;
|
magMenu.x.value = mag.x;
|
||||||
|
|
@ -169,9 +209,10 @@ Bangle.on('mag', function(newMag) {
|
||||||
|
|
||||||
// On start: enable sensors and display main menu
|
// On start: enable sensors and display main menu
|
||||||
g.clear();
|
g.clear();
|
||||||
transmitAppName();
|
NRF.setAdvertising({}, DEFAULT_ADVERTISING_OPTIONS);
|
||||||
Bangle.setBarometerPower(isBarEnabled, APP_ID);
|
Bangle.setBarometerPower(isBarEnabled, APP_ID);
|
||||||
Bangle.setGPSPower(isGpsEnabled, APP_ID);
|
Bangle.setGPSPower(isGpsEnabled, APP_ID);
|
||||||
Bangle.setHRMPower(isHrmEnabled, APP_ID);
|
Bangle.setHRMPower(isHrmEnabled, APP_ID);
|
||||||
Bangle.setCompassPower(isMagEnabled, APP_ID);
|
Bangle.setCompassPower(isMagEnabled, APP_ID);
|
||||||
E.showMenu(mainMenu);
|
E.showMenu(mainMenu);
|
||||||
|
setInterval(transmitUpdatedSensorData, 1000);
|
||||||
Loading…
Reference in New Issue