diff --git a/apps/coretemp/boot.js b/apps/coretemp/boot.js
index 59e227dad..a73c67b47 100644
--- a/apps/coretemp/boot.js
+++ b/apps/coretemp/boot.js
@@ -1,23 +1,47 @@
(function() {
- var gatt;
-
- //Would it be better to scan by uuid rather than name?
- NRF.requestDevice({ timeout: 20000, filters: [{ name: 'CORE [a]' }] }).then(function(device) {
- return device.gatt.connect();
- }).then(function(g) {
- gatt = g;
- return gatt.getPrimaryService("1809");
- }).then(function(service) {
- return service.getCharacteristic("2A1C");
- }).then(function(characteristic) {
- characteristic.on('characteristicvaluechanged', function(event) {
- var dv = event.target.value;
- var core = (dv.buffer[2]*256+dv.buffer[1])/100;
- Bangle.emit('Core',{
- temp:core
- });
- });
- return characteristic.startNotifications();
- }).then(function() {
+
+var state = {gatt : null, primary : null, temp : null, data : null};
+// Would it be better to scan by uuid rather than name?
+NRF.requestDevice({timeout : 20000, filters : [ {namePrefix : 'CORE'} ]})
+ // NRF.requestDevice({timeout : 20000, filters : [ {services :
+ // '1809','2100'} ]})
+ .then(function(device) {
+ return device.gatt.connect();
+ })
+ .then(function(g) {
+ state.gatt = g;
+ return state.gatt
+ .getPrimaryService('00002100-5b1e-4347-b07c-97b514dae121')
+ .then(function(service) {
+ state.primary = service;
+ return state.primary.getCharacteristic(
+ '00002101-5b1e-4347-b07c-97b514dae121');
+ })
+ .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);
+ });
});
})();
diff --git a/apps/coretemp/coretemp.js b/apps/coretemp/coretemp.js
index 226508c83..1856057a4 100644
--- a/apps/coretemp/coretemp.js
+++ b/apps/coretemp/coretemp.js
@@ -1,19 +1,25 @@
+
+
Bangle.setLCDPower(1);
Bangle.setLCDTimeout(0);
-var btm = g.getHeight()-1;
+var btm = g.getHeight() - 1;
function onCore(c) {
- var px = g.getWidth()/2;
- g.setFontAlign(0,0);
- g.clearRect(0,24,g.getWidth(),80);
- var str = c.temp + "C";
- g.setFontVector(40).drawString(str,px,45);
+ var px = g.getWidth() / 2;
+ g.setFontAlign(0, 0);
+ g.clearRect(0, 24, g.getWidth(), g.getHeight() - 24);
+
+ 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();
Bangle.loadWidgets();
Bangle.drawWidgets();
-g.reset().setFont("6x8",2).setFontAlign(0,0);
-g.drawString("Please wait...",g.getWidth()/2,g.getHeight()/2 - 16);
+g.reset().setFont("6x8", 2).setFontAlign(0, 0);
+g.drawString("Please wait...", g.getWidth() / 2, g.getHeight() / 2 - 16);
diff --git a/apps/recorder/interface.html b/apps/recorder/interface.html
index ad0de4887..81ce71e5d 100644
--- a/apps/recorder/interface.html
+++ b/apps/recorder/interface.html
@@ -19,6 +19,9 @@ ${track[0].Heartrate!==undefined ? `
Step Count`:``}
+${track[0].Core!==undefined ? `
+ Core Temp
+ `:``}
@@ -37,6 +40,9 @@ ${track.map(pt=>` ${0|pt.Heartrate}\n`).join("")
${track[0].Steps!==undefined ? `
${track.map(pt=>` ${0|pt.Steps}\n`).join("")}
`:``}
+${track[0].Core!==undefined ? `
+${track.map(pt=>` ${0|pt.Core}\n`).join("")}
+ `:``}
diff --git a/apps/recorder/widget.js b/apps/recorder/widget.js
index 09893bbb7..144164f4c 100644
--- a/apps/recorder/widget.js
+++ b/apps/recorder/widget.js
@@ -82,6 +82,34 @@
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() {
var lastSteps = 0;
return {