Skip to content

Commit

Permalink
feat(ble): Allow disabling BLE BAS reporting
Browse files Browse the repository at this point in the history
The battery reporting has been known to cause macOS computers to wakeup repeatedly. In some cases (e.g. display or custom lighting implementation) one might want to collect battery SOC without broadcasting over BLE
  • Loading branch information
ReFil committed Oct 20, 2023
1 parent 00483fe commit 3bc86af
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 3 deletions.
2 changes: 1 addition & 1 deletion app/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ config ZMK_BATTERY_REPORTING
bool "Battery level detection/reporting"
default n
select SENSOR
select BT_BAS if ZMK_BLE
imply BT_BAS if ZMK_BLE

config ZMK_IDLE_TIMEOUT
int "Milliseconds of inactivity before entering idle state (OLED shutoff, etc)"
Expand Down
4 changes: 2 additions & 2 deletions app/src/battery.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ static int zmk_battery_update(const struct device *battery) {

if (last_state_of_charge != state_of_charge.val1) {
last_state_of_charge = state_of_charge.val1;

#if IS_ENABLED(CONFIG_BT_BAS)
LOG_DBG("Setting BAS GATT battery level to %d.", last_state_of_charge);

rc = bt_bas_set_battery_level(last_state_of_charge);
Expand All @@ -60,7 +60,7 @@ static int zmk_battery_update(const struct device *battery) {
LOG_WRN("Failed to set BAS GATT battery level (err %d)", rc);
return rc;
}

#endif
rc = ZMK_EVENT_RAISE(new_zmk_battery_state_changed(
(struct zmk_battery_state_changed){.state_of_charge = last_state_of_charge}));
}
Expand Down
6 changes: 6 additions & 0 deletions docs/docs/config/battery.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ See the [battery level feature page](../features/battery.md) for more details on

See [Configuration Overview](index.md) for instructions on how to change these settings.

:::note

On MacOS the BLE battery reporting packets can cause the computer to wakeup from sleep, the battery service can be disabled indepently of battery monitoring (allowing the battery level to be displayed on a screen or through a custom lighting implementation) by setting `CONFIG_BT_BAS=n`

:::

### Devicetree

Applies to: [`/chosen` node](https://docs.zephyrproject.org/latest/guides/dts/intro.html#aliases-and-chosen-nodes)
Expand Down

0 comments on commit 3bc86af

Please sign in to comment.