arduino-audio-tools
Loading...
Searching...
No Matches
AudioTimerRP2040.h
Go to the documentation of this file.
1#pragma once
2
3#if defined(ARDUINO_ARCH_RP2040) && !defined(ARDUINO_ARCH_MBED)
4#include <time.h>
5
6#include <functional>
7
9#include "hardware/timer.h"
10#include "pico/time.h"
11
12namespace audio_tools {
13
14typedef void (*my_repeating_timer_callback_t)(void *obj);
15
24class TimerAlarmRepeatingDriverRP2040 : public TimerAlarmRepeatingDriverBase {
25 public:
29 }
30
35 TimeUnit unit = MS) override {
36 bool result = false;
37 LOGI("timer time: %u %s", (unsigned int)time, toString(unit));
38 this->instanceCallback = callback_f;
39
40 // we determine the time in microseconds
41 switch (unit) {
42 case MS:
43 result = alarm_pool_add_repeating_timer_ms(ap, time, &staticCallback,
44 this, &timer);
45 break;
46 case US:
47 result = alarm_pool_add_repeating_timer_us(ap, time, &staticCallback,
48 this, &timer);
49 break;
50 case HZ:
51 // convert hz to time in us
53 result = alarm_pool_add_repeating_timer_us(ap, time_us, &staticCallback,
54 this, &timer);
55 break;
56 }
57
58 return result;
59 }
60
61 inline static bool staticCallback(repeating_timer *ptr) {
63 (TimerAlarmRepeatingDriverRP2040 *)ptr->user_data;
64 self->instanceCallback(self->object);
65 return true;
66 }
67
68 // ends the timer and if necessary the task
69 bool end() { return cancel_repeating_timer(&timer); }
70
71 protected:
72 alarm_pool_t *ap = nullptr;
74 my_repeating_timer_callback_t instanceCallback = nullptr;
75};
76
79
80} // namespace audio_tools
81
82#endif
#define LOGI(...)
Definition AudioLoggerIDF.h:28
static uint32_t toTimeUs(uint32_t samplingRate, uint8_t limit=10)
converts sampling rate to delay in microseconds (μs)
Definition AudioTypes.h:242
TimeUnit
Time Units.
Definition AudioTypes.h:48
@ US
Definition AudioTypes.h:48
@ HZ
Definition AudioTypes.h:48
@ MS
Definition AudioTypes.h:48
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10
void(* my_repeating_timer_callback_t)(void *obj)
Definition AudioTimerRenesas.h:10
TimerAlarmRepeatingDriverAVR TimerAlarmRepeatingDriver
use TimerAlarmRepeating!
Definition AudioTimerAVR.h:94
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition AudioTypes.h:512
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