feat(power): add battery monitoring and status overlays
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
|
||||
#include "multimodal/audio_pipeline.h"
|
||||
#include "multimodal/transport_ws.h"
|
||||
#include "platform_battery_internal.h"
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/portmacro.h"
|
||||
|
||||
@@ -17,6 +18,38 @@ static platform_multimodal_transport_callbacks_t s_multimodal_transport_callback
|
||||
static portMUX_TYPE s_multimodal_transport_cb_lock = portMUX_INITIALIZER_UNLOCKED;
|
||||
static platform_multimodal_downstream_playback_callbacks_t s_multimodal_downstream_playback_callbacks;
|
||||
static portMUX_TYPE s_multimodal_downstream_playback_cb_lock = portMUX_INITIALIZER_UNLOCKED;
|
||||
static uint32_t s_battery_playback_generation;
|
||||
static bool s_battery_playback_active;
|
||||
|
||||
static void platform_battery_note_playback_event(
|
||||
multimodal_audio_downstream_playback_event_type_t type,
|
||||
uint32_t generation)
|
||||
{
|
||||
bool begin_load = false;
|
||||
bool end_load = false;
|
||||
|
||||
portENTER_CRITICAL(&s_multimodal_downstream_playback_cb_lock);
|
||||
if (type == MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_STARTED) {
|
||||
if (!s_battery_playback_active) {
|
||||
s_battery_playback_active = true;
|
||||
begin_load = true;
|
||||
}
|
||||
s_battery_playback_generation = generation;
|
||||
} else if (s_battery_playback_active &&
|
||||
s_battery_playback_generation == generation) {
|
||||
s_battery_playback_active = false;
|
||||
s_battery_playback_generation = 0U;
|
||||
end_load = true;
|
||||
}
|
||||
portEXIT_CRITICAL(&s_multimodal_downstream_playback_cb_lock);
|
||||
|
||||
if (begin_load) {
|
||||
platform_battery_load_begin(PLATFORM_BATTERY_LOAD_AUDIO);
|
||||
}
|
||||
if (end_load) {
|
||||
platform_battery_load_end(PLATFORM_BATTERY_LOAD_AUDIO);
|
||||
}
|
||||
}
|
||||
|
||||
static void snapshot_transport_callbacks(
|
||||
platform_multimodal_transport_callbacks_t *out_callbacks)
|
||||
@@ -228,6 +261,8 @@ static void platform_multimodal_downstream_playback_bridge(
|
||||
return;
|
||||
}
|
||||
|
||||
platform_battery_note_playback_event(event->type, event->playback_generation);
|
||||
|
||||
switch (event->type) {
|
||||
case MULTIMODAL_AUDIO_DOWNSTREAM_PLAYBACK_STARTED:
|
||||
if (callbacks.on_started != NULL) {
|
||||
|
||||
Reference in New Issue
Block a user