Reorganise again.

pull/1189/head
Ivor Hewitt 2021-12-19 17:09:43 +00:00
parent 3286d6cb2d
commit 52de03cad8
5 changed files with 40 additions and 110 deletions

View File

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

View File

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

View File

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

View File

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

View File

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