btadv: localise definitions (for typescript)

Typescript treats all TS files as sharing the same global namespace,
so this prevents name collision errors.
master
Rob Pilling 2023-06-29 21:16:25 +01:00
parent 1c76e03751
commit 77ff7fa58b
2 changed files with 413 additions and 409 deletions

View File

@ -1,19 +1,20 @@
{
var __assign = Object.assign; var __assign = Object.assign;
var Layout = require("Layout"); var Layout_1 = require("Layout");
Bangle.loadWidgets(); Bangle.loadWidgets();
Bangle.drawWidgets(); Bangle.drawWidgets();
var HRM_MIN_CONFIDENCE = 75; var HRM_MIN_CONFIDENCE_1 = 75;
var services = ["0x180d", "0x181a", "0x1819"]; var services_1 = ["0x180d", "0x181a", "0x1819"];
var acc; var acc_1;
var bar; var bar_1;
var gps; var gps_1;
var hrm; var hrm_1;
var hrmAny; var hrmAny_1;
var mag; var mag_1;
var btnsShown = false; var btnsShown_1 = false;
var prevBtnsShown = undefined; var prevBtnsShown_1 = undefined;
var hrmAnyClear; var hrmAnyClear_1;
var settings = { var settings_1 = {
bar: false, bar: false,
gps: false, gps: false,
hrm: false, hrm: false,
@ -26,19 +27,19 @@ var idToName = {
hrm: "HRM", hrm: "HRM",
mag: "Magnetometer", mag: "Magnetometer",
}; };
var infoFont = "6x8:2"; var infoFont_1 = "6x8:2";
var colour = { var colour_1 = {
on: "#0f0", on: "#0f0",
off: "#fff", off: "#fff",
}; };
var makeToggle = function (id) { return function () { var makeToggle = function (id) { return function () {
settings[id] = !settings[id]; settings_1[id] = !settings_1[id];
var entry = btnLayout[id]; var entry = btnLayout_1[id];
var col = settings[id] ? colour.on : colour.off; var col = settings_1[id] ? colour_1.on : colour_1.off;
entry.btnBorder = entry.col = col; entry.btnBorder = entry.col = col;
btnLayout.update(); btnLayout_1.update();
btnLayout.render(); btnLayout_1.render();
enableSensors(); enableSensors_1();
}; }; }; };
var btnStyle = { var btnStyle = {
font: "Vector:14", font: "Vector:14",
@ -48,7 +49,7 @@ var btnStyle = {
bgCol: g.theme.bg, bgCol: g.theme.bg,
btnBorder: "#fff", btnBorder: "#fff",
}; };
var btnLayout = new Layout({ var btnLayout_1 = new Layout_1({
type: "v", type: "v",
c: [ c: [
{ {
@ -68,9 +69,9 @@ var btnLayout = new Layout({
{ {
type: "h", type: "h",
c: [ c: [
__assign(__assign({ type: "btn", label: idToName.acc, id: "acc", cb: function () { } }, btnStyle), { col: colour.on, btnBorder: colour.on }), __assign(__assign({ type: "btn", label: idToName.acc, id: "acc", cb: function () { } }, btnStyle), { col: colour_1.on, btnBorder: colour_1.on }),
__assign({ type: "btn", label: "Back", cb: function () { __assign({ type: "btn", label: "Back", cb: function () {
setBtnsShown(false); setBtnsShown_1(false);
} }, btnStyle), } }, btnStyle),
] ]
} }
@ -78,66 +79,66 @@ var btnLayout = new Layout({
}, { }, {
lazy: true, lazy: true,
back: function () { back: function () {
setBtnsShown(false); setBtnsShown_1(false);
}, },
}); });
var setBtnsShown = function (b) { var setBtnsShown_1 = function (b) {
btnsShown = b; btnsShown_1 = b;
hook(!btnsShown); hook_1(!btnsShown_1);
setIntervals(); setIntervals_1();
redraw(); redraw_1();
}; };
var drawInfo = function (force) { var drawInfo_1 = function (force) {
var _a = Bangle.appRect, y = _a.y, x = _a.x, w = _a.w; var _a = Bangle.appRect, y = _a.y, x = _a.x, w = _a.w;
var mid = x + w / 2; var mid = x + w / 2;
var drawn = false; var drawn = false;
if (!force && !bar && !gps && !hrm && !mag) if (!force && !bar_1 && !gps_1 && !hrm_1 && !mag_1)
return; return;
g.reset() g.reset()
.clearRect(Bangle.appRect) .clearRect(Bangle.appRect)
.setFont(infoFont) .setFont(infoFont_1)
.setFontAlign(0, -1); .setFontAlign(0, -1);
if (bar) { if (bar_1) {
g.drawString("".concat(bar.altitude.toFixed(1), "m"), mid, y); g.drawString("".concat(bar_1.altitude.toFixed(1), "m"), mid, y);
y += g.getFontHeight(); y += g.getFontHeight();
g.drawString("".concat(bar.pressure.toFixed(1), " hPa"), mid, y); g.drawString("".concat(bar_1.pressure.toFixed(1), " hPa"), mid, y);
y += g.getFontHeight(); y += g.getFontHeight();
g.drawString("".concat(bar.temperature.toFixed(1), "C"), mid, y); g.drawString("".concat(bar_1.temperature.toFixed(1), "C"), mid, y);
y += g.getFontHeight(); y += g.getFontHeight();
drawn = true; drawn = true;
} }
if (gps) { if (gps_1) {
g.drawString("".concat(gps.lat.toFixed(4), " lat, ").concat(gps.lon.toFixed(4), " lon"), mid, y); g.drawString("".concat(gps_1.lat.toFixed(4), " lat, ").concat(gps_1.lon.toFixed(4), " lon"), mid, y);
y += g.getFontHeight(); y += g.getFontHeight();
g.drawString("".concat(gps.alt, "m (").concat(gps.satellites, " sat)"), mid, y); g.drawString("".concat(gps_1.alt, "m (").concat(gps_1.satellites, " sat)"), mid, y);
y += g.getFontHeight(); y += g.getFontHeight();
drawn = true; drawn = true;
} }
if (hrm) { if (hrm_1) {
g.drawString("".concat(hrm.bpm, " BPM (").concat(hrm.confidence, "%)"), mid, y); g.drawString("".concat(hrm_1.bpm, " BPM (").concat(hrm_1.confidence, "%)"), mid, y);
y += g.getFontHeight(); y += g.getFontHeight();
drawn = true; drawn = true;
} }
else if (hrmAny) { else if (hrmAny_1) {
g.drawString("~".concat(hrmAny.bpm, " BPM (").concat(hrmAny.confidence, "%)"), mid, y); g.drawString("~".concat(hrmAny_1.bpm, " BPM (").concat(hrmAny_1.confidence, "%)"), mid, y);
y += g.getFontHeight(); y += g.getFontHeight();
drawn = true; drawn = true;
if (!settings.hrm && !hrmAnyClear) { if (!settings_1.hrm && !hrmAnyClear_1) {
hrmAnyClear = setTimeout(function () { hrmAnyClear_1 = setTimeout(function () {
hrmAny = undefined; hrmAny_1 = undefined;
hrmAnyClear = undefined; hrmAnyClear_1 = undefined;
}, 10000); }, 10000);
} }
} }
if (mag) { if (mag_1) {
g.drawString("".concat(mag.x, " ").concat(mag.y, " ").concat(mag.z), mid, y); g.drawString("".concat(mag_1.x, " ").concat(mag_1.y, " ").concat(mag_1.z), mid, y);
y += g.getFontHeight(); y += g.getFontHeight();
g.drawString("heading: ".concat(mag.heading.toFixed(1)), mid, y); g.drawString("heading: ".concat(mag_1.heading.toFixed(1)), mid, y);
y += g.getFontHeight(); y += g.getFontHeight();
drawn = true; drawn = true;
} }
if (!drawn) { if (!drawn) {
if (!force || Object.values(settings).every(function (x) { return !x; })) { if (!force || Object.values(settings_1).every(function (x) { return !x; })) {
g.drawString("swipe to enable", mid, y); g.drawString("swipe to enable", mid, y);
} }
else { else {
@ -146,54 +147,54 @@ var drawInfo = function (force) {
y += g.getFontHeight(); y += g.getFontHeight();
} }
}; };
var onTap = function () { var onTap_1 = function () {
setBtnsShown(true); setBtnsShown_1(true);
}; };
var redraw = function () { var redraw_1 = function () {
if (btnsShown) { if (btnsShown_1) {
if (!prevBtnsShown) { if (!prevBtnsShown_1) {
prevBtnsShown = btnsShown; prevBtnsShown_1 = btnsShown_1;
Bangle.removeListener("swipe", onTap); Bangle.removeListener("swipe", onTap_1);
btnLayout.setUI(); btnLayout_1.setUI();
btnLayout.forgetLazyState(); btnLayout_1.forgetLazyState();
g.clearRect(Bangle.appRect); g.clearRect(Bangle.appRect);
} }
btnLayout.render(); btnLayout_1.render();
} }
else { else {
if (prevBtnsShown) { if (prevBtnsShown_1) {
prevBtnsShown = btnsShown; prevBtnsShown_1 = btnsShown_1;
Bangle.setUI(); Bangle.setUI();
Bangle.on("swipe", onTap); Bangle.on("swipe", onTap_1);
drawInfo(true); drawInfo_1(true);
} }
else { else {
drawInfo(); drawInfo_1();
} }
} }
}; };
var encodeHrm = function (hrm) { var encodeHrm_1 = function (hrm) {
return [0, hrm.bpm]; return [0, hrm.bpm];
}; };
encodeHrm.maxLen = 2; encodeHrm_1.maxLen = 2;
var encodePressure = function (data) { var encodePressure_1 = function (data) {
return toByteArray(Math.round(data.pressure * 10), 4, false); return toByteArray_1(Math.round(data.pressure * 10), 4, false);
}; };
encodePressure.maxLen = 4; encodePressure_1.maxLen = 4;
var encodeElevation = function (data) { var encodeElevation_1 = function (data) {
return toByteArray(Math.round(data.altitude * 100), 3, true); return toByteArray_1(Math.round(data.altitude * 100), 3, true);
}; };
encodeElevation.maxLen = 3; encodeElevation_1.maxLen = 3;
var encodeTemp = function (data) { var encodeTemp_1 = function (data) {
return toByteArray(Math.round(data.temperature * 10), 2, true); return toByteArray_1(Math.round(data.temperature * 10), 2, true);
}; };
encodeTemp.maxLen = 2; encodeTemp_1.maxLen = 2;
var encodeGps = function (data) { var encodeGps_1 = function (data) {
var speed = toByteArray(Math.round(1000 * data.speed / 36), 2, false); var speed = toByteArray_1(Math.round(1000 * data.speed / 36), 2, false);
var lat = toByteArray(Math.round(data.lat * 10000000), 4, true); var lat = toByteArray_1(Math.round(data.lat * 10000000), 4, true);
var lon = toByteArray(Math.round(data.lon * 10000000), 4, true); var lon = toByteArray_1(Math.round(data.lon * 10000000), 4, true);
var elevation = toByteArray(Math.round(data.alt * 100), 3, true); var elevation = toByteArray_1(Math.round(data.alt * 100), 3, true);
var heading = toByteArray(Math.round(data.course * 100), 2, false); var heading = toByteArray_1(Math.round(data.course * 100), 2, false);
return [ return [
157, 157,
2, 2,
@ -204,24 +205,24 @@ var encodeGps = function (data) {
heading[0], heading[1] heading[0], heading[1]
]; ];
}; };
encodeGps.maxLen = 17; encodeGps_1.maxLen = 17;
var encodeGpsHeadingOnly = function (data) { var encodeGpsHeadingOnly_1 = function (data) {
var heading = toByteArray(Math.round(data.heading * 100), 2, false); var heading = toByteArray_1(Math.round(data.heading * 100), 2, false);
return [ return [
16, 16,
16, 16,
heading[0], heading[1] heading[0], heading[1]
]; ];
}; };
encodeGpsHeadingOnly.maxLen = 17; encodeGpsHeadingOnly_1.maxLen = 17;
var encodeMag = function (data) { var encodeMag_1 = function (data) {
var x = toByteArray(data.x, 2, true); var x = toByteArray_1(data.x, 2, true);
var y = toByteArray(data.y, 2, true); var y = toByteArray_1(data.y, 2, true);
var z = toByteArray(data.z, 2, true); var z = toByteArray_1(data.z, 2, true);
return [x[0], x[1], y[0], y[1], z[0], z[1]]; return [x[0], x[1], y[0], y[1], z[0], z[1]];
}; };
encodeMag.maxLen = 6; encodeMag_1.maxLen = 6;
var toByteArray = function (value, numberOfBytes, isSigned) { var toByteArray_1 = function (value, numberOfBytes, isSigned) {
var byteArray = new Array(numberOfBytes); var byteArray = new Array(numberOfBytes);
if (isSigned && (value < 0)) { if (isSigned && (value < 0)) {
value += 1 << (numberOfBytes * 8); value += 1 << (numberOfBytes * 8);
@ -231,176 +232,176 @@ var toByteArray = function (value, numberOfBytes, isSigned) {
} }
return byteArray; return byteArray;
}; };
var enableSensors = function () { var enableSensors_1 = function () {
Bangle.setBarometerPower(settings.bar, "btadv"); Bangle.setBarometerPower(settings_1.bar, "btadv");
if (!settings.bar) if (!settings_1.bar)
bar = undefined; bar_1 = undefined;
Bangle.setGPSPower(settings.gps, "btadv"); Bangle.setGPSPower(settings_1.gps, "btadv");
if (!settings.gps) if (!settings_1.gps)
gps = undefined; gps_1 = undefined;
Bangle.setHRMPower(settings.hrm, "btadv"); Bangle.setHRMPower(settings_1.hrm, "btadv");
if (!settings.hrm) if (!settings_1.hrm)
hrm = hrmAny = undefined; hrm_1 = hrmAny_1 = undefined;
Bangle.setCompassPower(settings.mag, "btadv"); Bangle.setCompassPower(settings_1.mag, "btadv");
if (!settings.mag) if (!settings_1.mag)
mag = undefined; mag_1 = undefined;
}; };
var haveServiceData = function (serv) { var haveServiceData_1 = function (serv) {
switch (serv) { switch (serv) {
case "0x180d": return !!hrm; case "0x180d": return !!hrm_1;
case "0x181a": return !!(bar || mag); case "0x181a": return !!(bar_1 || mag_1);
case "0x1819": return !!(gps && gps.lat && gps.lon || mag); case "0x1819": return !!(gps_1 && gps_1.lat && gps_1.lon || mag_1);
} }
}; };
var serviceToAdvert = function (serv, initial) { var serviceToAdvert_1 = function (serv, initial) {
var _a, _b, _c; var _a, _b, _c;
if (initial === void 0) { initial = false; } if (initial === void 0) { initial = false; }
switch (serv) { switch (serv) {
case "0x180d": case "0x180d":
if (hrm || initial) { if (hrm_1 || initial) {
var o = { var o = {
maxLen: encodeHrm.maxLen, maxLen: encodeHrm_1.maxLen,
readable: true, readable: true,
notify: true, notify: true,
}; };
if (hrm) { if (hrm_1) {
o.value = encodeHrm(hrm); o.value = encodeHrm_1(hrm_1);
hrm = undefined; hrm_1 = undefined;
} }
return _a = {}, _a["0x2a37"] = o, _a; return _a = {}, _a["0x2a37"] = o, _a;
} }
return {}; return {};
case "0x1819": case "0x1819":
if (gps || initial) { if (gps_1 || initial) {
var o = { var o = {
maxLen: encodeGps.maxLen, maxLen: encodeGps_1.maxLen,
readable: true, readable: true,
notify: true, notify: true,
}; };
if (gps) { if (gps_1) {
o.value = encodeGps(gps); o.value = encodeGps_1(gps_1);
gps = undefined; gps_1 = undefined;
} }
return _b = {}, _b["0x2a67"] = o, _b; return _b = {}, _b["0x2a67"] = o, _b;
} }
else if (mag) { else if (mag_1) {
var o = { var o = {
maxLen: encodeGpsHeadingOnly.maxLen, maxLen: encodeGpsHeadingOnly_1.maxLen,
readable: true, readable: true,
notify: true, notify: true,
value: encodeGpsHeadingOnly(mag), value: encodeGpsHeadingOnly_1(mag_1),
}; };
return _c = {}, _c["0x2a67"] = o, _c; return _c = {}, _c["0x2a67"] = o, _c;
} }
return {}; return {};
case "0x181a": { case "0x181a": {
var o = {}; var o = {};
if (bar || initial) { if (bar_1 || initial) {
o["0x2a6c"] = { o["0x2a6c"] = {
maxLen: encodeElevation.maxLen, maxLen: encodeElevation_1.maxLen,
readable: true, readable: true,
notify: true, notify: true,
}; };
o["0x2A1F"] = { o["0x2A1F"] = {
maxLen: encodeTemp.maxLen, maxLen: encodeTemp_1.maxLen,
readable: true, readable: true,
notify: true, notify: true,
}; };
o["0x2a6d"] = { o["0x2a6d"] = {
maxLen: encodePressure.maxLen, maxLen: encodePressure_1.maxLen,
readable: true, readable: true,
notify: true, notify: true,
}; };
if (bar) { if (bar_1) {
o["0x2a6c"].value = encodeElevation(bar); o["0x2a6c"].value = encodeElevation_1(bar_1);
o["0x2A1F"].value = encodeTemp(bar); o["0x2A1F"].value = encodeTemp_1(bar_1);
o["0x2a6d"].value = encodePressure(bar); o["0x2a6d"].value = encodePressure_1(bar_1);
bar = undefined; bar_1 = undefined;
} }
} }
if (mag || initial) { if (mag_1 || initial) {
o["0x2aa1"] = { o["0x2aa1"] = {
maxLen: encodeMag.maxLen, maxLen: encodeMag_1.maxLen,
readable: true, readable: true,
notify: true, notify: true,
}; };
if (mag) { if (mag_1) {
o["0x2aa1"].value = encodeMag(mag); o["0x2aa1"].value = encodeMag_1(mag_1);
} }
} }
return o; return o;
} }
} }
}; };
var getBleAdvert = function (map, all) { var getBleAdvert_1 = function (map, all) {
if (all === void 0) { all = false; } if (all === void 0) { all = false; }
var advert = {}; var advert = {};
for (var _i = 0, services_1 = services; _i < services_1.length; _i++) { for (var _i = 0, services_2 = services_1; _i < services_2.length; _i++) {
var serv = services_1[_i]; var serv = services_2[_i];
if (all || haveServiceData(serv)) { if (all || haveServiceData_1(serv)) {
advert[serv] = map(serv); advert[serv] = map(serv);
} }
} }
mag = undefined; mag_1 = undefined;
return advert; return advert;
}; };
var updateServices = function () { var updateServices_1 = function () {
var newAdvert = getBleAdvert(serviceToAdvert); var newAdvert = getBleAdvert_1(serviceToAdvert_1);
NRF.updateServices(newAdvert); NRF.updateServices(newAdvert);
}; };
var onAccel = function (newAcc) { return acc = newAcc; }; var onAccel_1 = function (newAcc) { return acc_1 = newAcc; };
var onPressure = function (newBar) { return bar = newBar; }; var onPressure_1 = function (newBar) { return bar_1 = newBar; };
var onGPS = function (newGps) { return gps = newGps; }; var onGPS_1 = function (newGps) { return gps_1 = newGps; };
var onHRM = function (newHrm) { var onHRM_1 = function (newHrm) {
if (newHrm.confidence >= HRM_MIN_CONFIDENCE) if (newHrm.confidence >= HRM_MIN_CONFIDENCE_1)
hrm = newHrm; hrm_1 = newHrm;
hrmAny = newHrm; hrmAny_1 = newHrm;
}; };
var onMag = function (newMag) { return mag = newMag; }; var onMag_1 = function (newMag) { return mag_1 = newMag; };
var hook = function (enable) { var hook_1 = function (enable) {
if (enable) { if (enable) {
Bangle.on("accel", onAccel); Bangle.on("accel", onAccel_1);
Bangle.on("pressure", onPressure); Bangle.on("pressure", onPressure_1);
Bangle.on("GPS", onGPS); Bangle.on("GPS", onGPS_1);
Bangle.on("HRM", onHRM); Bangle.on("HRM", onHRM_1);
Bangle.on("mag", onMag); Bangle.on("mag", onMag_1);
} }
else { else {
Bangle.removeListener("accel", onAccel); Bangle.removeListener("accel", onAccel_1);
Bangle.removeListener("pressure", onPressure); Bangle.removeListener("pressure", onPressure_1);
Bangle.removeListener("GPS", onGPS); Bangle.removeListener("GPS", onGPS_1);
Bangle.removeListener("HRM", onHRM); Bangle.removeListener("HRM", onHRM_1);
Bangle.removeListener("mag", onMag); Bangle.removeListener("mag", onMag_1);
} }
}; };
var setIntervals = function (locked, connected) { var setIntervals_1 = function (locked, connected) {
if (locked === void 0) { locked = Bangle.isLocked(); } if (locked === void 0) { locked = Bangle.isLocked(); }
if (connected === void 0) { connected = NRF.getSecurityStatus().connected; } if (connected === void 0) { connected = NRF.getSecurityStatus().connected; }
changeInterval(redrawInterval, locked ? 15000 : 5000); changeInterval(redrawInterval_1, locked ? 15000 : 5000);
if (connected) { if (connected) {
var interval = btnsShown ? 5000 : 1000; var interval = btnsShown_1 ? 5000 : 1000;
if (bleInterval) { if (bleInterval_1) {
changeInterval(bleInterval, interval); changeInterval(bleInterval_1, interval);
} }
else { else {
bleInterval = setInterval(updateServices, interval); bleInterval_1 = setInterval(updateServices_1, interval);
} }
} }
else if (bleInterval) { else if (bleInterval_1) {
clearInterval(bleInterval); clearInterval(bleInterval_1);
bleInterval = undefined; bleInterval_1 = undefined;
} }
}; };
var redrawInterval = setInterval(redraw, 1000); var redrawInterval_1 = setInterval(redraw_1, 1000);
Bangle.on("lock", function (locked) { return setIntervals(locked); }); Bangle.on("lock", function (locked) { return setIntervals_1(locked); });
var bleInterval; var bleInterval_1;
NRF.on("connect", function () { return setIntervals(undefined, true); }); NRF.on("connect", function () { return setIntervals_1(undefined, true); });
NRF.on("disconnect", function () { return setIntervals(undefined, false); }); NRF.on("disconnect", function () { return setIntervals_1(undefined, false); });
setIntervals(); setIntervals_1();
setBtnsShown(true); setBtnsShown_1(true);
enableSensors(); enableSensors_1();
{ {
var ad = getBleAdvert(function (serv) { return serviceToAdvert(serv, true); }, true); var ad = getBleAdvert_1(function (serv) { return serviceToAdvert_1(serv, true); }, true);
var adServices = Object var adServices = Object
.keys(ad) .keys(ad)
.map(function (k) { return k.replace("0x", ""); }); .map(function (k) { return k.replace("0x", ""); });
@ -409,3 +410,4 @@ enableSensors();
uart: false, uart: false,
}); });
} }
}

View File

@ -1,4 +1,5 @@
// ts helpers: {
// @ts-ignore helper
const __assign = Object.assign; const __assign = Object.assign;
const Layout = require("Layout"); const Layout = require("Layout");
@ -713,3 +714,4 @@ enableSensors();
}, },
); );
} }
}