Arduino DLNA Server
Classes | Typedefs | Enumerations | Variables
tiny_dlna Namespace Reference

Classes

class  Allocator
 Memory allocateator which uses malloc. More...
 
class  AllocatorExt
 Memory allocateator which uses ps_malloc (on the ESP32) and if this fails it resorts to malloc. More...
 
class  Icon
 Information about the icon. More...
 
struct  IPAddressAndPort
 IP Adress including Port information. More...
 
class  List
 Double linked list. More...
 
class  LoggerClass
 Logger that writes messages dependent on the log level. More...
 
class  NullPrint
 
class  QueueLockFree
 A simple single producer, single consumer lock free queue. More...
 
class  RingBuffer
 Implementation of a Simple Circular Buffer. Instead of comparing the position of the read and write pointer in order to figure out if we still have characters available or space left to write we keep track of the actual length which is easier to follow. More...
 
class  Str
 String implementation which keeps the data on the heap. We grow the allocated memory only if the copy source is not fitting. More...
 
class  StrPrint
 
class  StrView
 A simple wrapper to provide string functions on char*. If the underlying char* is a const we do not allow any updates; The ownership of the chr* must be managed externally! More...
 
class  Url
 URL parser which breaks a full url string up into its individual parts. More...
 
class  Vector
 Vector implementation which provides the most important methods as defined by std::vector. This class it is quite handy to have and most of the times quite better then dealing with raw c arrays. More...
 
class  MediaRenderer
 MediaRenderer DLNA Device. More...
 
class  DLNAControlPointMgr
 Setup of a Basic DLNA Control Point. The control point. More...
 
class  DLNAControlPointRequestParser
 Translates DLNA UDP Requests to Schedule so that we can schedule a reply. More...
 
class  DLNADevice
 Device Attributes and generation of XML using urn:schemas-upnp-org:device-1-0. We could just return a predefined device xml document, but we provide a dynamic generation of the service xml which should be more memory efficient. Strings are represented as char*, so you can assign values that are stored in ProgMem to mimimize the RAM useage. If you need to keep the values on the heap you can use addString() method. More...
 
class  DLNADeviceMgr
 Setup of a Basic DLNA Device service. The device registers itself to the network and answers to the DLNA queries and requests. A DLNA device uses UDP, Http, XML and Soap to discover and manage a service, so there is quite some complexity involved: More...
 
class  DLNADeviceRequestParser
 Translates DLNA UDP Requests to Schedule so that we can schedule a reply. More...
 
class  DLNAServiceInfo
 Attributes needed for the DLNA Service Definition. More...
 
struct  RequestData
 Provides information of the received UDP which consists of the (xml) data and the peer address and port. More...
 
class  IUDPService
 Abstract Interface for UDP API. More...
 
class  Notification
 DLNA notification. More...
 
struct  Schedule
 An individual Schedule (to send out UDP messages) More...
 
class  MSearchSchedule
 Send MSearch request. More...
 
class  MSearchReplySchedule
 Answer from device to MSearch request by sending a reply. More...
 
class  MSearchReplyCP
 Processing at control point to handle a MSearchReply from the device. More...
 
class  NotifyReplyCP
 
class  PostAliveSchedule
 Send out PostAlive messages: Repeated every 5 seconds. More...
 
class  PostByeSchedule
 Send out ByeBye message. More...
 
class  PostSubscribe
 Send SUBSCRIBE message via UDP unicast. More...
 
class  Scheduler
 Scheduler which processes all due Schedules (to send out UDP replies) More...
 
class  Argument
 DLNA Service: Action Argument. More...
 
class  ActionReply
 
class  ActionRequest
 
struct  StateValue
 
class  StringRegistry
 
class  UDPAsyncService
 Access to UDP functionality: sending and receiving of data using the Async API of the ESP32. More...
 
class  UDPService
 Access to UDP functionality: sending and receiving of data It seems that the UDP receive is not working for. More...
 
class  XMLDeviceParser
 Parses an DLNA device xml string to fill the DLNADevice data structure. More...
 
struct  XMLNode
 Represents a single XML element. More...
 
struct  XMLPrinter
 Functions to efficiently output XML. XML data contains a lot of redundancy so it is more memory efficient to generate the data instead of using a predefined XML document. More...
 
class  HttpChunkReader
 Http might reply with chunks. So we need to dechunk the data. see https://en.wikipedia.org/wiki/Chunked_transfer_encoding. More...
 
class  HttpChunkWriter
 Writes the data chunked to the actual client. More...
 
struct  MimeExtension
 Mapping from file extensions to mime types. More...
 
struct  HttpHeaderLine
 A individual key - value header line. More...
 
class  HttpHeader
 In a http request and reply we need to process header information. With this API we can define and query the header information. The individual header lines are stored in a list. This is the common functionality for the HttpRequest and HttpReplyHeader subclasses. More...
 
class  HttpRequestHeader
 Reading and writing of Http Requests. More...
 
class  HttpReplyHeader
 Reading and Writing of Http Replys. More...
 
class  HttpLineReader
 We read a single line. A terminating 0 is added to the string to make it compliant for c string functions. More...
 
class  HttpParameters
 API for http parameters: key=value&key1=value1. More...
 
class  HttpRequest
 Simple API to process get, put, post, del http requests I tried to use Arduino HttpClient, but I did not manage to extract the mime type from streaming get requests. More...
 
class  HttpRequestHandlerLine
 Used to register and process callbacks. More...
 
class  HttpRequestRewrite
 Object which information about the rewrite rule. More...
 
class  HttpServer
 A Simple Header only implementation of Http Server that allows the registration of callback functions. This is based on the Arduino Server class. More...
 
class  HttpStreamCopy
 Processing of a single stream to a single client. In the loop we can simply provide individual small chunks until we are done. More...
 
