mirror of https://github.com/espruino/BangleApps
Reorganise again.
parent
3286d6cb2d
commit
52de03cad8
|
@ -4971,7 +4971,8 @@
|
|||
{"name":"coretemp.wid.js","url":"widget.js"},
|
||||
{"name":"coretemp.app.js","url":"coretemp.js"},
|
||||
{"name":"coretemp.settings.js","url":"settings.js"},
|
||||
{"name":"coretemp.img","url":"coretemp-icon.js","evaluate":true}
|
||||
{"name":"coretemp.img","url":"coretemp-icon.js","evaluate":true},
|
||||
{"name":"coretemp.boot.js","url":"boot.js"}
|
||||
],
|
||||
"data": [{"name":"coretemp.json","url":"app-settings.json"}]
|
||||
},
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
//If enabled run in the background continuously.
|
||||
|
||||
(function() {
|
||||
|
||||
var settings = {};
|
||||
var device;
|
||||
var gatt;
|
||||
var service;
|
||||
|
@ -51,11 +54,11 @@ function getSensorBatteryLevel(gatt) {
|
|||
}
|
||||
|
||||
function connection_setup() {
|
||||
E.showMessage("Scanning for CoreTemp sensor...");
|
||||
console.log("Scanning for CoreTemp sensor...");
|
||||
NRF.requestDevice({timeout : 20000, filters : [ {namePrefix : 'CORE'} ]})
|
||||
.then(function(d) {
|
||||
device = d;
|
||||
E.showMessage("Found device");
|
||||
console.log("Found device");
|
||||
return device.gatt.connect();
|
||||
})
|
||||
.then(function(g) {
|
||||
|
@ -76,10 +79,10 @@ function connection_setup() {
|
|||
.then(function() {
|
||||
console.log("Done!");
|
||||
// getSensorBatteryLevel(gatt);
|
||||
g.reset().clearRect(Bangle.appRect).flip();
|
||||
// g.reset().clearRect(Bangle.appRect).flip();
|
||||
})
|
||||
.catch(function(e) {
|
||||
E.showMessage(e.toString(), "ERROR");
|
||||
console.log(e.toString(), "ERROR");
|
||||
console.log(e);
|
||||
});
|
||||
}
|
||||
|
@ -88,13 +91,17 @@ function connection_end() {
|
|||
if (gatt != undefined) gatt.disconnect();
|
||||
}
|
||||
|
||||
connection_setup();
|
||||
settings = require("Storage").readJSON("coretemp.json",1)||{};
|
||||
console.log("Settings:");
|
||||
console.log(settings);
|
||||
|
||||
if (settings.enabled) {
|
||||
connection_setup();
|
||||
NRF.on('disconnect', connection_setup);
|
||||
}
|
||||
|
||||
E.on('kill', () => { connection_end(); });
|
||||
|
||||
// move into setup
|
||||
NRF.on('disconnect', connection_setup); // restart if disconnected
|
||||
|
||||
// Bangle.loadWidgets();
|
||||
// Bangle.drawWidgets();
|
||||
})();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Simply listen for core events and show
|
||||
// Simply listen for core events and show data
|
||||
|
||||
Bangle.setLCDPower(1);
|
||||
Bangle.setLCDTimeout(0);
|
||||
|
|
|
@ -22,7 +22,14 @@
|
|||
storage.write(SETTINGS_FILE, s);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function updateSettings() {
|
||||
require("Storage").write("coretemp.json", settings);
|
||||
if (WIDGETS["sensors"])
|
||||
WIDGETS["sensors"].reload();
|
||||
return;
|
||||
}
|
||||
|
||||
const menu = {
|
||||
'' : {'title' : 'CoreTemp sensor'},
|
||||
'< Back' : back,
|
||||
|
|
|
@ -1,124 +1,38 @@
|
|||
// Widget to run sensors
|
||||
// BT HRM / coretemp / csc
|
||||
// Widget to show sensor status
|
||||
(() => {
|
||||
var settings = {};
|
||||
|
||||
var device;
|
||||
var gatt;
|
||||
var service;
|
||||
var characteristic;
|
||||
|
||||
class CoreSensor {
|
||||
constructor() {
|
||||
this.unit = "";
|
||||
this.core = -1;
|
||||
this.skin = -1;
|
||||
this.battery = 0;
|
||||
}
|
||||
|
||||
updateSensor(event) {
|
||||
if (event.target.uuid == "00002101-5b1e-4347-b07c-97b514dae121") {
|
||||
var dv = event.target.value;
|
||||
var flags = dv.buffer[0];
|
||||
|
||||
if (flags & 8) {
|
||||
this.unit = "F";
|
||||
} else {
|
||||
this.unit = "C";
|
||||
}
|
||||
|
||||
if (flags & 1) this.skin = (dv.buffer[4] * 256 + dv.buffer[3]) / 100;
|
||||
if (flags & 2) this.core = (dv.buffer[2] * 256 + dv.buffer[1]) / 100;
|
||||
|
||||
Bangle.emit('CoreTemp',
|
||||
{core : this.core, skin : this.skin, unit : this.unit});
|
||||
}
|
||||
}
|
||||
|
||||
updateBatteryLevel(event) {
|
||||
if (event.target.uuid == "0x2a19")
|
||||
this.battery = event.target.value.getUint8(0);
|
||||
}
|
||||
}
|
||||
|
||||
var mySensor = new CoreSensor();
|
||||
|
||||
function getSensorBatteryLevel(gatt) {
|
||||
gatt.getPrimaryService("180f")
|
||||
.then(function(s) { return s.getCharacteristic("2a19"); })
|
||||
.then(function(c) {
|
||||
c.on('characteristicvaluechanged',
|
||||
(event) => mySensor.updateBatteryLevel(event));
|
||||
return c.startNotifications();
|
||||
});
|
||||
}
|
||||
|
||||
function connection_setup() {
|
||||
E.showMessage("Scanning for CoreTemp sensor...");
|
||||
NRF.requestDevice({timeout : 20000, filters : [ {namePrefix : 'CORE'} ]})
|
||||
.then(function(d) {
|
||||
device = d;
|
||||
E.showMessage("Found device");
|
||||
return device.gatt.connect();
|
||||
})
|
||||
.then(function(g) {
|
||||
gatt = g;
|
||||
return gatt.getPrimaryService('00002100-5b1e-4347-b07c-97b514dae121');
|
||||
})
|
||||
.then(function(s) {
|
||||
service = s;
|
||||
return service.getCharacteristic(
|
||||
'00002101-5b1e-4347-b07c-97b514dae121');
|
||||
})
|
||||
.then(function(c) {
|
||||
characteristic = c;
|
||||
characteristic.on('characteristicvaluechanged',
|
||||
(event) => mySensor.updateSensor(event));
|
||||
return characteristic.startNotifications();
|
||||
})
|
||||
.then(function() {
|
||||
console.log("Done!");
|
||||
// getSensorBatteryLevel(gatt);
|
||||
g.reset().clearRect(Bangle.appRect).flip();
|
||||
})
|
||||
.catch(function(e) {
|
||||
E.showMessage(e.toString(), "ERROR");
|
||||
console.log(e);
|
||||
});
|
||||
}
|
||||
function connection_end() {
|
||||
if (gatt != undefined) gatt.disconnect();
|
||||
}
|
||||
var count=0;
|
||||
|
||||
// draw your widget
|
||||
function draw() {
|
||||
// if (!) return;
|
||||
if (!settings.enabled) return;
|
||||
g.reset();
|
||||
g.setFontAlign(0,0);
|
||||
g.clearRect(this.x,this.y,this.x+23,this.y+23);
|
||||
g.setColor(settings.enabled?"#00ff00":"#80ff00");
|
||||
g.setColor((count&1)?"#00ff00":"#80ff00");
|
||||
g.fillCircle(this.x+6,this.y+6,4);
|
||||
g.fillCircle(this.x+16,this.y+16,4);
|
||||
g.setColor(-1); // change color back to be nice to other apps
|
||||
}
|
||||
|
||||
// function onHRM(hrm) {
|
||||
// WIDGETS["sensors"].draw();
|
||||
// }
|
||||
// Set a listener to 'twinkle'
|
||||
function onTemp(temp) {
|
||||
count=count+1;
|
||||
WIDGETS["sensors"].draw();
|
||||
}
|
||||
|
||||
// Called by sensor app to enable listeners
|
||||
// Called by sensor app to update status
|
||||
function reload() {
|
||||
settings = require("Storage").readJSON("coretemp.json",1)||{};
|
||||
// settings.fileNbr |= 0;
|
||||
|
||||
// Bangle.removeListener('HRM',onHRM);
|
||||
Bangle.removeListener('CoreTemp',onTemp);
|
||||
|
||||
if (settings.coreOn) {
|
||||
if (settings.enabled) {
|
||||
WIDGETS["sensors"].width = 24;
|
||||
connection_setup();
|
||||
Bangle.on('CoreTemp', onTemp);
|
||||
} else {
|
||||
WIDGETS["sensors"].width = 0;
|
||||
connection_end();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -129,4 +43,5 @@ function connection_end() {
|
|||
}};
|
||||
// load settings, set correct widget width
|
||||
reload();
|
||||
|
||||
})()
|
||||
|
|
Loading…
Reference in New Issue