BangleApps/apps/android/boot.js

56 lines
2.4 KiB
JavaScript
Raw Normal View History

2024-05-21 20:53:50 +00:00
/* global GB */
{
// settings var is deleted after this executes to save memory
let settings = Object.assign({rp:true,as:true,vibrate:".."},
require("Storage").readJSON("android.settings.json",1)||{}
);
let _GB = global.GB;
global.GB = e => {
// feed a copy to other handlers if there were any
if (_GB) setTimeout(_GB,0,Object.assign({},e));
Bangle.emit("GB",e);
require("android").gbHandler(e);
};
// HTTP request handling - see the readme
Bangle.http = (url,options)=>require("android").httpHandler(url,options);
// Battery monitor
let sendBattery = function() { require("android").gbSend({ t: "status", bat: E.getBattery(), chg: Bangle.isCharging()?1:0 }); }
Bangle.on("charging", sendBattery);
NRF.on("connect", () => setTimeout(function() {
sendBattery();
require("android").gbSend({t: "ver", fw: process.env.VERSION, hw: process.env.HWVERSION});
GB({t:"force_calendar_sync_start"}); // send a list of our calendar entries to start off the sync process
}, 2000));
NRF.on("disconnect", () => {
// disable HRM/activity monitoring ('act' message)
GB({t:"act",stp:0,hrm:0,int:0}); // just call the handler to save duplication
// remove all messages on disconnect (if enabled)
var settings = require("Storage").readJSON("android.settings.json",1)||{};
if (!settings.keep)
require("messages").clearAll();
});
setInterval(sendBattery, 10*60*1000);
2023-08-09 08:16:33 +00:00
// Health tracking - if 'realtime' data is sent with 'rt:1', but let's still send our activity log every 10 mins
Bangle.on('health', h=>{
require("android").gbSend({ t: "act", stp: h.steps, hrm: h.bpm, mov: h.movement });
});
// Music control
Bangle.musicControl = cmd => {
// play/pause/next/previous/volumeup/volumedown
require("android").gbSend({ t: "music", n:cmd });
};
// Message response
Bangle.messageResponse = (msg,response) => {
if (msg.id=="call") return require("android").gbSend({ t: "call", n:response?"ACCEPT":"REJECT" });
if (isFinite(msg.id)) return require("android").gbSend({ t: "notify", n:response?"OPEN":"DISMISS", id: msg.id });
// error/warn here?
};
Bangle.messageIgnore = msg => {
if (isFinite(msg.id)) return require("android").gbSend({ t: "notify", n:"MUTE", id: msg.id });
};
// GPS overwrite logic
if (settings.overwriteGps) require("android").overwriteGPS();
// remove settings object so it's not taking up RAM
delete settings;
}