impl state tracking for speaker driver

This commit is contained in:
Mitchell Marino 2025-03-28 00:39:32 -05:00
parent aacdca5a1e
commit 19c06447bb
2 changed files with 15 additions and 4 deletions

View File

@ -1,4 +1,5 @@
#include "speaker.h" #include "speaker.h"
#include "state_tracking.h"
static const char *TAG = "speaker"; static const char *TAG = "speaker";
@ -156,7 +157,7 @@ static void speaker_task(void* arg) {
vTaskDelete(NULL); vTaskDelete(NULL);
} }
bool play_clip_wav(const char* file_name, bool play_immediatly, bool repeat, uint8_t prescaler, TickType_t ticks_to_wait) { bool play_clip_wav(const char* file_name, bool play_immediately, bool repeat, uint8_t prescaler, TickType_t ticks_to_wait) {
// clone the passed in string to the heap. // clone the passed in string to the heap.
size_t len = strlen(file_name); size_t len = strlen(file_name);
char* dynamic_file_name = (char*) malloc(len+1); char* dynamic_file_name = (char*) malloc(len+1);
@ -166,10 +167,16 @@ bool play_clip_wav(const char* file_name, bool play_immediatly, bool repeat, uin
.file_name = dynamic_file_name, .file_name = dynamic_file_name,
.prescaler = prescaler, .prescaler = prescaler,
.repeat = repeat, .repeat = repeat,
.play_immediatly = play_immediatly, .play_immediatly = play_immediately,
}; };
if (play_immediatly) { if (is_state_tracking()) {
char buf[64];
sprintf(buf, "%s:%d:%d:%d", file_name, play_immediately, repeat, prescaler);
event_occured("PLAY_WAV", buf);
}
if (play_immediately) {
return xQueueSendToFront(play_clip_queue, &clip, ticks_to_wait) == pdTRUE; return xQueueSendToFront(play_clip_queue, &clip, ticks_to_wait) == pdTRUE;
} }
return xQueueSend(play_clip_queue, &clip, ticks_to_wait) == pdTRUE; return xQueueSend(play_clip_queue, &clip, ticks_to_wait) == pdTRUE;
@ -181,6 +188,10 @@ bool stop_clip(const char* file_name, TickType_t ticks_to_wait) {
char* dynamic_file_name = (char*) malloc(len+1); char* dynamic_file_name = (char*) malloc(len+1);
strcpy(dynamic_file_name, file_name); strcpy(dynamic_file_name, file_name);
if (is_state_tracking()) {
event_occured("STOP_WAV", file_name);
}
return xQueueSend(stop_clip_queue, &dynamic_file_name, ticks_to_wait) == pdTRUE; return xQueueSend(stop_clip_queue, &dynamic_file_name, ticks_to_wait) == pdTRUE;
} }

View File

@ -52,7 +52,7 @@ void init_speaker();
/// loud. Useful for loud audio files. /// loud. Useful for loud audio files.
/// @param ticks_to_wait The number of ticks to wait if the queue is full. /// @param ticks_to_wait The number of ticks to wait if the queue is full.
/// @return true if the clip was added to the queue. /// @return true if the clip was added to the queue.
bool play_clip_wav(const char* file_name, bool play_immediatly, bool repeat, uint8_t prescaler, TickType_t ticks_to_wait); bool play_clip_wav(const char* file_name, bool play_immediately, bool repeat, uint8_t prescaler, TickType_t ticks_to_wait);
/// @brief Stops an audio clip from playing. /// @brief Stops an audio clip from playing.
/// @param file_name The file name of the audio clip that was played. /// @param file_name The file name of the audio clip that was played.