39 #ifndef _PLT_DEVICE_DATA_H_
40 #define _PLT_DEVICE_DATA_H_
54 typedef NPT_Reference<PLT_DeviceData> PLT_DeviceDataReference;
55 typedef NPT_List<PLT_DeviceDataReference> PLT_DeviceDataReferenceList;
70 const char* urlpath =
"") :
78 NPT_String m_MimeType;
97 NPT_HttpUrl description_url = NPT_HttpUrl(NULL, 0,
"/description.xml"),
98 const char* uuid =
"",
99 NPT_TimeInterval lease_time = *PLT_Constants::GetInstance().GetDefaultDeviceLease(),
100 const char* device_type =
"",
101 const char* friendly_name =
"");
104 virtual NPT_Result GetDescription(NPT_String& desc);
105 virtual NPT_String GetDescriptionUrl(
const char* ip_address = NULL);
106 virtual NPT_HttpUrl GetURLBase();
107 virtual NPT_HttpUrl NormalizeURL(
const NPT_String& url);
108 virtual NPT_Result GetDescription(NPT_XmlElementNode* parent, NPT_XmlElementNode** device = NULL);
109 virtual NPT_String GetIconUrl(
const char* mimetype = NULL, NPT_Int32 maxsize = 0, NPT_Int32 maxdepth = 0);
111 bool IsRoot() {
return m_ParentUUID.IsEmpty(); }
112 const NPT_TimeInterval& GetLeaseTime()
const {
return m_LeaseTime; }
113 const NPT_String& GetUUID()
const {
return m_UUID; }
114 const NPT_String& GetFriendlyName()
const {
return m_FriendlyName; }
115 const NPT_String& GetType()
const {
return m_DeviceType; }
116 const NPT_String& GetModelDescription()
const {
return m_ModelDescription; }
117 const NPT_String& GetParentUUID()
const {
return m_ParentUUID; }
118 const NPT_IpAddress& GetLocalIP()
const {
return m_LocalIfaceIp; }
120 const NPT_Array<PLT_Service*>& GetServices()
const {
return m_Services; }
121 const NPT_Array<PLT_DeviceDataReference>& GetEmbeddedDevices()
const {
return m_EmbeddedDevices; }
123 NPT_Result FindEmbeddedDevice(
const char* uuid, PLT_DeviceDataReference& device);
124 NPT_Result FindEmbeddedDeviceByType(
const char* type, PLT_DeviceDataReference& device);
125 NPT_Result FindServiceById(
const char*
id,
PLT_Service*& service);
126 NPT_Result FindServiceByType(
const char* type,
PLT_Service*& service);
127 NPT_Result FindServiceByName(
const char* name,
PLT_Service*& service);
128 NPT_Result FindServiceBySCPDURL(
const char* url,
PLT_Service*& service,
bool recursive =
false);
129 NPT_Result FindServiceByControlURL(
const char* url,
PLT_Service*& service,
bool recursive =
false);
130 NPT_Result FindServiceByEventSubURL(
const char* url,
PLT_Service*& service,
bool recursive =
false);
133 NPT_Result AddEmbeddedDevice(PLT_DeviceDataReference& device);
134 NPT_Result RemoveEmbeddedDevice(PLT_DeviceDataReference& device);
139 void SetBootId(NPT_UInt32 bootId);
140 void SetNextBootId(NPT_UInt32 nextBootId);
141 NPT_UInt32 GenerateNextBootId();
143 operator const char* ();
148 virtual void Cleanup();
149 virtual NPT_Result OnAddExtraInfo(NPT_XmlElementNode* ) {
return NPT_SUCCESS; }
154 NPT_Result SetDescriptionUrl(NPT_HttpUrl& url);
155 NPT_Result SetLeaseTime(NPT_TimeInterval lease_time, NPT_TimeStamp lease_time_last_update = 0.);
156 NPT_Result SetURLBase(NPT_HttpUrl& url_base);
157 NPT_TimeStamp GetLeaseTimeLastUpdate();
158 void UpdateConfigId();
161 static NPT_Result SetDescription(PLT_DeviceDataReference& root_device,
162 NPT_TimeInterval leasetime,
163 NPT_HttpUrl description_url,
164 const char* description,
165 const NPT_HttpRequestContext& context);
166 static NPT_Result SetDescriptionDevice(PLT_DeviceDataReference& device,
167 NPT_XmlElementNode* device_node,
168 const NPT_HttpRequestContext& context);
171 NPT_String m_Manufacturer;
172 NPT_String m_ManufacturerURL;
173 NPT_String m_ModelDescription;
174 NPT_String m_ModelName;
175 NPT_String m_ModelNumber;
176 NPT_String m_ModelURL;
177 NPT_String m_SerialNumber;
179 NPT_String m_PresentationURL;
180 NPT_String m_DlnaDoc;
181 NPT_String m_DlnaCap;
182 NPT_String m_AggregationFlags;
185 friend class NPT_Reference<PLT_DeviceData>;
187 friend class PLT_DeviceReadyIterator;
191 NPT_String m_ParentUUID;
193 NPT_HttpUrl m_URLDescription;
194 NPT_HttpUrl m_URLBase;
195 NPT_String m_DeviceType;
196 NPT_String m_FriendlyName;
197 NPT_TimeInterval m_LeaseTime;
198 NPT_TimeStamp m_LeaseTimeLastUpdate;
199 NPT_Array<PLT_Service*> m_Services;
200 NPT_Array<PLT_DeviceDataReference> m_EmbeddedDevices;
201 NPT_Array<PLT_DeviceIcon> m_Icons;
205 NPT_IpAddress m_LocalIfaceIp;
206 NPT_String m_Representation;
210 NPT_UInt32 m_NextBootId;
211 NPT_UInt32 m_ConfigId;
228 bool operator()(
const PLT_DeviceDataReference& data)
const {
229 return data->GetUUID().Compare(m_UUID,
true) ?
false :
true;
251 bool operator()(
const PLT_DeviceDataReference& data)
const {
252 return data->GetType().Compare(m_Type,
true) ?
false :
true;
The PLT_DeviceDataFinder class returns a PLT_DeviceData instance given a device UUID.
Definition: PltDeviceData.h:221
The PLT_DeviceIcon class represents a given instance of a UPnP device icon.
Definition: PltDeviceData.h:63
UPnP Service.
Definition: PltService.h:67
The PLT_DeviceData class holds information about a device being advertised or found by a control poin...
Definition: PltDeviceData.h:93
UPnP Device Host.
Definition: PltDeviceHost.h:69
The PLT_DeviceDataFinderByType class returns a PLT_DeviceData instance given a device type...
Definition: PltDeviceData.h:244
The PLT_CtrlPoint class implements the base functionality of a UPnP ControlPoint. ...
Definition: PltCtrlPoint.h:89