esp32 improvements

- better clock seconds
- better alarm (image before audio, supposedly)
This commit is contained in:
Mikkeli Matlock
2026-02-15 22:55:53 +09:00
parent 0b2f274719
commit d63322d304
3 changed files with 48 additions and 16 deletions

View File

@@ -35,6 +35,7 @@ static uint8_t s_img_buf[STATUS_IMG_BYTES];
static lv_img_dsc_t s_img_dsc;
static volatile bool s_img_pending = false; /* expecting binary frame with image data */
static volatile bool s_img_updated = false; /* new image ready for UI consumption */
static TaskHandle_t s_img_notify_task = NULL; /* task to wake on new image */
/* Forward declarations */
static void playback_task(void *arg);
@@ -121,6 +122,9 @@ static void handle_binary_frame(const uint8_t *data, int len)
if (len == STATUS_IMG_BYTES) {
memcpy(s_img_buf, data, STATUS_IMG_BYTES);
s_img_updated = true;
if (s_img_notify_task) {
xTaskNotifyGive(s_img_notify_task);
}
ESP_LOGI(TAG, "Status image received (%d bytes)", len);
} else {
ESP_LOGW(TAG, "Status image size mismatch: got %d, expected %d", len, STATUS_IMG_BYTES);
@@ -262,6 +266,11 @@ audio_state_t audio_client_get_state(void)
return s_state;
}
void audio_client_set_image_notify_task(TaskHandle_t task)
{
s_img_notify_task = task;
}
const lv_img_dsc_t *audio_client_get_status_image(bool *updated)
{
if (updated) {

View File

@@ -1,6 +1,8 @@
#pragma once
#include <stdbool.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include "lvgl.h"
#ifdef __cplusplus
@@ -30,6 +32,12 @@ void audio_client_stop(void);
/** Get current audio client state. */
audio_state_t audio_client_get_state(void);
/**
* Register a task to be notified (via xTaskNotifyGive) when a new status
* image arrives. Call before audio_client_start().
*/
void audio_client_set_image_notify_task(TaskHandle_t task);
/**
* Get the latest status image descriptor.
* @param updated Set to true if a new image arrived since last call, then reset.