3#if defined(ARDUINO_ARCH_RP2040) && !defined(ARDUINO_ARCH_MBED)
9#include "hardware/timer.h"
24class AudioTimerDriverRP2040 :
public AudioTimerDriverBase {
26 AudioTimerDriverRP2040() {
27 alarm_pool_init_default();
28 ap = alarm_pool_get_default();
34 bool begin(
const my_repeating_timer_callback_t callback_f, uint32_t time,
35 TimeUnit unit = MS)
override {
37 LOGI(
"timer time: %u %s", (
unsigned int)time, toString(unit));
38 this->instanceCallback = callback_f;
43 result = alarm_pool_add_repeating_timer_ms(ap, time, &staticCallback,
47 result = alarm_pool_add_repeating_timer_us(ap, time, &staticCallback,
52 uint64_t time_us = AudioTime::toTimeUs(time);
53 result = alarm_pool_add_repeating_timer_us(ap, time_us, &staticCallback,
61 inline static bool staticCallback(repeating_timer *ptr) {
62 AudioTimerDriverRP2040 *self =
63 (AudioTimerDriverRP2040 *)ptr->user_data;
64 self->instanceCallback(self->object);
69 bool end() {
return cancel_repeating_timer(&timer); }
72 alarm_pool_t *ap =
nullptr;
73 repeating_timer_t timer;
#define LOGI(...)
Definition AudioLoggerIDF.h:28
@ US
Definition AudioTypes.h:44
@ HZ
Definition AudioTypes.h:44
@ MS
Definition AudioTypes.h:44
constexpr const _Ep * end(initializer_list< _Ep > __il) noexcept
Definition InitializerList.h:63
constexpr const _Ep * begin(initializer_list< _Ep > __il) noexcept
Definition InitializerList.h:55