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