class  HttpStreamedMultiOutput
 Generic HttpStreamedMultiOutput Class which handles multicast streaming. We can optionally define some default (e.g. html) content that will be written at the beginning and at the end of the streaming session to the client. More...
 
class  HttpStreamedOutput
 Abstract class for handling streamed output. More...
 
class  HttpTunnel
 Forwards a request to a destination URL and provides a pointer to the result stream. More...
 

Typedefs

typedef void(* http_callback) (HttpServer *server, const char *requestPath, HttpRequestHandlerLine *hl)
 
typedef void(* web_callback_fn) (HttpServer *server, const char *requestPath, HttpRequestHandlerLine *handlerLine)
 

Enumerations

enum  DlnaLogLevel { DlnaDebug , DlnaInfo , DlnaWarning , DlnaError }
 Supported log levels. More...
 
enum  TinyMethodID {
  T_UNDEFINED , T_GET , T_HEAD , T_POST ,
  T_PUT , T_DELETE , T_TRACE , T_OPTIONS ,
  T_CONNECT , T_PATCH
}
 

Variables

LoggerClass DlnaLogger
 
DLNAControlPointMgrselfDLNAControlPoint = nullptr
 
constexpr const MimeExtension defaultMimeTable []
 
const MimeExtensionmimeTable
 
const int MaxHeaderLineLength = 200
 
const char * CONTENT_TYPE = "Content-Type"
 
const char * CONTENT_LENGTH = "Content-Length"
 
const char * CONNECTION = "Connection"
 
const char * CON_CLOSE = "close"
 
const char * CON_KEEP_ALIVE = "keep-alive"
 
const char * TRANSFER_ENCODING = "Transfer-Encoding"
 
const char * CHUNKED = "chunked"
 
const char * ACCEPT = "Accept"
 
const char * ACCEPT_ALL = "*/*"
 
const char * SUCCESS = "Success"
 
const char * USER_AGENT = "User-Agent"
 
const char * DEFAULT_AGENT
 
const char * HOST_C = "Host"
 
const char * ACCEPT_ENCODING = "Accept-Encoding"
 
const char * IDENTITY = "identity"
 
const char * LOCATION = "Location"
 
const char * methods []
 

Typedef Documentation

◆ http_callback

typedef void(* tiny_dlna::http_callback) (HttpServer *server, const char *requestPath, HttpRequestHandlerLine *hl)

◆ web_callback_fn

typedef void(* tiny_dlna::web_callback_fn) (HttpServer *server, const char *requestPath, HttpRequestHandlerLine *handlerLine)

Enumeration Type Documentation

◆ DlnaLogLevel

Supported log levels.

Enumerator
DlnaDebug 
DlnaInfo 
DlnaWarning 
DlnaError 

◆ TinyMethodID

Enumerator
T_UNDEFINED 
T_GET 
T_HEAD 
T_POST 
T_PUT 
T_DELETE 
T_TRACE 
T_OPTIONS 
T_CONNECT 
T_PATCH 

Variable Documentation

◆ ACCEPT

const char* tiny_dlna::ACCEPT = "Accept"

◆ ACCEPT_ALL

const char* tiny_dlna::ACCEPT_ALL = "*/*"

◆ ACCEPT_ENCODING

const char* tiny_dlna::ACCEPT_ENCODING = "Accept-Encoding"

◆ CHUNKED

const char* tiny_dlna::CHUNKED = "chunked"

◆ CON_CLOSE

const char* tiny_dlna::CON_CLOSE = "close"

◆ CON_KEEP_ALIVE

const char* tiny_dlna::CON_KEEP_ALIVE = "keep-alive"

◆ CONNECTION

const char* tiny_dlna::CONNECTION = "Connection"

◆ CONTENT_LENGTH

const char* tiny_dlna::CONTENT_LENGTH = "Content-Length"

◆ CONTENT_TYPE

const char* tiny_dlna::CONTENT_TYPE = "Content-Type"

◆ DEFAULT_AGENT

const char* tiny_dlna::DEFAULT_AGENT
Initial value:
=
"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

◆ defaultMimeTable

const MimeExtension tiny_dlna::defaultMimeTable
constexpr
Initial value:
= {
{".htm", "text/html"}, {".css", "text/css"},
{".xml", "text/xml"}, {".js", "application/javascript"},
{".png", "image/png"}, {".gif", "image/gif"},
{".jpeg", "image/jpeg"}, {".ico", "image/x-icon"},
{".pdf", "application/pdf"}, {".zip", "application/zip"},
{nullptr, nullptr}}

◆ DlnaLogger

LoggerClass tiny_dlna::DlnaLogger

◆ HOST_C

const char* tiny_dlna::HOST_C = "Host"

◆ IDENTITY

const char* tiny_dlna::IDENTITY = "identity"

◆ LOCATION

const char* tiny_dlna::LOCATION = "Location"

◆ MaxHeaderLineLength

const int tiny_dlna::MaxHeaderLineLength = 200

◆ methods

const char* tiny_dlna::methods[]
Initial value:
= {"?", "GET", "HEAD", "POST",
"PUT", "DELETE", "TRACE", "OPTIONS",
"CONNECT", "PATCH", nullptr}

◆ mimeTable

const MimeExtension * tiny_dlna::mimeTable

◆ selfDLNAControlPoint

DLNAControlPointMgr* tiny_dlna::selfDLNAControlPoint = nullptr

◆ SUCCESS

const char* tiny_dlna::SUCCESS = "Success"

◆ TRANSFER_ENCODING

const char* tiny_dlna::TRANSFER_ENCODING = "Transfer-Encoding"

◆ USER_AGENT

const char* tiny_dlna::USER_AGENT = "User-Agent"