51 Str subscribe(
const char* serviceId,
const char* callbackUrl, uint32_t timeoutSec = 1800) {
54 snprintf(buffer,
sizeof(buffer),
"uuid:%lu", millis());
62 s.
expires_at = millis() + (uint64_t)timeoutSec * 1000ULL;
64 getList(serviceId).push_back(s);
69 auto &list =
getList(serviceId);
70 for (
size_t i = 0; i < list.size(); ++i) {
71 if (
StrView(list[i].sid).equals(sid)) {
80 void publishProperty(
const char* serviceId,
const char* varName,
const char* value) {
81 auto &list =
getList(serviceId);
82 for (
int i = 0; i < list.size(); ++i) {
89 body.
write((
const uint8_t*)
"<?xml version=\"1.0\"?>\r\n", 27);
90 body.
write((
const uint8_t*)
"<e:propertyset xmlns:e=\"urn:schemas-upnp-org:metadata-1-0/events\">\r\n", 68);
91 body.
write((
const uint8_t*)
" <e:property>\r\n", 17);
92 body.
write((
const uint8_t*)
" <", 6);
93 body.
write((
const uint8_t*)varName, strlen(varName));
94 body.
write((
const uint8_t*)
">", 1);
95 body.
write((
const uint8_t*)value, strlen(value));
96 body.
write((
const uint8_t*)
"</", 2);
97 body.
write((
const uint8_t*)varName, strlen(varName));
98 body.
write((
const uint8_t*)
">\r\n", 3);
99 body.
write((
const uint8_t*)
" </e:property>\r\n", 18);
100 body.
write((
const uint8_t*)
"</e:propertyset>\r\n", 21);
111 snprintf(seqBuf,
sizeof(seqBuf),
"%d", sub.
seq);
Simple API to process get, put, post, del http requests I tried to use Arduino HttpClient,...
Definition: HttpRequest.h:21
virtual HttpRequestHeader & request()
Definition: HttpRequest.h:118
virtual void setAgent(const char *agent)
Definition: HttpRequest.h:120
void setHost(const char *host)
Definition: HttpRequest.h:40
virtual int post(Url &url, const char *mime, const char *data, int len=-1)
Definition: HttpRequest.h:61
void log(DlnaLogLevel current_level, const char *fmt...)
Print log message.
Definition: Logger.h:40
Print to a dynamic string.
Definition: StrPrint.h:12
const char * c_str()
Definition: StrPrint.h:38
size_t length()
Definition: StrPrint.h:40
size_t write(uint8_t ch) override
Definition: StrPrint.h:15
void reset()
Definition: StrPrint.h:42
A simple wrapper to provide string functions on char*. If the underlying char* is a const we do not a...
Definition: StrView.h:19
String implementation which keeps the data on the heap. We grow the allocated memory only if the copy...
Definition: Str.h:22
const char * c_str()
provides the string value as const char*
Definition: Str.h:187
Manages event subscriptions and notification delivery.
Definition: SubscriptionMgr.h:45
bool unsubscribe(const char *serviceId, const char *sid)
Definition: SubscriptionMgr.h:68
void publishProperty(const char *serviceId, const char *varName, const char *value)
Definition: SubscriptionMgr.h:80
Vector< Subscription > & getList(const char *serviceId)
Definition: SubscriptionMgr.h:125
Vector< Str > service_names
Definition: SubscriptionMgr.h:122
SubscriptionMgr()
Definition: SubscriptionMgr.h:47
Str subscribe(const char *serviceId, const char *callbackUrl, uint32_t timeoutSec=1800)
Definition: SubscriptionMgr.h:51
Vector< Vector< Subscription > > service_lists
Definition: SubscriptionMgr.h:123
URL parser which breaks a full url string up into its individual parts.
Definition: Url.h:18
const char * host()
Definition: Url.h:45
const char * url()
Definition: Url.h:43
Vector implementation which provides the most important methods as defined by std::vector....
Definition: Vector.h:21
Definition: Allocator.h:6
LoggerClass DlnaLogger
Definition: Logger.cpp:5
Represents a single event subscription for a service.
Definition: SubscriptionMgr.h:22
uint32_t timeout_sec
Definition: SubscriptionMgr.h:25
Str sid
Definition: SubscriptionMgr.h:23
uint32_t seq
Definition: SubscriptionMgr.h:26
Str callback_url
Definition: SubscriptionMgr.h:24
uint64_t expires_at
Definition: SubscriptionMgr.h:27