Changed the zmk,battery-voltage-divider and zmk,battery-nrf-vddh drivers
to support only SENSOR_CHAN_VOLTAGE, and changed the default battery
fetch mode to ZMK_BATTERY_REPORTING_FETCH_MODE_LITHIUM_VOLTAGE. This
allowed for removing the copy of lithium_ion_mv_to_pct() from the
driver code, leaving only the version in battery.c.
Custom boards/shields that use a fuel gauge driver instead of a voltage
sensor, will need the following added to their Kconfig.defconfig:
choice ZMK_BATTERY_REPORTING_FETCH_MODE
default ZMK_BATTERY_REPORTING_FETCH_MODE_STATE_OF_CHARGE
endchoice
Alternatively, add the following to the _defconfig file:
ZMK_BATTERY_REPORTING_FETCH_MODE_STATE_OF_CHARGE=y
* To be able to use the Zephyr `voltage-divider` driver,
add a mode for fetching raw voltage from the sensor
and do state of charge calculation outside of the driver.
* Move to local/stack allocated event API that doesn't require
dynamic allocation/freeing.
* Disable heap, we no longer use alloc/free unless using LVGL.
* Tons of refactors all over to account for the new event approach.
zmk_battery_start_reporting() may be called from battery_event_listener(), which
will result in a bus fault when attempting to read a battery that does not exist
such as on a dongle.
Note there was one place where a non-strict prototype was actually being used
with an argument, in `zmk_hog_init`. In this case, the actual argument type was
added instead.
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
* Update docs/docs/config/battery.md
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
battery.c now uses the zmk,battery chosen node to select a battery
sensor. Using the node labeled "BATTERY" is maintained for backwards
compatibility but is now deprecated. Custom boards should switch to
using the chosen node.
# Conflicts:
# app/boards/arm/bluemicro840/bluemicro840_v1.dts
# app/boards/arm/nice60/nice60.dts
# app/boards/arm/nrfmicro/nrfmicro_13.dts
# Conflicts:
# app/boards/arm/bluemicro840/bluemicro840_v1.dts
* Make it easier to use *just* event payloads by defining the data,
and then having event manager macros generate "wrapper structs"
* Improve is_*/cast_* APIs to hide details of full event struct.
* Create `zmk_event_t` typedef to pass to event handlers.
* Bring event names inline w/ consistent `zmk_` prefix.
Aligns *.h and *.c to underscore naming convention.
These were kept (with warnings) for backwards compatibility with external boards/shields:
- kscan-mock.h
- matrix-transform.h
They should be removed in the future.
PR: #523