10#pragma GCC diagnostic ignored "-Wunused-variable"
11#pragma GCC diagnostic ignored "-Wunused-function"
12#pragma GCC diagnostic ignored "-Wvla"
13#pragma GCC diagnostic ignored "-Wsign-compare"
14#pragma GCC diagnostic ignored "-Woverloaded-virtual"
15#pragma GCC diagnostic ignored "-Wdouble-promotion"
17#define AUDIOTOOLS_VERSION "1.2.4"
18#define AUDIOTOOLS_MAJOR_VERSION 1
19#define AUDIOTOOLS_MINOR_VERSION 2
30#if __has_include("AudioConfigLocal.h")
31#include "AudioConfigLocal.h"
35#ifndef AUDIO_INCLUDE_CORE
36# define AUDIO_INCLUDE_CORE true
40#ifndef USE_AUDIOTOOLS_NS
41# define USE_AUDIOTOOLS_NS true
52#ifndef USE_AUDIO_LOGGING
53# define USE_AUDIO_LOGGING true
57# define LOG_LEVEL AudioLogger::Warning
61# define LOG_STREAM Serial
64#ifndef LOG_PRINTF_BUFFER_SIZE
65# define LOG_PRINTF_BUFFER_SIZE 303
69# define LOG_METHOD __PRETTY_FUNCTION__
73#ifndef USE_CHECK_MEMORY
74# define USE_CHECK_MEMORY false
79# define USE_OBSOLETE false
86#ifndef DEFAULT_BUFFER_SIZE
87# define DEFAULT_BUFFER_SIZE 1024
90#ifndef DEFAULT_SAMPLE_RATE
91# define DEFAULT_SAMPLE_RATE 44100
94#ifndef DEFAULT_CHANNELS
95# define DEFAULT_CHANNELS 2
98#ifndef DEFAULT_BITS_PER_SAMPLE
99# define DEFAULT_BITS_PER_SAMPLE 16
102#ifndef I2S_DEFAULT_PORT
103# define I2S_DEFAULT_PORT 0
106#ifndef I2S_BUFFER_SIZE
107# define I2S_BUFFER_SIZE 512
110#ifndef I2S_BUFFER_COUNT
111# define I2S_BUFFER_COUNT 6
114#ifndef ANALOG_BUFFER_SIZE
115# define ANALOG_BUFFER_SIZE 512
118#ifndef ANALOG_BUFFER_COUNT
119# define ANALOG_BUFFER_COUNT 6
122#ifndef A2DP_BUFFER_SIZE
123# define A2DP_BUFFER_SIZE 512
126#ifndef A2DP_BUFFER_COUNT
127# define A2DP_BUFFER_COUNT 30
130#ifndef CODEC_DELAY_MS
131# define CODEC_DELAY_MS 10
134#ifndef COPY_DELAY_ON_NODATA
135# define COPY_DELAY_ON_NODATA 10
138#ifndef COPY_RETRY_LIMIT
139# define COPY_RETRY_LIMIT 20
142#ifndef MAX_SINGLE_CHARS
143# define MAX_SINGLE_CHARS 8
148# define HTTP_MAX_LEN 1024
152#ifndef HTTP_CHUNKED_SIZE_MAX_LEN
153# define HTTP_CHUNKED_SIZE_MAX_LEN 80
157#ifndef USE_RESAMPLE_BUFFER
158# define USE_RESAMPLE_BUFFER true
164#ifndef PWM_BUFFER_SIZE
165# define PWM_BUFFER_SIZE 1024
168#ifndef PWM_BUFFER_COUNT
169# define PWM_BUFFER_COUNT 4
172#ifndef PWM_AUDIO_FREQUENCY
173# define PWM_AUDIO_FREQUENCY 30000
177#ifndef AUDIOTOOLS_METADATA_ICY_ASCII_ONLY
178#define AUDIOTOOLS_METADATA_ICY_ASCII_ONLY true
181#ifndef AUDIOTOOLS_METADATA_ICY_LIMIT
182#define AUDIOTOOLS_METADATA_ICY_LIMIT 400
210#if (defined(ARDUINO_SEEED_XIAO_NRF52840_SENSE) || defined(ARDUINO_ARDUINO_NANO33BLE) ) && !defined(ARDUINO_ARCH_ZEPHYR)
215#if defined(ARDUINO_ARCH_MBED_RP2040)
221#if defined(ARDUINO_ARCH_RP2040) && !defined(ARDUINO_ARCH_MBED)
231#if defined(ARDUINO_ARCH_STM32) || defined(STM32)
236#ifdef ARDUINO_ARCH_SAMD
242#if defined(ARDUINO_GIGA)
248#if defined(ARDUINO_ARCH_MBED_PORTENTA)
254#if defined(ARDUINO_ARCH_RENESAS) || defined(_RENESAS_RA_)
259#if defined(ARDUINO_ARCH_TANGNANO20K)
265#include <zephyr/kernel.h>
266#include <zephyr/sys/util.h>
273#ifndef VS1053_DEFINED
275# define VS1053_DCS 16
276# define VS1053_DREQ 4
277# define VS1053_RESET 15
278# define VS1053_CS_SD -1
284#define VS1053_DEFAULT_VOLUME 0.7
291#ifndef PREFER_FIXEDPOINT
292# define PREFER_FIXEDPOINT false
296# define USE_STREAM_WRITE_OVERRIDE
299#ifndef ANALOG_MAX_SAMPLE_RATE
300# define ANALOG_MAX_SAMPLE_RATE 44100
303#ifndef PWM_MAX_SAMPLE_RATE
304# define PWM_MAX_SAMPLE_RATE 8000
307#ifndef URL_CLIENT_TIMEOUT
308# define URL_CLIENT_TIMEOUT 60000;
311#ifndef URL_HANDSHAKE_TIMEOUT
312# define URL_HANDSHAKE_TIMEOUT 120000
316# define USE_TASK false
319#ifndef USE_SERVER_ACCEPT
320# define USE_SERVER_ACCEPT false
324# define USE_ALLOCATOR false
327#ifndef USE_ESP32_LOGGER
328# define USE_ESP32_LOGGER false
332#ifndef USE_PRINT_FLUSH
333# define USE_PRINT_FLUSH true
336#ifndef ESP_IDF_VERSION_VAL
337# define ESP_IDF_VERSION_VAL(a, b , c) 0
340#ifdef USE_NO_MEMACCESS
341#pragma GCC diagnostic ignored "-Wclass-memaccess"
344#ifdef USE_INITIALIZER_LIST
345#pragma GCC diagnostic ignored "-Wnarrowing"
349# define CHECK_MEMORY() checkMemory(true)
351# define CHECK_MEMORY()
If you want to use the framework w/o Arduino you need to provide the implementation of a couple of cl...