recorder:fix ref error missing settings obj #3282

master
Gordon Williams 2024-03-25 10:43:40 +00:00
parent 6af5a2cfb4
commit cb54fb59a0
3 changed files with 11 additions and 12 deletions

View File

@ -47,3 +47,5 @@
setInterval. setInterval.
0.38: Tweaks to speed up track rendering 0.38: Tweaks to speed up track rendering
0.39: Minor code improvements 0.39: Minor code improvements
0.40: Fix reference error from missing `settings` object in widget on 1 sec recordings with gps.
Fix HRM source never being set in output data

View File

@ -2,7 +2,7 @@
"id": "recorder", "id": "recorder",
"name": "Recorder", "name": "Recorder",
"shortName": "Recorder", "shortName": "Recorder",
"version": "0.39", "version": "0.40",
"description": "Record GPS position, heart rate and more in the background, then download to your PC.", "description": "Record GPS position, heart rate and more in the background, then download to your PC.",
"icon": "app.png", "icon": "app.png",
"tags": "tool,outdoors,gps,widget,clkinfo", "tags": "tool,outdoors,gps,widget,clkinfo",

View File

@ -1,8 +1,8 @@
{ {
let storageFile; // file for GPS track let storageFile; // file for GPS track
let entriesWritten = 0;
let activeRecorders = []; let activeRecorders = [];
let writeSetup; let writeSetup; // the interval for writing, or 'true' if using GPS
let writeSubSecs; // true if we should write .1s for time, otherwise round to nearest second
let loadSettings = function() { let loadSettings = function() {
var settings = require("Storage").readJSON("recorder.json",1)||{}; var settings = require("Storage").readJSON("recorder.json",1)||{};
@ -63,7 +63,7 @@
function onHRM(h) { function onHRM(h) {
bpmConfidence = h.confidence; bpmConfidence = h.confidence;
bpm = h.bpm; bpm = h.bpm;
srv = h.src; src = h.src;
} }
return { return {
name : "HR", name : "HR",
@ -176,11 +176,10 @@
}; };
let getCSVHeaders = activeRecorders => ["Time"].concat(activeRecorders.map(r=>r.fields)); let getCSVHeaders = activeRecorders => ["Time"].concat(activeRecorders.map(r=>r.fields));
let writeLog = function(period) { let writeLog = function() {
entriesWritten++;
WIDGETS["recorder"].draw(); WIDGETS["recorder"].draw();
try { try {
var fields = [period===1?getTime().toFixed(1):Math.round(getTime())]; var fields = [writeSubSecs?getTime().toFixed(1):Math.round(getTime())];
activeRecorders.forEach(recorder => fields.push.apply(fields,recorder.getValues())); activeRecorders.forEach(recorder => fields.push.apply(fields,recorder.getValues()));
if (storageFile) storageFile.write(fields.join(",")+"\n"); if (storageFile) storageFile.write(fields.join(",")+"\n");
} catch(e) { } catch(e) {
@ -194,18 +193,15 @@
} }
} }
let writeOnGPS = function() {writeLog(settings.period);};
// Called by the GPS app to reload settings and decide what to do // Called by the GPS app to reload settings and decide what to do
let reload = function() { let reload = function() {
var settings = loadSettings(); var settings = loadSettings();
if (typeof writeSetup === "number") clearInterval(writeSetup); if (typeof writeSetup === "number") clearInterval(writeSetup);
writeSetup = undefined; writeSetup = undefined;
Bangle.removeListener('GPS', writeOnGPS); Bangle.removeListener('GPS', writeLog);
activeRecorders.forEach(rec => rec.stop()); activeRecorders.forEach(rec => rec.stop());
activeRecorders = []; activeRecorders = [];
entriesWritten = 0;
if (settings.recording) { if (settings.recording) {
// set up recorders // set up recorders
@ -225,8 +221,9 @@
} }
// start recording... // start recording...
WIDGETS["recorder"].draw(); WIDGETS["recorder"].draw();
writeSubSecs = period===1;
if (settings.period===1 && settings.record.includes("gps")) { if (settings.period===1 && settings.record.includes("gps")) {
Bangle.on('GPS', writeOnGPS); Bangle.on('GPS', writeLog);
writeSetup = true; writeSetup = true;
} else { } else {
writeSetup = setInterval(writeLog, settings.period*1000, settings.period); writeSetup = setInterval(writeLog, settings.period*1000, settings.period);