mirror of https://github.com/espruino/BangleApps
158 lines
3.5 KiB
JavaScript
158 lines
3.5 KiB
JavaScript
var counter = 15;
|
|
var logging_started;
|
|
var interval;
|
|
var value;
|
|
var filt;
|
|
|
|
var fileClosed = 0;
|
|
var Storage = require("Storage");
|
|
var file;
|
|
|
|
var screenSize = g.getHeight();
|
|
|
|
|
|
function exists(name){
|
|
s = require('Storage');
|
|
var fileList = s.list();
|
|
var fileExists = false;
|
|
for (let i = 0; i < fileList.length; i++) {
|
|
fileExists = fileList[i].includes(name);
|
|
if(fileExists){
|
|
break;
|
|
}
|
|
}
|
|
return fileExists;
|
|
}
|
|
|
|
function update_timer() {
|
|
g.clear();
|
|
g.setColor("#CC00CC");
|
|
g.setFont("6x8", 4);
|
|
g.setFontAlign(0, 0); // center font
|
|
|
|
g.drawString(counter, screenSize/2, screenSize/2);
|
|
g.setFont("6x8", 2);
|
|
//g.setFontAlign(-1, -1);
|
|
g.drawString("+", screenSize-10, screenSize/2);
|
|
g.drawString("-", 10, screenSize/2);
|
|
g.drawString("GO",screenSize/2 , (screenSize/2)+(screenSize/5));
|
|
//g.setColor("#ffffff");
|
|
//g.setFontAlign(0, 0); // center font
|
|
g.drawString("Timer(minutes)", screenSize/2+5,screenSize/4 );
|
|
g.setFont("6x8", 4);
|
|
g.drawString("^",screenSize/2 , 150);
|
|
|
|
if (!logging_started)
|
|
g.flip();
|
|
}
|
|
|
|
function btn2Pressed() {
|
|
if (!logging_started) {
|
|
if (counter < 120)
|
|
counter += 15;
|
|
else
|
|
counter = 15;
|
|
update_timer();
|
|
}
|
|
}
|
|
|
|
function btn3Pressed() {
|
|
if (!logging_started) {
|
|
if (counter > 15)
|
|
counter -= 15;
|
|
else
|
|
counter = 120;
|
|
update_timer();
|
|
}
|
|
}
|
|
|
|
function btn1Pressed() {
|
|
if (!logging_started) {
|
|
var filename = "";
|
|
var fileset = false;
|
|
|
|
for (let i = 0; i < 5; i++) {
|
|
filename = "HRM_data" + i.toString() + ".csv";
|
|
if(exists(filename) == 0){
|
|
file = require("Storage").open(filename,"w");
|
|
console.log("creating new file " + filename);
|
|
fileset = true;
|
|
}
|
|
if(fileset){
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!fileset){
|
|
console.log("overwiting file");
|
|
file = require("Storage").open("HRM_data.csv","w");
|
|
}
|
|
|
|
file.write("");
|
|
file = require("Storage").open(filename,"a");
|
|
|
|
//launchtime = 0 | getTime();
|
|
//file.write(launchtime + "," + "\n");
|
|
logging_started = true;
|
|
counter = counter * 60;
|
|
interval = setInterval(countDown, 1000);
|
|
Bangle.setHRMPower(1);
|
|
}
|
|
}
|
|
|
|
function fmtMSS(e) {
|
|
h = Math.floor(e / 3600);
|
|
e %= 3600;
|
|
m = Math.floor(e / 60);
|
|
s = e % 60;
|
|
return h + ":" + m + ':' + s;
|
|
}
|
|
|
|
function countDown() {
|
|
g.clear();
|
|
counter--;
|
|
if (counter <= 0 && fileClosed == 0) {
|
|
Bangle.setHRMPower(0);
|
|
clearInterval(interval);
|
|
g.drawString("Done", g.getWidth() / 2, g.getHeight() / 2);
|
|
Bangle.buzz(500, 1);
|
|
fileClosed = 1;
|
|
}
|
|
else
|
|
g.drawString(fmtMSS(counter), g.getWidth() / 2, g.getHeight() / 2);
|
|
}
|
|
|
|
var HRVal = 0;
|
|
var HRConfidence = 0;
|
|
|
|
update_timer();
|
|
|
|
setWatch(btn1Pressed, BTN1, { repeat: true });
|
|
//setWatch(btn2Pressed, BTN2, { repeat: true });
|
|
//setWatch(btn3Pressed, BTN3, { repeat: true });
|
|
|
|
Bangle.on("swipe",function(directionLR, directionUD){
|
|
if (1==directionLR){
|
|
btn1Pressed();
|
|
}
|
|
else if (-1==directionUD || directionUD==1){
|
|
btn2Pressed();
|
|
}
|
|
else if(directionLR == -1){
|
|
btn3Pressed();
|
|
}
|
|
});
|
|
|
|
Bangle.on('HRM-raw', function (hrm) {
|
|
value = hrm.raw;
|
|
filt = hrm.filt;
|
|
//var dataArray = [value,filt,HRVal,HRConfidence];
|
|
file.write(value + "," + filt + "\n");
|
|
});
|
|
/*
|
|
Bangle.on('HRM', function (hrmB) {
|
|
HRVal = hrmB.bpm;
|
|
HRConfidence = hrmB.confidence;
|
|
});
|
|
*/
|