63 virtual bool begin() {
return true; }
70 size_t print(Print& out,
void* ref =
nullptr) {
76 std::function<
size_t(Print&,
void*)>([](Print& o,
void* r) ->
size_t {
101 void setBaseURL(IPAddress ip,
int port,
const char* path =
nullptr) {
114 if (path !=
nullptr && !
StrView(path).startsWith(
"/")) {
152 static char result[80] = {0};
202 if (
services.empty())
return result;
204 if (
StrView(service.subscription_namespace_abbrev).
equals(abbrev)) {
238 if (
icons.size() == 0) {
249 Icon icon{
"image/png", 48, 48, 24,
"/icon.png",
251 Icon icon128{
"image/png",
258 Icon icon512{
"image/png",
265 icons.push_back(icon);
266 icons.push_back(icon128);
267 icons.push_back(icon512);
296 Str udn =
"uuid:09349455-2941-4cf7-9847-0dd5ab210e97";
298 "xmlns=\"urn:schemas-upnp-org:device-1-0\" "
299 "xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\"";
324 std::function<
size_t(Print&,
void*)>([](Print& o,
void* r) ->
size_t {
331 std::function<
size_t(Print&,
void*)>([](Print& o,
void* r) ->
size_t {
358 std::function<
size_t(Print&,
void*)>([](Print& o,
void* r) ->
size_t {
364 std::function<
size_t(Print&,
void*)>([](Print& o,
void* r) ->
size_t {
373 char major[5], minor[5];
374 sprintf(major,
"%d", this->version_major);
375 sprintf(minor,
"%d", this->version_minor);
386 } ctx{
this, &service};
389 std::function<
size_t(Print&,
void*)>([](Print& o,
void* r) ->
size_t {
391 return c->self->printService(o, c->svc);
411 result += xp.
printf(
"<eventSubURL/>");
428 std::function<
size_t(Print&,
void*)>([](Print& o,
void* r) ->
size_t {
430 return c->self->printIconDlnaInfo(o, c->icon);
443 result += xp.
printNode(
"mimetype",
"image/png");
Lightweight DLNA control point manager.
Definition: DLNAControlPoint.h:61
Device Attributes and generation of XML using urn:schemas-upnp-org:device-1-0. We could just return a...
Definition: DLNADeviceInfo.h:28
Vector< DLNAServiceInfo > & getServices()
Provides all service definitions.
Definition: DLNADeviceInfo.h:212
Str udn
Definition: DLNADeviceInfo.h:296
Vector< DLNAServiceInfo > services
Definition: DLNADeviceInfo.h:311
Url device_url
Definition: DLNADeviceInfo.h:291
void setModelDescription(const char *descr)
Definition: DLNADeviceInfo.h:166
Str model_number
Definition: DLNADeviceInfo.h:308
size_t printSpecVersion(Print &out, void *ref)
Definition: DLNADeviceInfo.h:371
int version_minor
Definition: DLNADeviceInfo.h:294
Str device_type
Definition: DLNADeviceInfo.h:301
IPAddress localhost
Definition: DLNADeviceInfo.h:292
~DLNADeviceInfo()
Definition: DLNADeviceInfo.h:60
void setDeviceType(const char *st)
Definition: DLNADeviceInfo.h:84
Str universal_product_code
Definition: DLNADeviceInfo.h:310
const char * getFriendlyName()
Definition: DLNADeviceInfo.h:161
Str x_dlnacap
Definition: DLNADeviceInfo.h:300
void addService(DLNAServiceInfo s)
Adds a service definition.
Definition: DLNADeviceInfo.h:187
Str manufacturer_url
Definition: DLNADeviceInfo.h:304
Icon getIcon(int idx=0)
Provides the item at indix.
Definition: DLNADeviceInfo.h:237
void setNS(const char *ns)
Definition: DLNADeviceInfo.h:158
const char * getManufacturer()
Definition: DLNADeviceInfo.h:163
void addIcon(Icon icon)
adds an icon
Definition: DLNADeviceInfo.h:234
const char * getDLNACapability()
Definition: DLNADeviceInfo.h:184
size_t printRoot(Print &out, void *ref)
Definition: DLNADeviceInfo.h:319
void setManufacturerURL(const char *url)
Definition: DLNADeviceInfo.h:164
DLNAServiceInfo & getService(const char *id)
Finds a service definition by name.
Definition: DLNADeviceInfo.h:190
Str url_str
Definition: DLNADeviceInfo.h:313
void clear()
Clears all device information.
Definition: DLNADeviceInfo.h:215
Str ns
Definition: DLNADeviceInfo.h:297
size_t print(Print &out, void *ref=nullptr)
renders the device xml into the provided Print output.
Definition: DLNADeviceInfo.h:70
size_t printService(Print &out, void *srv)
Definition: DLNADeviceInfo.h:398
void clearIcons()
Overwrite the default icon.
Definition: DLNADeviceInfo.h:231
Str base_url
Definition: DLNADeviceInfo.h:295
DLNADeviceInfo(const DLNADeviceInfo &other)
Definition: DLNADeviceInfo.h:38
void setSubscriptionActive(bool flag)
Definition: DLNADeviceInfo.h:285
Str model_name
Definition: DLNADeviceInfo.h:306
const char * getUDN()
Provide the udn uuid.
Definition: DLNADeviceInfo.h:92
const char * getUniversalProductCode()
Definition: DLNADeviceInfo.h:177
void setModelName(const char *name)
Definition: DLNADeviceInfo.h:168
const char * getNS()
Definition: DLNADeviceInfo.h:159
void setSerialNumber(const char *sn)
Definition: DLNADeviceInfo.h:172
const char * getBaseURL()
Provides the base url.
Definition: DLNADeviceInfo.h:122
bool is_subcription_active
Definition: DLNADeviceInfo.h:314
virtual bool begin()
Override to initialize the device.
Definition: DLNADeviceInfo.h:63
const char * getModelDescription()
Definition: DLNADeviceInfo.h:167
Url & getDeviceURL()
This method returns base url/device.xml.
Definition: DLNADeviceInfo.h:133
void setManufacturer(const char *man)
Definition: DLNADeviceInfo.h:162
virtual void setupServices(IHttpServer &server, IUDPService &udp)
to be implemented by subclasses
Definition: DLNADeviceInfo.h:317
Str manufacturer
Definition: DLNADeviceInfo.h:303
void setUDN(const char *id)
Define the udn uuid.
Definition: DLNADeviceInfo.h:89
void setFriendlyName(const char *name)
Definition: DLNADeviceInfo.h:160
IPAddress getIPAddress()
Provides the local IP address.
Definition: DLNADeviceInfo.h:148
Str model_description
Definition: DLNADeviceInfo.h:305
void setActive(bool flag)
Sets the server to inactive.
Definition: DLNADeviceInfo.h:274
void setDLNACapability(const char *cap)
Definition: DLNADeviceInfo.h:183
bool isSubscriptionActive()
Definition: DLNADeviceInfo.h:287
size_t printIconList(Print &out, void *ref)
Definition: DLNADeviceInfo.h:416
Str serial_number
Definition: DLNADeviceInfo.h:309
DLNADeviceInfo(bool ok=true)
Definition: DLNADeviceInfo.h:35
const char * getModelNumber()
Definition: DLNADeviceInfo.h:171
void setIPAddress(IPAddress address)
Defines the local IP address.
Definition: DLNADeviceInfo.h:145
const char * getSerialNumber()
Definition: DLNADeviceInfo.h:173
virtual bool loop()
loop processing
Definition: DLNADeviceInfo.h:280
const char * getModelName()
Definition: DLNADeviceInfo.h:169
void setBaseURL(IPAddress ip, int port, const char *path=nullptr)
Defines the base URL.
Definition: DLNADeviceInfo.h:101
Vector< Icon > icons
Definition: DLNADeviceInfo.h:312
DLNAServiceInfo & getServiceByAbbrev(const char *abbrev)
Finds a service definition by name.
Definition: DLNADeviceInfo.h:200
const char * getManufacturerURL()
Definition: DLNADeviceInfo.h:165
size_t printServiceList(Print &out, void *ref)
Definition: DLNADeviceInfo.h:379
Str model_url
Definition: DLNADeviceInfo.h:307
bool is_active
Definition: DLNADeviceInfo.h:290
Str friendly_name
Definition: DLNADeviceInfo.h:302
size_t printDevice(Print &out, void *ref)
Definition: DLNADeviceInfo.h:338
void setModelNumber(const char *number)
Definition: DLNADeviceInfo.h:170
void setBaseURL(const char *url)
Defines the base url.
Definition: DLNADeviceInfo.h:95
const char * getDeviceType()
Definition: DLNADeviceInfo.h:86
void setUniversalProductCode(const char *upc)
Definition: DLNADeviceInfo.h:174
size_t printIconDlnaInfo(Print &out, Icon *icon)
Definition: DLNADeviceInfo.h:437
int version_major
Definition: DLNADeviceInfo.h:293
Vector< Icon > & getIcons()
Provides all icons.
Definition: DLNADeviceInfo.h:246
const char * getIPStr()
Provides the local address as string.
Definition: DLNADeviceInfo.h:151
Setup of a Basic DLNA Device service. The device registers itself to the network and answers to the D...
Definition: DLNADevice.h:46
Attributes needed for the DLNA Service Definition.
Definition: DLNAServiceInfo.h:18
Str event_sub_url
Definition: DLNAServiceInfo.h:41
Str service_id
Definition: DLNAServiceInfo.h:38
Str scpd_url
Definition: DLNAServiceInfo.h:39
Str service_type
Definition: DLNAServiceInfo.h:37
Str control_url
Definition: DLNAServiceInfo.h:40
Abstract interface for HTTP server functionality.
Definition: IHttpServer.h:50
Abstract Interface for UDP API.
Definition: IUDPService.h:33
Information about the icon.
Definition: Icon.h:10
const char * icon_url
Definition: Icon.h:16
int width
Definition: Icon.h:13
int height
Definition: Icon.h:14
int depth
Definition: Icon.h:15
A simple wrapper to provide string functions on char*. If the underlying char* is a const we do not a...
Definition: StrView.h:18
virtual bool isEmpty()
checks if the string is empty
Definition: StrView.h:383
virtual bool equals(const char *str)
checks if the string equals indicated parameter string
Definition: StrView.h:177
virtual bool contains(const char *str)
checks if the string contains a substring
Definition: StrView.h:284
Heap-backed string utility used throughout tiny_dlna.
Definition: Str.h:27
bool isEmpty() const
True if empty.
Definition: Str.h:54
bool endsWith(const char *suffix) const
True if ends with suffix (case-sensitive)
Definition: Str.h:175
const char * c_str() const
C-string pointer to internal buffer.
Definition: Str.h:88
bool replace(const char *toReplace, const char *replaced, int startPos=0)
Replace first occurrence of toReplace with replaced starting at startPos.
Definition: Str.h:269
URL parser which breaks a full url string up into its individual parts.
Definition: Url.h:18
Lightweight wrapper around std::vector with Arduino-friendly helpers and a pluggable allocator.
Definition: Vector.h:39
Incremental XML device parser using XMLParserPrint.
Definition: XMLDeviceParser.h:20
#define DEFAULT_DLNA_XCAP
Definition: dlna_config.h:36
#define DLNA_MAX_URL_LEN
app-wide max URL length
Definition: dlna_config.h:61
unsigned int icon128x128_png_len
Definition: icon128x128.h:161
const unsigned char icon128x128_png[]
Definition: icon128x128.h:2
const unsigned char icon_png[]
Definition: icon48x48.h:2
unsigned int icon_png_len
Definition: icon48x48.h:43
unsigned int icon512x512_png_len
Definition: icon512x512.h:1014
const unsigned char icon512x512_png[]
Definition: icon512x512.h:2
Definition: Allocator.h:13
Functions to efficiently output XML. XML data contains a lot of redundancy so it is more memory effic...
Definition: XMLPrinter.h:56
size_t printNode(XMLNode node)
Prints an XML node from XMLNode struct.
Definition: XMLPrinter.h:89
size_t printf(const char *fmt,...)
printf-style helper that formats into an internal buffer and writes to the configured Print output.
Definition: XMLPrinter.h:248
size_t printXMLHeader()
Prints the XML header.
Definition: XMLPrinter.h:79