|
arduino-audio-tools
|
A minimal, single-client HTTP server that streams audio (or any other data) to a browser or media player: in -copy> client. The data is provided either from an Arduino Stream or via an AudioServerDataCallback, and is copied to the connected client on each doLoop()/copy() call, so no threads or blocking loops are used. More...
#include <AudioServerT.h>
Public Member Functions | |
| AudioServerT (const char *network, const char *password, int port=80) | |
| Construct a new Audio WAV Server object. | |
| AudioServerT (int port=80) | |
| Construct a new Audio Server object We assume that the WiFi is already connected. | |
| bool | begin () |
| Just starts the server. | |
| bool | begin (AudioServerDataCallback cb, const char *contentType) |
| Start the server. The data must be provided by a callback method. | |
| bool | begin (Stream &in, const char *contentType) |
| Start the server. You need to be connected to WiFI before calling this method. | |
| bool | copy () |
| Add this method to your loop Returns true while the client is connected. (The same functionality like doLoop()) | |
| bool | doLoop () |
| Add this method to your loop Returns true while the client is connected. | |
| void | end () |
| Ends the connection and resets the state. | |
| bool | isChunked () |
| Determines if chunked transfer encoding is active. | |
| bool | isClientConnected () |
| Checks if any client has connected. | |
| size_t | maxOutputSize () |
| Provides the defined total number of bytes that will be sent. | |
| operator bool () | |
| Checks if any client has connected. | |
| Stream & | out () |
| Provides the output stream. | |
| Client * | out_ptr () |
| Provides a pointer to the WiFiClient. | |
| void | setChunked (bool flag) |
| void | setContentType (const char *contentType) |
| Defines the content type (MIME type) of the data that will be sent to the client. Needs to be set before calling begin(). | |
| void | setConverter (BaseConverter *c) |
| defines a converter that will be used when the audio is rendered | |
| void | setCopyBufferSize (int size) |
| Changes the copy buffer size. | |
| void | setMaxOutputSize (size_t size) |
Protected Member Functions | |
| void | connectWiFi () |
| void | endChunked () |
| Sends the terminating 0-length chunk when chunked transfer is active. | |
| void | processClient () |
| Handle an new client connection and return the data. | |
| virtual void | sendReplyContent () |
| virtual void | sendReplyHeader () |
| void | setupServer (int port) |
| bool | startServer () |
Protected Attributes | |
| AudioServerDataCallback | callback = nullptr |
| ChunkedPrint | chunked_print |
| Client | client_obj |
| const char * | content_type = nullptr |
| BaseConverter * | converter_ptr = nullptr |
| StreamCopy | copier |
| Stream * | in = nullptr |
| bool | is_chunked = true |
| size_t | max_output_size = 0 |
| std::string | network |
| std::string | password |
| size_t | sent = 0 |
| Server | server |
A minimal, single-client HTTP server that streams audio (or any other data) to a browser or media player: in -copy> client. The data is provided either from an Arduino Stream or via an AudioServerDataCallback, and is copied to the connected client on each doLoop()/copy() call, so no threads or blocking loops are used.
The class is templated on the Client/Server implementation (e.g. WiFiClient/WiFiServer, EthernetClient/EthernetServer) so it can run on top of any Arduino networking stack that follows that API.
By default the response is sent with Transfer-Encoding: chunked since the total size is usually not known upfront; call setMaxOutputSize() if the size is known to send a Content-Length header instead.
This class only serves the data - it does not do any audio encoding. Use AudioEncoderServerT if you need the input to be encoded (e.g. to WAV or MP3) before it is sent to the client.
| Client | the client class e.g. WiFiClient |
| Server | the server class e.g. WiFiServer |
|
inline |
Construct a new Audio Server object We assume that the WiFi is already connected.
|
inline |
Construct a new Audio WAV Server object.
| network | |
| password |
|
inline |
Just starts the server.
|
inline |
Start the server. The data must be provided by a callback method.
| cb | |
| contentType | Mime Type of result |
Start the server. You need to be connected to WiFI before calling this method.
| in | |
| contentType | Mime Type of result |
|
inlineprotected |
|
inline |
Add this method to your loop Returns true while the client is connected. (The same functionality like doLoop())
|
inline |
Add this method to your loop Returns true while the client is connected.
|
inline |
Ends the connection and resets the state.
|
inlineprotected |
Sends the terminating 0-length chunk when chunked transfer is active.
|
inline |
Determines if chunked transfer encoding is active.
|
inline |
Checks if any client has connected.
|
inline |
Provides the defined total number of bytes that will be sent.
|
inline |
Checks if any client has connected.
Provides a pointer to the WiFiClient.
|
inlineprotected |
Handle an new client connection and return the data.
|
inlineprotectedvirtual |
Reimplemented in AudioEncoderServerT< Client, Server >.
|
inlineprotectedvirtual |
Reimplemented in AudioEncoderServerT< Client, Server >.
|
inline |
Activates/deactivates HTTP chunked transfer encoding (Transfer-Encoding: chunked) instead of relying on the connection close to signal the end of the data. Needs to be set before calling begin().
|
inline |
Defines the content type (MIME type) of the data that will be sent to the client. Needs to be set before calling begin().
|
inline |
defines a converter that will be used when the audio is rendered
|
inline |
Changes the copy buffer size.
|
inline |
Defines the total number of bytes that will be sent so that a Content-Length header can be provided. If no size is defined (default), the size is unknown up front, so we fall back to chunked transfer encoding instead. Needs to be set before calling begin().
|
inlineprotected |
|
inlineprotected |
Connects to WiFi (if enabled) and starts the server: shared tail of all begin() overloads
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |