Skip to content

Commit 9721d13

Browse files
authored
Merge pull request #4172 from kidneyhex/accelsender-stopOnDc
accelsender: add stop on disconnect option; fix saving config
2 parents fd679dd + e5425a4 commit 9721d13

7 files changed

Lines changed: 38 additions & 11 deletions

File tree

apps/accelsender/ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
0.01: Initial release.
22
0.02: Add widget, settings, and in-memory config.
3+
0.03: Add stop on disconnect option; fix saving config.

apps/accelsender/README.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,14 @@ Currently this app is used to enable Sleep as Android tracking for your Banglejs
1111

1212
[Gadgetbridge - Sleep as Android integration](https://gadgetbridge.org/basics/integrations/sleep-as-android/)
1313

14-
## Widget
15-
16-
Enable the widget in the app settings to show when `accelsender` is active. Because sleep tracking is the primary use, the widget shows a bed icon in the top-right.
14+
## Settings
15+
16+
- **Enabled**: Turns acceleration reporting on or off.
17+
- **Interval**: How often the app sends the latest acceleration data to the phone. Shorter intervals use more power.
18+
- **Widget**:
19+
- None: No widget is shown.
20+
- Sleep Icon: A bed icon appears in the top-right while `accelsender` is enabled.
21+
- **Stop on Disconnect**: If Bluetooth disconnects, automatically disables `accelsender` so it does not keep running in the background.
1722

1823
## Troubleshooting
1924

apps/accelsender/boot.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@ setTimeout( // make other boot code run first, so we can override android.boot.j
1717
var max_acceleration = { x: 0, y: 0, z: 0, diff: 0, td: 0, mag: 0 };
1818
var hasData = false;
1919
var intervalId;
20-
var config = storage.readJSON("accelsender.json", 1) || {};
20+
var config = Object.assign({
21+
enabled: false,
22+
interval: 5000,
23+
widget: 0,
24+
stopOnDc: true
25+
}, storage.readJSON("accelsender.json", 1) || {});
2126
var configChanged = false;
2227

2328
/**
@@ -70,9 +75,11 @@ setTimeout( // make other boot code run first, so we can override android.boot.j
7075
setEnabled: (v) => setConfig("enabled", v),
7176
setWidget: (v) => setConfig("widget", v),
7277
setInterval: (v) => setConfig("interval", v),
78+
setStopOnDc: (v) => setConfig("stopOnDc", v),
7379
isEnabled: () => config.enabled,
74-
getInterval: () => config.interval || 5000,
75-
getWidget: () => config.widget || 0
80+
getInterval: () => config.interval,
81+
getWidget: () => config.widget,
82+
getStopOnDc: () => config.stopOnDc
7683
};
7784

7885
// Wrap the GB handler to listen for messages from gadgetbridge
@@ -99,8 +106,13 @@ setTimeout( // make other boot code run first, so we can override android.boot.j
99106
Bangle.removeListener("accel", updateAcceleration);
100107
}
101108

109+
// On Bluetooth disconnect, disable if config says to
110+
NRF.on('disconnect', () => {
111+
if (config.enabled && config.stopOnDc) setConfig('enabled', false);
112+
});
113+
102114
// On kill, save config if changed
103-
Bangle.on("kill", () => {
115+
E.on("kill", () => {
104116
if (configChanged) storage.writeJSON("accelsender.json", config);
105117
});
106118

apps/accelsender/boot.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/accelsender/config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"enabled": false,
33
"interval": 5000,
4-
"widget": 0
4+
"widget": 0,
5+
"stopOnDc": true
56
}

apps/accelsender/metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"id": "accelsender",
33
"name": "Acceleration Data Provider",
44
"shortName": "Accel Data Provider",
5-
"version": "0.02",
5+
"version": "0.03",
66
"description": "This app sends accelerometer and heart rate data from your Bangle.js via Bluetooth.",
77
"icon": "bluetooth.png",
88
"type": "bootloader",

apps/accelsender/settings.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
let s = {
1010
enabled: globalThis.accelSender.isEnabled(),
1111
interval: globalThis.accelSender.getInterval(),
12-
widget: globalThis.accelSender.getWidget()
12+
widget: globalThis.accelSender.getWidget(),
13+
stopOnDc: globalThis.accelSender.getStopOnDc()
1314
};
1415

1516
function save(key, value) {
@@ -25,6 +26,9 @@
2526
case "enabled":
2627
globalThis.accelSender.setEnabled(value);
2728
break;
29+
case "stopOnDc":
30+
globalThis.accelSender.setStopOnDc(value);
31+
break;
2832
}
2933
}
3034

@@ -48,6 +52,10 @@
4852
min: 1, max: 10, step: 1,
4953
onchange: (v) => save("interval", v * 1000)
5054
},
55+
"Stop on Disconnect": {
56+
value: s.stopOnDc,
57+
onchange: (v) => save("stopOnDc", v)
58+
}
5159
};
5260
E.showMenu(menu);
5361
})

0 commit comments

Comments
 (0)