18template <
class T,
class Alloc>
23class SubscriptionMgrControlPoint;
53 const char* path =
"") = 0;
62 std::function<
void(
const char* sid,
const char* varName,
63 const char* newValue,
void* reference)>
65 void* ref =
nullptr) = 0;
70 std::function<
void(
const char* nodeName,
const char* text,
71 const char* attributes)>
74 virtual bool begin(
const char* searchTarget =
"ssdp:all",
75 uint32_t minWaitMs = 3000, uint32_t maxWaitMs = 60000) = 0;
78 const char* searchTarget =
"ssdp:all",
79 uint32_t minWaitMs = 3000, uint32_t maxWaitMs = 60000) = 0;
81 virtual void end() = 0;
102 char* buffer,
int len) = 0;
Represents the result of invoking a DLNA service Action.
Definition: Action.h:48
Represents a request to invoke a remote DLNA service action.
Definition: Action.h:104
Device Attributes and generation of XML using urn:schemas-upnp-org:device-1-0. We could just return a...
Definition: DLNADeviceInfo.h:25
Attributes needed for the DLNA Service Definition.
Definition: DLNAServiceInfo.h:18
Abstract interface for DLNA Control Point functionality.
Definition: IControlPoint.h:43
virtual DLNADeviceInfo & getDevice(int idx)=0
Get device by index.
virtual void setActive(bool flag)=0
Set active state for processing.
virtual void onResultNode(std::function< void(const char *nodeName, const char *text, const char *attributes)> cb)=0
Set callback for processing XML result nodes.
virtual void setLocalURL(IPAddress url, int port=9001, const char *path="")=0
Set the local callback URL for event subscriptions.
virtual void setReference(void *ref)=0
Set user reference pointer for callbacks.
virtual void setAllowLocalhost(bool flag)=0
Allow localhost devices in discovery.
virtual bool addDevice(DLNADeviceInfo dev)=0
Manually add a device to the list.
virtual DLNADeviceInfo & getDevice(DLNAServiceInfo &service)=0
Get device containing the specified service.
virtual const char * getUrl(DLNADeviceInfo &device, const char *suffix, char *buffer, int len)=0
Build URL for device service endpoint.
virtual DLNADeviceInfo & getDevice(Url location)=0
Get device by location URL.
virtual Vector< DLNADeviceInfo > & getDevices()=0
Get list of all discovered devices.
virtual SubscriptionMgrControlPoint * getSubscriptionMgr()=0
Get subscription manager for event handling.
virtual void setEventSubscriptionCallback(std::function< void(const char *sid, const char *varName, const char *newValue, void *reference)> cb, void *ref=nullptr)=0
Set callback for event subscription notifications.
virtual void setLocalURL(Url url)=0
Set the local callback URL for event subscriptions.
virtual ActionReply & getLastReply()=0
Get last action reply.
virtual bool addDevice(Url url)=0
Add device by discovery URL.
virtual bool isActive()=0
Check if control point is active.
virtual ActionReply & executeActions(XMLCallback xmlProcessor=nullptr)=0
Execute queued actions and process responses.
virtual void setSearchRepeatMs(int repeatMs)=0
Set the repeat interval for M-SEARCH requests.
virtual ActionRequest & addAction(ActionRequest act)=0
Queue an action for execution.
virtual void setParseDevice(bool flag)=0
Enable/disable parsing of device descriptions during discovery.
virtual DLNAServiceInfo & getService(const char *id)=0
Get service by ID from discovered devices.
virtual void setDeviceIndex(int idx)=0
Set index of device to operate on.
virtual const char * registerString(const char *s)=0
Register string for memory management.
virtual void setHttpServer(IHttpServer &server)=0
Set HTTP server for handling event callbacks.
virtual DLNADeviceInfo & getDevice()=0
Get current device (by index)
virtual void setSubscribeNotificationsActive(bool flag)=0
Enable/disable event subscription notifications.
virtual bool begin(IHttpRequest &http, IUDPService &udp, const char *searchTarget="ssdp:all", uint32_t minWaitMs=3000, uint32_t maxWaitMs=60000)=0
Start discovery with provided HTTP/UDP services.
virtual bool loop()=0
Process discovery loop and handle events.
virtual void end()=0
Stop discovery and cleanup resources.
virtual ~IControlPoint()=default
virtual bool begin(const char *searchTarget="ssdp:all", uint32_t minWaitMs=3000, uint32_t maxWaitMs=60000)=0
Start discovery with default HTTP/UDP services.
Abstract interface for HTTP client request functionality.
Definition: IHttpRequest.h:21
Abstract interface for HTTP server functionality.
Definition: IHttpServer.h:30
Abstract Interface for UDP API.
Definition: IUDPService.h:33
Standalone manager for UPnP/DLNA event subscriptions used by control points and devices.
Definition: SubscriptionMgrControlPoint.h:44
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
Definition: Allocator.h:13
std::function< void(Client &client, ActionReply &reply)> XMLCallback
Definition: IControlPoint.h:25