forked from kofal.net/zmk
fix(display): Proper initial display of battery status
* fix initial display of battery status on displays, and also fix a null deref
This commit is contained in:
@@ -66,8 +66,10 @@ void battery_status_update_cb(struct battery_status_state state) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) {
|
static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) {
|
||||||
|
const struct zmk_battery_state_changed *ev = as_zmk_battery_state_changed(eh);
|
||||||
|
|
||||||
return (struct battery_status_state) {
|
return (struct battery_status_state) {
|
||||||
.level = zmk_battery_state_of_charge(),
|
.level = (ev != NULL) ? ev->state_of_charge : zmk_battery_state_of_charge(),
|
||||||
#if IS_ENABLED(CONFIG_USB_DEVICE_STACK)
|
#if IS_ENABLED(CONFIG_USB_DEVICE_STACK)
|
||||||
.usb_present = zmk_usb_is_powered(),
|
.usb_present = zmk_usb_is_powered(),
|
||||||
#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */
|
#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */
|
||||||
|
|||||||
@@ -210,8 +210,10 @@ static void battery_status_update_cb(struct battery_status_state state) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) {
|
static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) {
|
||||||
|
const struct zmk_battery_state_changed *ev = as_zmk_battery_state_changed(eh);
|
||||||
|
|
||||||
return (struct battery_status_state) {
|
return (struct battery_status_state) {
|
||||||
.level = zmk_battery_state_of_charge(),
|
.level = (ev != NULL) ? ev->state_of_charge : zmk_battery_state_of_charge(),
|
||||||
#if IS_ENABLED(CONFIG_USB_DEVICE_STACK)
|
#if IS_ENABLED(CONFIG_USB_DEVICE_STACK)
|
||||||
.usb_present = zmk_usb_is_powered(),
|
.usb_present = zmk_usb_is_powered(),
|
||||||
#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */
|
#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#include <zephyr/logging/log.h>
|
#include <zephyr/logging/log.h>
|
||||||
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
|
LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL);
|
||||||
|
|
||||||
|
#include <zmk/battery.h>
|
||||||
#include <zmk/display.h>
|
#include <zmk/display.h>
|
||||||
#include <zmk/display/widgets/battery_status.h>
|
#include <zmk/display/widgets/battery_status.h>
|
||||||
#include <zmk/usb.h>
|
#include <zmk/usb.h>
|
||||||
@@ -63,8 +64,9 @@ void battery_status_update_cb(struct battery_status_state state) {
|
|||||||
|
|
||||||
static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) {
|
static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) {
|
||||||
const struct zmk_battery_state_changed *ev = as_zmk_battery_state_changed(eh);
|
const struct zmk_battery_state_changed *ev = as_zmk_battery_state_changed(eh);
|
||||||
|
|
||||||
return (struct battery_status_state) {
|
return (struct battery_status_state) {
|
||||||
.level = ev->state_of_charge,
|
.level = (ev != NULL) ? ev->state_of_charge : zmk_battery_state_of_charge(),
|
||||||
#if IS_ENABLED(CONFIG_USB_DEVICE_STACK)
|
#if IS_ENABLED(CONFIG_USB_DEVICE_STACK)
|
||||||
.usb_present = zmk_usb_is_powered(),
|
.usb_present = zmk_usb_is_powered(),
|
||||||
#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */
|
#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */
|
||||||
|
|||||||
Reference in New Issue
Block a user