Files
klubhaus-doorbell/libraries/audio-tools/examples/examples-communication/serial/mp3-xon-xoff/send-mp3/send-mp3.ino
2026-02-16 19:05:11 -08:00

48 lines
1.1 KiB
C++

/**
* @file send-mp3.ino
* @brief Example of sending an mp3 stream over Serial the AudioTools library.
* We use xon/xoff to control the flow of the data.
* I am using an ESP32 Dev Module for the test with the pins TX=17 and RX=16.
*/
#include "AudioTools.h"
#include "AudioTools/Communication/AudioHttp.h"
URLStream url("ssid", "password"); // or replace with ICYStream to get metadata
StreamCopy copier(Serial1, url); // copy url to decoder
// xon/xoff flow control
const char xon = 17;
const char xoff = 19;
bool is_active = false;
void setup() {
Serial.begin(115200);
AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Error);
// setup serial data sink
Serial2.begin(115200);
// mp3 radio
url.begin("http://stream.srg-ssr.ch/m/rsj/mp3_128", "audio/mp3");
}
// Determine if we can send data from the flow control sent by the receiver
bool isActive() {
char c = Serial2.read();
switch (c) {
case xon:
is_active = true;
break;
case xoff:
is_active = false;
break;
}
return is_active;
}
void loop() {
if (isActive()) {
copier.copy();
}
}