2020-03-26 21:30:34 +00:00
|
|
|
(() => {
|
|
|
|
const state = {
|
2020-04-02 18:36:58 +00:00
|
|
|
music: "stop",
|
2020-03-26 21:30:34 +00:00
|
|
|
|
|
|
|
musicInfo: {
|
|
|
|
artist: "",
|
|
|
|
album: "",
|
|
|
|
track: ""
|
|
|
|
},
|
|
|
|
|
2020-04-02 18:36:58 +00:00
|
|
|
scrollPos: 0
|
|
|
|
};
|
2020-03-26 21:30:34 +00:00
|
|
|
|
2020-05-29 08:37:44 +00:00
|
|
|
function settings() {
|
|
|
|
let settings = require('Storage').readJSON("gbridge.json", true) || {};
|
|
|
|
if (!("showIcon" in settings)) {
|
|
|
|
settings.showIcon = true;
|
|
|
|
}
|
|
|
|
return settings
|
|
|
|
}
|
2020-05-28 21:27:10 +00:00
|
|
|
|
2020-04-02 18:36:58 +00:00
|
|
|
function gbSend(message) {
|
2020-05-17 22:46:44 +00:00
|
|
|
Bluetooth.println("");
|
2020-04-02 18:36:58 +00:00
|
|
|
Bluetooth.println(JSON.stringify(message));
|
|
|
|
}
|
2020-03-26 21:30:34 +00:00
|
|
|
|
2020-04-02 18:36:58 +00:00
|
|
|
function handleNotificationEvent(event) {
|
2020-06-04 14:19:37 +00:00
|
|
|
require("notify").show(event);
|
2020-03-26 21:30:34 +00:00
|
|
|
Bangle.buzz();
|
2019-12-05 14:48:36 +00:00
|
|
|
}
|
|
|
|
|
2020-04-02 18:36:58 +00:00
|
|
|
function handleMusicStateUpdate(event) {
|
2020-04-07 20:08:29 +00:00
|
|
|
const changed = state.music === event.state
|
2020-04-02 18:36:58 +00:00
|
|
|
state.music = event.state
|
|
|
|
|
2020-05-29 08:41:19 +00:00
|
|
|
if (state.music === "play") {
|
2020-06-04 14:19:37 +00:00
|
|
|
require("notify").show({size:40, render:y => {
|
|
|
|
g.setColor(-1);
|
2020-04-02 18:36:58 +00:00
|
|
|
g.drawImage(require("heatshrink").decompress(atob("jEYwILI/EAv/8gP/ARcMgOAASN8h+A/kfwP8n4CD/E/gHgjg/HA=")), 8, y + 8);
|
|
|
|
g.setFontAlign(-1, -1);
|
|
|
|
var x = 40;
|
2020-06-04 14:19:37 +00:00
|
|
|
g.setFont("4x6", 2).drawString(state.musicInfo.artist, x, y + 8);
|
|
|
|
g.setFont("6x8", 1).drawString(state.musicInfo.track, x, y + 22);
|
|
|
|
}});
|
2020-04-02 18:36:58 +00:00
|
|
|
}
|
|
|
|
|
2020-05-29 08:41:19 +00:00
|
|
|
if (state.music === "pause") {
|
2020-06-04 14:19:37 +00:00
|
|
|
require("notify").hide();
|
2019-12-05 14:48:36 +00:00
|
|
|
}
|
2020-03-26 21:30:34 +00:00
|
|
|
}
|
2019-12-05 14:48:36 +00:00
|
|
|
|
2020-04-02 18:36:58 +00:00
|
|
|
function handleCallEvent(event) {
|
2020-05-29 08:41:19 +00:00
|
|
|
if (event.cmd === "accept") {
|
2020-06-04 14:19:37 +00:00
|
|
|
require("notify").show({
|
|
|
|
size: 55, title: event.name,
|
|
|
|
body: event.number, icon:require("heatshrink").decompress(atob("jEYwIMJj4CCwACJh4CCCIMOAQMGAQMHAQMDAQMBCIMB4PwgHz/EAn4CBj4CBg4CBgACCAAw="))});
|
2020-04-02 18:36:58 +00:00
|
|
|
Bangle.buzz();
|
2020-03-26 21:30:34 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-06-05 10:21:52 +00:00
|
|
|
function handleFindEvent(event) {
|
|
|
|
if (state.find) {
|
|
|
|
clearInterval(state.find);
|
|
|
|
delete state.find;
|
|
|
|
}
|
|
|
|
if (event.n)
|
|
|
|
state.find = setInterval(_=>{
|
|
|
|
Bangle.buzz();
|
|
|
|
setTimeout(_=>Bangle.beep(), 1000);
|
|
|
|
},2000);
|
|
|
|
}
|
|
|
|
|
2020-04-16 09:31:59 +00:00
|
|
|
var _GB = global.GB;
|
2020-03-26 21:30:34 +00:00
|
|
|
global.GB = (event) => {
|
|
|
|
switch (event.t) {
|
|
|
|
case "notify":
|
2020-04-02 18:36:58 +00:00
|
|
|
handleNotificationEvent(event);
|
2020-03-26 21:30:34 +00:00
|
|
|
break;
|
2019-12-05 14:48:36 +00:00
|
|
|
case "musicinfo":
|
2020-03-26 21:30:34 +00:00
|
|
|
state.musicInfo = event;
|
2019-12-05 14:48:36 +00:00
|
|
|
break;
|
|
|
|
case "musicstate":
|
2020-04-02 18:36:58 +00:00
|
|
|
handleMusicStateUpdate(event);
|
2020-03-26 21:30:34 +00:00
|
|
|
break;
|
|
|
|
case "call":
|
2020-04-02 18:36:58 +00:00
|
|
|
handleCallEvent(event);
|
2020-03-26 21:30:34 +00:00
|
|
|
break;
|
2020-06-05 10:21:52 +00:00
|
|
|
case "find":
|
|
|
|
handleFindEvent(event);
|
|
|
|
break;
|
2019-12-05 14:48:36 +00:00
|
|
|
}
|
2020-04-16 09:31:59 +00:00
|
|
|
if(_GB)setTimeout(_GB,0,event);
|
2019-12-05 14:48:36 +00:00
|
|
|
};
|
|
|
|
|
2020-03-26 21:30:34 +00:00
|
|
|
Bangle.on("swipe", (dir) => {
|
2020-05-29 08:41:19 +00:00
|
|
|
if (state.music === "play") {
|
2020-04-02 18:36:58 +00:00
|
|
|
const command = dir > 0 ? "next" : "previous"
|
|
|
|
gbSend({ t: "music", n: command });
|
2020-03-26 21:30:34 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2020-04-02 18:36:58 +00:00
|
|
|
function draw() {
|
2020-03-26 21:30:34 +00:00
|
|
|
g.setColor(-1);
|
2020-04-02 18:36:58 +00:00
|
|
|
if (NRF.getSecurityStatus().connected)
|
|
|
|
g.drawImage(require("heatshrink").decompress(atob("i0WwgHExAABCIwJCBYwJEBYkIBQ2ACgvzCwoECx/z/AKDD4WD+YLBEIYKCx//+cvnAKCBwU/mc4/8/HYv//Ev+Y4EEAePn43DBQkzn4rCEIoABBIwKHO4cjmczK42I6mqlqEEBQeIBQaDED4IgDUhi6KaBbmIA==")), this.x + 1, this.y + 1);
|
|
|
|
else
|
|
|
|
g.drawImage(require("heatshrink").decompress(atob("i0WwQFC1WgAgYFDAgIFClQFCwEK1W/AoIPB1f+CAMq1f7/WqwQPB/fq1Gq1/+/4dC/2/CAIaB/YbBAAO///qAoX/B4QbBDQQ7BDQQrBAAWoIIIACIIIVC0ECB4cACAZiBAoRtCAoIDBA")), this.x + 1, this.y + 1);
|
2020-03-26 21:30:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function changedConnectionState() {
|
|
|
|
WIDGETS["gbridgew"].draw();
|
|
|
|
g.flip(); // turns screen on
|
|
|
|
}
|
|
|
|
|
2020-05-28 22:05:26 +00:00
|
|
|
function reload() {
|
2020-05-29 08:37:44 +00:00
|
|
|
NRF.removeListener("connect", changedConnectionState);
|
|
|
|
NRF.removeListener("disconnect", changedConnectionState);
|
|
|
|
if (settings().showIcon) {
|
2020-05-28 22:05:26 +00:00
|
|
|
WIDGETS["gbridgew"].width = 24;
|
2020-05-29 08:37:44 +00:00
|
|
|
WIDGETS["gbridgew"].draw = draw;
|
2020-05-28 22:05:26 +00:00
|
|
|
NRF.on("connect", changedConnectionState);
|
|
|
|
NRF.on("disconnect", changedConnectionState);
|
|
|
|
} else {
|
|
|
|
WIDGETS["gbridgew"].width = 0;
|
2020-05-29 08:37:44 +00:00
|
|
|
WIDGETS["gbridgew"].draw = ()=>{};
|
2020-05-28 22:05:26 +00:00
|
|
|
}
|
2020-05-28 21:27:10 +00:00
|
|
|
}
|
2019-12-05 14:48:36 +00:00
|
|
|
|
2020-05-28 22:05:26 +00:00
|
|
|
WIDGETS["gbridgew"] = {area: "tl", width: 24, draw: draw, reload: reload};
|
|
|
|
reload();
|
|
|
|
|
2020-05-17 17:37:08 +00:00
|
|
|
function sendBattery() {
|
|
|
|
gbSend({ t: "status", bat: E.getBattery() });
|
|
|
|
}
|
|
|
|
|
|
|
|
NRF.on("connect", () => setTimeout(sendBattery, 2000));
|
|
|
|
setInterval(sendBattery, 10*60*1000);
|
|
|
|
sendBattery();
|
2019-12-05 14:48:36 +00:00
|
|
|
})();
|