arduino-audio-tools
Loading...
Searching...
No Matches
AudioPlayerProtocolServer.h
Go to the documentation of this file.
1#pragma once
5#include "HttpServer.h"
6
7namespace audio_tools {
8
15 public:
18 AudioPlayer& player, int port = 80,
19 const char* ssid = nullptr,
20 const char* pwd = nullptr) {
21 setProtocol(protocol);
22 setPlayer(player);
26 }
27
30
32 void setPlayer(AudioPlayer& player) { p_protocol->setPlayer(player); }
33
34 void setPort(int port) { this->port = port; }
35 void setSSID(const char* ssid) { this->ssid = ssid; }
36 void setPassword(const char* password) { this->password = password; }
37 void setSSID(const char* ssid, const char* password) {
38 this->ssid = ssid;
39 this->password = password;
40 }
41
42 bool begin() {
43 context[0] = this;
44 server.on("/", T_GET, parse, context.data(), context.size());
45
46 // connect to WIFI
47 if (ssid != nullptr && password != nullptr) {
48 return server.begin(port, ssid, password);
49 }
50 return server.begin(port);
51 }
52
53 void loop() { server.copy(); }
54 void copy() { server.copy(); }
55
57 void setBufferSize(int size) { buffer_size = size; }
58
60 this->p_protocol = &protocol;
61 }
62
63 protected:
70 int port = 80;
71 const char* ssid = nullptr;
72 const char* password = nullptr;
73 int buffer_size = 512;
74
75 static void parse(HttpServer* server, const char* requestPath,
77 LOGI("parse: %s", requestPath);
79 self->ringBuffer.resize(self->buffer_size);
83 LOGI("available: %d", queueStream.available());
84 server->reply("text/plain", queueStream, queueStream.available(),
85 ok ? 200 : 400, ok ? SUCCESS : "Error");
86 self->ringBuffer.resize(0);
87 }
88};
89
90} // namespace audio_tools
#define LOGI(...)
Definition AudioLoggerIDF.h:28
High-level audio playback pipeline and controller.
Definition AudioPlayer.h:51
Abstract class for protocol to control the audio player.
Definition AudioPlayerProtocol.h:11
virtual bool processCommand(const char *input, Print &result)=0
virtual void setPlayer(AudioPlayer &player)
Defines the player.
Definition AudioPlayerProtocol.h:25
Audio Player Protocol Server: We can use the indicated protocol over http to control the audio player...
Definition AudioPlayerProtocolServer.h:14
QueueStream< uint8_t > queueStream
Definition AudioPlayerProtocolServer.h:68
void setPassword(const char *password)
Definition AudioPlayerProtocolServer.h:36
void setSSID(const char *ssid)
Definition AudioPlayerProtocolServer.h:35
AudioPlayerProtocol * p_protocol
Definition AudioPlayerProtocolServer.h:66
void setProtocol(AudioPlayerProtocol &protocol)
Definition AudioPlayerProtocolServer.h:59
const char * ssid
Definition AudioPlayerProtocolServer.h:71
bool begin()
Definition AudioPlayerProtocolServer.h:42
int port
Definition AudioPlayerProtocolServer.h:70
AudioPlayerProtocolServer()=default
Empty constructor: call setPlayer to define the player.
static void parse(HttpServer *server, const char *requestPath, HttpRequestHandlerLine *hl)
Definition AudioPlayerProtocolServer.h:75
void setSSID(const char *ssid, const char *password)
Definition AudioPlayerProtocolServer.h:37
void setPlayer(AudioPlayer &player)
Defines the player.
Definition AudioPlayerProtocolServer.h:32
Vector< void * > context
Definition AudioPlayerProtocolServer.h:69
const char * password
Definition AudioPlayerProtocolServer.h:72
void copy()
Definition AudioPlayerProtocolServer.h:54
AudioPlayerProtocolServer(AudioPlayerProtocol &protocol, AudioPlayer &player, int port=80, const char *ssid=nullptr, const char *pwd=nullptr)
Default constructor.
Definition AudioPlayerProtocolServer.h:17
void setBufferSize(int size)
Defines the buffer size that is made available for the http reply.
Definition AudioPlayerProtocolServer.h:57
WiFiServer wifi
Definition AudioPlayerProtocolServer.h:64
int buffer_size
Definition AudioPlayerProtocolServer.h:73
void setPort(int port)
Definition AudioPlayerProtocolServer.h:34
RingBuffer< uint8_t > ringBuffer
Definition AudioPlayerProtocolServer.h:67
void loop()
Definition AudioPlayerProtocolServer.h:53
HttpServer server
Definition AudioPlayerProtocolServer.h:65
Stream class which stores the data in a temporary queue buffer. The queue can be consumed e....
Definition BaseStream.h:312
virtual bool begin() override
Activates the output.
Definition BaseStream.h:340
int available() override
Definition BaseStream.h:364
Implements a typed Ringbuffer.
Definition Buffers.h:341
virtual bool resize(int len)
Resizes the buffer if supported: returns false if not supported.
Definition Buffers.h:418
Vector implementation which provides the most important methods as defined by std::vector....
Definition Vector.h:21
iterator begin()
Definition Vector.h:287
T * data()
Definition Vector.h:316
int size()
Definition Vector.h:178
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10
static const char * SUCCESS
Definition HttpHeader.h:25
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition AudioTypes.h:512