From e14d0460712e8798080d266a87df115852de43bf Mon Sep 17 00:00:00 2001 From: Ben Jabituya <74158243+jabituyaben@users.noreply.github.com> Date: Mon, 28 Dec 2020 18:53:17 +0000 Subject: [PATCH] Update app.js updated with declutter and additional options --- apps/HRV/app.js | 105 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 83 insertions(+), 22 deletions(-) diff --git a/apps/HRV/app.js b/apps/HRV/app.js index 98f577293..5628f0ba1 100644 --- a/apps/HRV/app.js +++ b/apps/HRV/app.js @@ -1,11 +1,25 @@ +var option = null; + var file = require("Storage").open("HR_log.csv", "w"); file.write(""); //reset log file = require("Storage").open("HR_log.csv", "a"); //debugging or analysis files -var cutoff_file = require("Storage").open("cuttoff.csv", "w"); -var peaks_file = require("Storage").open("peaks.csv", "w"); +var logfile = require("Storage").open("HRV_log.csv", "w"); +logfile.write(""); //reset HRV log + +logfile = require("Storage").open("HRV_log.csv", "a"); + +var timestamp = getTime(); +var csv = [ + "time", + "sample count", + "HR", + "HRV" + ]; +logfile.write(csv.join(",")+"\n"); + var debugging = true; var first_signals = 0; // ignore the first several signals @@ -21,9 +35,6 @@ var gap_threshold = 0.15; var hr_min = 40; var hr_max = 160; -g.setFontAlign(0, 0); // center font -g.setFont("6x8", 2); - function storeMyData(data, file_type) { log = raw_HR_array; // shift elements backwards - note the 4, because a Float32 is 4 bytes @@ -67,16 +78,8 @@ function turn_off() { g.drawString("processing 4/5", 120, 120); apply_cutoff(); - if(debugging) - for (let i = 0; i < 256; i++) { - cutoff_file.write(alternate_array[i] + "," + "\n"); - } - find_peaks(); - if(debugging) - for (let i = 0; i < pulse_array.length; i++) { - peaks_file.write(pulse_array[i] + "," + "\n"); - } + g.clear(); g.drawString("processing 5/5", 120, 120); @@ -108,7 +111,7 @@ function upscale() { } function rolling_average(values, count) { - temp_array = []; + var temp_array = []; for (let i = 0; i < values.length; i++) { temp_array = []; @@ -165,23 +168,81 @@ function calculate_HRV() { } gap_average = average(temp_array); var calculatedHR = (sample_frequency*60)/(gap_average/2); - g.flip(); + if(option == 0) + g.flip(); g.clear(); //var display_stdv = StandardDeviation(pulse_array).toFixed(1); var HRV = (StandardDeviation(temp_array) * (1 / (sample_frequency * 2) * 1000)).toFixed(0); g.drawString("HRV:" + HRV + "\nHR:" + calculatedHR.toFixed(0) +"\nSample Count:" + temp_array.length, 120, 120); - Bangle.buzz(500,1); + + if(option == 0){ + Bangle.buzz(500,1); + clearInterval(routine); + } + + else{ + var csv = [ + 0|getTime(), + temp_array.length, + calculatedHR.toFixed(0), + HRV + ]; + logfile.write(csv.join(",")+"\n"); + + for (let i = 0; i < raw_HR_array.length; i++) { + raw_HR_array[i] = null; + } + } } -g.clear(); -g.drawString("preparing", 120, 120); +function btn1Pressed() { + if(option === null){ + g.clear(); + g.drawString("one-off assessment", 120, 120); + option = 0; + Bangle.setHRMPower(1); + } +} -Bangle.setHRMPower(1); +function btn3Pressed() { + if(option === null){ + g.clear(); + g.drawString("continuous mode", 120, 120); + option = 1; + Bangle.setHRMPower(1); + } +} + +var routine = setInterval(function () { + first_signals = 0; // ignore the first several signals + pulsecount = 0; + BPM_array = []; + heartrate = []; + pulse_array = []; + Bangle.setHRMPower(1); +}, 300000); + +g.clear(); +g.setColor("#00ff7f"); +g.setFont("6x8", 2); +g.setFontAlign(-1,1); +g.drawString("continuous", 120, 210); +g.setFontAlign(-1,1); +g.drawString("one-time", 140, 50); + +g.setColor("#ffffff"); +g.setFontAlign(0, 0); // center font +g.drawString("read app change log", 120, 120); +g.drawString("for more info", 120, 140); + +setWatch(btn1Pressed, BTN1, {repeat:true}); +setWatch(btn3Pressed, BTN3, {repeat:true}); Bangle.on('HRM', function (hrm) { - g.flip(); - if (first_signals < 5) { + if(option == 0) + g.flip(); + if (first_signals < 3) { g.clear(); g.drawString("setting up...\nremain still " + first_signals * 20 + "%", 120, 120); first_signals++;