7#include "TinySPISlave.h"
89 LOGE(
"SPIRegAudioSlave: TinySPISlave begin failed");
99 spi.onFrameImmediate(
nullptr,
nullptr);
113 tinyspi::detail::Critical c;
117 tmp[
sizeof(tmp) - 1] = 0;
118 LOGI(
"SPIRegAudioSlave mime: %s", tmp);
125 tinyspi::detail::Critical c;
145 void* ctx =
nullptr) {
161 if (!
active || data ==
nullptr || len == 0 ||
p_buffer ==
nullptr)
return 0;
180 void (*
mime_cb)(
const char*,
void*) =
nullptr;
197 out.
channels = (uint16_t)in[4] | ((uint16_t)in[5] << 8);
218 while (len--)
spi.read();
230 size_t n = len <
sizeof(chunk) ? len :
sizeof(chunk);
231 n =
spi.read(chunk, n);
242 tinyspi::detail::Critical c;
250 tinyspi::detail::Critical c;
261 while (len--)
spi.read();
267 memset(reg, 0,
sizeof(reg));
271 tinyspi::detail::Critical c;
278 tinyspi::detail::Critical c;
285 reg[0] = space & 0xFF;
286 reg[1] = (space >> 8) & 0xFF;
287 reg[2] = (space >> 16) & 0xFF;
288 reg[3] = (space >> 24) & 0xFF;
296 if (want == 0) want = size;
297 size_t room = (
size_t)
spi.availableForWrite();
298 if (want > room) want = room;
299 for (
size_t j = 0; j < want; j++) {
300 spi.write(j < size ? reg[j] : 0);
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGE(...)
Definition AudioLoggerIDF.h:30
@ SPIREG_MIME
32 bytes (rw): zero terminated mime type
Definition SPIRegAudioRegisters.h:29
@ SPIREG_AUDIO_INFO
8 bytes (rw): sample_rate u32, channels u16, bits_per_sample u8, reserved
Definition SPIRegAudioRegisters.h:27
@ SPIREG_DATA
stream (wo): the bytes of the frame are appended to the audio buffer
Definition SPIRegAudioRegisters.h:33
@ SPIREG_AVAILABLE
4 bytes (ro): u32 free space in the slave audio buffer in bytes
Definition SPIRegAudioRegisters.h:31