| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #pragma once
- // #include "dtmf_dolphin_i.h"
- #include "dtmf_dolphin_event.h"
- #include "dtmf_dolphin_hal.h"
- #define SAMPLE_BUFFER_LENGTH 8192
- #define PERIOD_2_PI 6.2832
- #define CPU_CLOCK_FREQ 64000000
- typedef struct {
- float cached_freq;
- size_t period;
- float* lookup_table;
- uint16_t offset;
- } DTMFDolphinOsc;
- typedef struct {
- float duration;
- size_t period;
- bool* lookup_table;
- uint16_t offset;
- } DTMFDolphinPulseFilter;
- typedef struct {
- size_t buffer_length;
- size_t half_buffer_length;
- uint8_t* buffer_buffer;
- uint16_t* sample_buffer;
- float volume;
- FuriMessageQueue* queue;
- DTMFDolphinOsc* osc1;
- DTMFDolphinOsc* osc2;
- DTMFDolphinPulseFilter* filter;
- bool playing;
- } DTMFDolphinAudio;
- DTMFDolphinOsc* dtmf_dolphin_osc_alloc();
- DTMFDolphinAudio* dtmf_dolphin_audio_alloc();
- void dtmf_dolphin_audio_free(DTMFDolphinAudio* player);
- void dtmf_dolphin_osc_free(DTMFDolphinOsc* osc);
- bool dtmf_dolphin_audio_play_tones(
- float freq1,
- float freq2,
- uint16_t pulses,
- uint16_t pulse_ms,
- uint16_t gap_ms);
- bool dtmf_dolphin_audio_stop_tones();
- bool dtmf_dolphin_audio_handle_tick();
|