parent
c3605c42c1
commit
13525cd11d
|
|
@ -1,23 +1,47 @@
|
||||||
(function() {
|
(function() {
|
||||||
var gatt;
|
|
||||||
|
|
||||||
//Would it be better to scan by uuid rather than name?
|
var state = {gatt : null, primary : null, temp : null, data : null};
|
||||||
NRF.requestDevice({ timeout: 20000, filters: [{ name: 'CORE [a]' }] }).then(function(device) {
|
// Would it be better to scan by uuid rather than name?
|
||||||
return device.gatt.connect();
|
NRF.requestDevice({timeout : 20000, filters : [ {namePrefix : 'CORE'} ]})
|
||||||
}).then(function(g) {
|
// NRF.requestDevice({timeout : 20000, filters : [ {services :
|
||||||
gatt = g;
|
// '1809','2100'} ]})
|
||||||
return gatt.getPrimaryService("1809");
|
.then(function(device) {
|
||||||
}).then(function(service) {
|
return device.gatt.connect();
|
||||||
return service.getCharacteristic("2A1C");
|
})
|
||||||
}).then(function(characteristic) {
|
.then(function(g) {
|
||||||
characteristic.on('characteristicvaluechanged', function(event) {
|
state.gatt = g;
|
||||||
var dv = event.target.value;
|
return state.gatt
|
||||||
var core = (dv.buffer[2]*256+dv.buffer[1])/100;
|
.getPrimaryService('00002100-5b1e-4347-b07c-97b514dae121')
|
||||||
Bangle.emit('Core',{
|
.then(function(service) {
|
||||||
temp:core
|
state.primary = service;
|
||||||
});
|
return state.primary.getCharacteristic(
|
||||||
});
|
'00002101-5b1e-4347-b07c-97b514dae121');
|
||||||
return characteristic.startNotifications();
|
})
|
||||||
}).then(function() {
|
.then(function(c) {
|
||||||
|
state.data = c;
|
||||||
|
state.data.on('characteristicvaluechanged', function(event) {
|
||||||
|
var dv = event.target.value;
|
||||||
|
var flags = dv.buffer[0];
|
||||||
|
var unit, core = -1, skin = -1;
|
||||||
|
|
||||||
|
if (flags & 8) {
|
||||||
|
unit = "F";
|
||||||
|
} else {
|
||||||
|
unit = "C";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & 1)
|
||||||
|
skin = (dv.buffer[4] * 256 + dv.buffer[3]) / 100;
|
||||||
|
if (flags & 2)
|
||||||
|
core = (dv.buffer[2] * 256 + dv.buffer[1]) / 100;
|
||||||
|
|
||||||
|
Bangle.emit('CoreTemp', {core : core, skin : skin, unit : unit});
|
||||||
|
});
|
||||||
|
return c.startNotifications();
|
||||||
|
})
|
||||||
|
.catch(function(e) {
|
||||||
|
E.showMessage(e.toString(), "ERROR");
|
||||||
|
console.log(e);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,25 @@
|
||||||
|
|
||||||
|
|
||||||
Bangle.setLCDPower(1);
|
Bangle.setLCDPower(1);
|
||||||
Bangle.setLCDTimeout(0);
|
Bangle.setLCDTimeout(0);
|
||||||
var btm = g.getHeight()-1;
|
var btm = g.getHeight() - 1;
|
||||||
|
|
||||||
function onCore(c) {
|
function onCore(c) {
|
||||||
var px = g.getWidth()/2;
|
var px = g.getWidth() / 2;
|
||||||
g.setFontAlign(0,0);
|
g.setFontAlign(0, 0);
|
||||||
g.clearRect(0,24,g.getWidth(),80);
|
g.clearRect(0, 24, g.getWidth(), g.getHeight() - 24);
|
||||||
var str = c.temp + "C";
|
|
||||||
g.setFontVector(40).drawString(str,px,45);
|
var core = "Core: " + c.core + c.unit;
|
||||||
|
var skin = "Skin: " + c.skin + c.unit;
|
||||||
|
|
||||||
|
g.setFontVector(24).drawString(core, px, 45);
|
||||||
|
g.setFontVector(24).drawString(skin, px, 65);
|
||||||
}
|
}
|
||||||
Bangle.on('Core', onCore);
|
Bangle.on('CoreTemp', onCore);
|
||||||
|
|
||||||
g.clear();
|
g.clear();
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
|
|
||||||
g.reset().setFont("6x8",2).setFontAlign(0,0);
|
g.reset().setFont("6x8", 2).setFontAlign(0, 0);
|
||||||
g.drawString("Please wait...",g.getWidth()/2,g.getHeight()/2 - 16);
|
g.drawString("Please wait...", g.getWidth() / 2, g.getHeight() / 2 - 16);
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,9 @@ ${track[0].Heartrate!==undefined ? `<gx:SimpleArrayField name="heartrate" type="
|
||||||
</gx:SimpleArrayField>`:``}
|
</gx:SimpleArrayField>`:``}
|
||||||
${track[0].Steps!==undefined ? `<gx:SimpleArrayField name="steps" type="int">
|
${track[0].Steps!==undefined ? `<gx:SimpleArrayField name="steps" type="int">
|
||||||
<displayName>Step Count</displayName>`:``}
|
<displayName>Step Count</displayName>`:``}
|
||||||
|
${track[0].Core!==undefined ? `<gx:SimpleArrayField name="temp" type="int">
|
||||||
|
<displayName>Core Temp</displayName>
|
||||||
|
</gx:SimpleArrayField>`:``}
|
||||||
</gx:SimpleArrayField>
|
</gx:SimpleArrayField>
|
||||||
</Schema>
|
</Schema>
|
||||||
<Folder>
|
<Folder>
|
||||||
|
|
@ -37,6 +40,9 @@ ${track.map(pt=>` <gx:value>${0|pt.Heartrate}</gx:value>\n`).join("")
|
||||||
${track[0].Steps!==undefined ? `<gx:SimpleArrayData name="steps">
|
${track[0].Steps!==undefined ? `<gx:SimpleArrayData name="steps">
|
||||||
${track.map(pt=>` <gx:value>${0|pt.Steps}</gx:value>\n`).join("")}
|
${track.map(pt=>` <gx:value>${0|pt.Steps}</gx:value>\n`).join("")}
|
||||||
</gx:SimpleArrayData>`:``}
|
</gx:SimpleArrayData>`:``}
|
||||||
|
${track[0].Core!==undefined ? `<gx:SimpleArrayData name="temp">
|
||||||
|
${track.map(pt=>` <gx:value>${0|pt.Core}</gx:value>\n`).join("")}
|
||||||
|
</gx:SimpleArrayData>`:``}
|
||||||
</SchemaData>
|
</SchemaData>
|
||||||
</ExtendedData>
|
</ExtendedData>
|
||||||
</gx:Track>
|
</gx:Track>
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,34 @@
|
||||||
draw : (x,y) => g.setColor(hasBPM?"#f00":"#888").drawImage(atob("DAyBAAAAAD/H/n/n/j/D/B+AYAAAAA=="),x,y)
|
draw : (x,y) => g.setColor(hasBPM?"#f00":"#888").drawImage(atob("DAyBAAAAAD/H/n/n/j/D/B+AYAAAAA=="),x,y)
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
temp:function() {
|
||||||
|
var temp = 0;
|
||||||
|
var hasCore = false;
|
||||||
|
function onCore(c) {
|
||||||
|
temp=c.core;
|
||||||
|
hasCore = true;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
name : "Core",
|
||||||
|
fields : ["Core"],
|
||||||
|
getValues : () => {
|
||||||
|
var r = temp;
|
||||||
|
return r;
|
||||||
|
},
|
||||||
|
start : () => {
|
||||||
|
hasCore = false;
|
||||||
|
Bangle.on('CoreTemp', onCore);
|
||||||
|
// Bangle.setHRMPower(1,"recorder");
|
||||||
|
},
|
||||||
|
stop : () => {
|
||||||
|
hasCore = false;
|
||||||
|
Bangle.removeListener('CoreTemp', onCore);
|
||||||
|
// Bangle.setHRMPower(0,"recorder");
|
||||||
|
},
|
||||||
|
draw : (x,y) => g.reset().drawImage(atob("DAyBAAADDHnnnnnnnnnnjDmDnDnAAA=="),x,y)
|
||||||
|
};
|
||||||
|
},
|
||||||
steps:function() {
|
steps:function() {
|
||||||
var lastSteps = 0;
|
var lastSteps = 0;
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue