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 const NPT_TimeInterval& GetLeaseTime()
const {
return m_LeaseTime; }
112 const NPT_String& GetUUID()
const {
return m_UUID; }
113 const NPT_String& GetFriendlyName()
const {
return m_FriendlyName; }
114 const NPT_String& GetType()
const {
return m_DeviceType; }
115 const NPT_String& GetModelDescription()
const {
return m_ModelDescription; }
116 const NPT_String& GetParentUUID()
const {
return m_ParentUUID; }
117 bool IsRoot() {
return m_ParentUUID.IsEmpty(); }
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);
138 operator const char* ();
142 virtual void Cleanup();
143 virtual NPT_Result OnAddExtraInfo(NPT_XmlElementNode* ) {
return NPT_SUCCESS; }
144 NPT_Result SetLeaseTime(NPT_TimeInterval lease_time, NPT_TimeStamp lease_time_last_update = 0.);
148 NPT_Result SetDescriptionUrl(NPT_HttpUrl& url);
150 NPT_Result SetURLBase(NPT_HttpUrl& url_base);
151 NPT_TimeStamp GetLeaseTimeLastUpdate();
154 static NPT_Result SetDescription(PLT_DeviceDataReference& root_device,
155 NPT_TimeInterval leasetime,
156 NPT_HttpUrl description_url,
157 const char* description,
158 const NPT_HttpRequestContext& context);
159 static NPT_Result SetDescriptionDevice(PLT_DeviceDataReference& device,
160 NPT_XmlElementNode* device_node,
161 const NPT_HttpRequestContext& context);
164 NPT_String m_Manufacturer;
165 NPT_String m_ManufacturerURL;
166 NPT_String m_ModelDescription;
167 NPT_String m_ModelName;
168 NPT_String m_ModelNumber;
169 NPT_String m_ModelURL;
170 NPT_String m_SerialNumber;
172 NPT_String m_PresentationURL;
173 NPT_String m_DlnaDoc;
174 NPT_String m_DlnaCap;
175 NPT_String m_AggregationFlags;
178 friend class NPT_Reference<PLT_DeviceData>;
180 friend class PLT_DeviceReadyIterator;
184 NPT_String m_ParentUUID;
186 NPT_HttpUrl m_URLDescription;
187 NPT_HttpUrl m_URLBase;
188 NPT_String m_DeviceType;
189 NPT_String m_FriendlyName;
190 NPT_TimeInterval m_LeaseTime;
191 NPT_TimeStamp m_LeaseTimeLastUpdate;
192 NPT_Array<PLT_Service*> m_Services;
193 NPT_Array<PLT_DeviceDataReference> m_EmbeddedDevices;
194 NPT_Array<PLT_DeviceIcon> m_Icons;
198 NPT_IpAddress m_LocalIfaceIp;
199 NPT_String m_Representation;
216 bool operator()(
const PLT_DeviceDataReference& data)
const {
217 return data->GetUUID().Compare(m_UUID,
true) ?
false :
true;
239 bool operator()(
const PLT_DeviceDataReference& data)
const {
240 return data->GetType().Compare(m_Type,
true) ?
false :
true;