Arduino DLNA Server
Loading...
Searching...
No Matches
IControlPoint.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdint.h>
4
5#include <functional>
6
7#include "Client.h"
8#include "basic/Url.h"
9#include "dlna/Action.h"
13
14namespace tiny_dlna {
15
16// Forward declaration of templated Vector with two parameters matches
17// implementation
18template <class T, class Alloc>
19class Vector;
20
21class DLNADeviceInfo;
22class DLNAServiceInfo;
23class SubscriptionMgrControlPoint;
24
25using XMLCallback = std::function<void(Client& client, ActionReply& reply)>;
26
27class DLNADeviceInfo;
28class DLNAServiceInfo;
30
44 public:
45 virtual ~IControlPoint() = default;
46
48 virtual void setParseDevice(bool flag) = 0;
50 virtual void setLocalURL(Url url) = 0;
52 virtual void setLocalURL(IPAddress url, int port = 9001,
53 const char* path = "") = 0;
55 virtual void setSearchRepeatMs(int repeatMs) = 0;
57 virtual void setReference(void* ref) = 0;
59 virtual void setDeviceIndex(int idx) = 0;
62 std::function<void(const char* sid, const char* varName,
63 const char* newValue, void* reference)>
64 cb,
65 void* ref = nullptr) = 0;
67 virtual void setHttpServer(IHttpServer& server) = 0;
69 virtual void onResultNode(
70 std::function<void(const char* nodeName, const char* text,
71 const char* attributes)>
72 cb) = 0;
74 virtual bool begin(const char* searchTarget = "ssdp:all",
75 uint32_t minWaitMs = 3000, uint32_t maxWaitMs = 60000) = 0;
77 virtual bool begin(IHttpRequest& http, IUDPService& udp,
78 const char* searchTarget = "ssdp:all",
79 uint32_t minWaitMs = 3000, uint32_t maxWaitMs = 60000) = 0;
81 virtual void end() = 0;
85 virtual ActionReply& executeActions(XMLCallback xmlProcessor = nullptr) = 0;
87 virtual bool loop() = 0;
89 virtual DLNAServiceInfo& getService(const char* id) = 0;
91 virtual DLNADeviceInfo& getDevice() = 0;
93 virtual DLNADeviceInfo& getDevice(int idx) = 0;
97 virtual DLNADeviceInfo& getDevice(Url location) = 0;
101 virtual const char* getUrl(DLNADeviceInfo& device, const char* suffix,
102 char* buffer, int len) = 0;
104 virtual bool addDevice(DLNADeviceInfo dev) = 0;
106 virtual bool addDevice(Url url) = 0;
108 virtual void setActive(bool flag) = 0;
110 virtual bool isActive() = 0;
112 virtual void setAllowLocalhost(bool flag) = 0;
114 virtual ActionReply& getLastReply() = 0;
118 virtual void setSubscribeNotificationsActive(bool flag) = 0;
120 virtual const char* registerString(const char* s) = 0;
121};
122
123} // namespace tiny_dlna
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