import document from "document"; import clock from "clock"; import { preferences } from "user-settings"; import { HeartRateSensor } from "heart-rate"; import { vibration } from "haptics"; import { today } from "user-activity"; import { display } from "display"; import * as messaging from "messaging"; import * as fs from "fs"; import * as digits from "../common/digits"; let hrm = new HeartRateSensor; let hrTimer; let touchArea = document.getElementById('touchArea'); let settings = { colors: ['#843E86', '#00b0a0', 'white'], dateReverse: false // US date }; var storedSettings; var fileSuccess = true; console.log('reading settings'); try { storedSettings = fs.readFileSync("settings.txt", "cbor"); } catch(err) { fileSuccess = false; console.log('settings not found'); } if (fileSuccess) { settings = storedSettings; } function updateClock() { let currDate = new Date(); let hours = currDate.getHours(); let displayHours = hours; let day = currDate.getDate(); let month = currDate.getMonth()+1; if (preferences.clockDisplay === '12h') { displayHours = displayHours % 12; displayHours = displayHours ? displayHours : 12; } let minutes = currDate.getMinutes(); let newDigits = [ Math.floor(displayHours/10), displayHours%10, Math.floor(minutes/10), minutes%10 ]; newDigits = [1, 2, 5, 7]; let dateString; if (settings.dateReverse) { dateString = month+"/"+day; } else { dateString = day+"/"+month; } digits.setSmallDigits('date', dateString, true); digits.setDigits([newDigits[0], newDigits[1], newDigits[2], newDigits[3]], settings.colors); } hrm.onreading = () => { if (display.on) { let heartRate = (hrm.heartRate || null); digits.setSmallDigits('hr', heartRate, false); } clearTimeout(hrTimer); hrTimer = setTimeout(() => { digits.setSmallDigits('hr', null, false); }, 5000); hrm.stop(); } function updateSteps() { if (display.on) { let steps = (today.adjusted.steps || null); digits.setSmallDigits('steps', steps, true); } } function updateHealthDisplay() { hrm.start(); updateSteps(); } clock.granularity = "minutes"; clock.ontick = () => updateClock(); setInterval(() => { updateHealthDisplay(); }, 2000); updateHealthDisplay(); messaging.peerSocket.onmessage = e => { console.log("Message received -> "+e.data.key+": "+e.data.newValue); display.poke(); vibration.start("bump"); switch (e.data.key) { case 'hrcolor': settings.colors[0] = e.data.newValue; break; case 'mincolor': settings.colors[1] = e.data.newValue; break; case 'date': settings.dateReverse = e.data.newValue; break; }; updateClock(); fs.writeFileSync("settings.txt", settings, "cbor"); } messaging.peerSocket.onopen = () => { console.log("Clockface opened socket"); }; messaging.peerSocket.close = () => { console.log("Clockface closed socket"); }; messaging.peerSocket.onerror = (err) => { console.log("Clockface socket error: " + err.code + " - " + err.message); }