summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--httptnt/deviceDescription.ecpp2
-rw-r--r--include/media/mediaManager.h3
-rw-r--r--include/plugin.h15
-rw-r--r--include/server.h2
-rw-r--r--media/mediaManager.cpp51
-rw-r--r--media/pluginManager.cpp15
-rw-r--r--server/connectionManager.cpp1
-rw-r--r--server/server.cpp2
-rw-r--r--server/service.cpp3
10 files changed, 75 insertions, 20 deletions
diff --git a/Makefile b/Makefile
index 12a5ba1..458be13 100644
--- a/Makefile
+++ b/Makefile
@@ -65,6 +65,7 @@ OBJS = $(PLUGIN).o \
server/contentDirectory.o \
common/config.o \
common/tools.o \
+ common/parser.o \
media/profile.o \
media/mediaManager.o \
media/pluginManager.o \
diff --git a/httptnt/deviceDescription.ecpp b/httptnt/deviceDescription.ecpp
index dfbe853..b879145 100644
--- a/httptnt/deviceDescription.ecpp
+++ b/httptnt/deviceDescription.ecpp
@@ -48,7 +48,7 @@ using namespace upnp;
<modelNumber><$ serverDescription.modelNumber $></modelNumber>
<modelURL><$ serverDescription.modelURL $></modelURL>
<serialNumber><$ serverDescription.serialNumber $></serialNumber>
- <UDN><$ deviceUUID $></UDN>
+ <UDN>uuid:<$ deviceUUID $></UDN>
<presentationURL><$ urlBase $><$ presentationUrl $></presentationURL>
<dlna:X_DLNADOC>DMS-1.50</dlna:X_DLNADOC>
<serviceList>
diff --git a/include/media/mediaManager.h b/include/media/mediaManager.h
index 7b3bf83..cccca71 100644
--- a/include/media/mediaManager.h
+++ b/include/media/mediaManager.h
@@ -72,10 +72,11 @@ private:
void Action();
bool CheckIntegrity();
- void OnContainerUpdate(string containerID, long updateID);
+ void OnContainerUpdate(string uri, long updateID);
uint32_t mSystemUpdateID;
IdList mEventedContainerUpdateIDs;
+ StringList mScanDirectories;
string mDatabaseFile;
tntdb::Connection mConnection;
diff --git a/include/plugin.h b/include/plugin.h
index 29803f5..74f5ae4 100644
--- a/include/plugin.h
+++ b/include/plugin.h
@@ -49,6 +49,21 @@ namespace upnp {
class cMetadata {
public:
+ static const char* KEY_OBJECTID;
+ static const char* KEY_PARENTID;
+ static const char* KEY_TITLE;
+ static const char* KEY_CREATOR;
+ static const char* KEY_CLASS;
+ static const char* KEY_RESTRICTED;
+ static const char* KEY_DESCRIPTION;
+ static const char* KEY_LONG_DESCRIPTION;
+ static const char* KEY_DATE;
+ static const char* KEY_LANGUAGE;
+ static const char* KEY_CHANNEL_NR;
+ static const char* KEY_CHANNEL_NAME;
+ static const char* KEY_SCHEDULED_START;
+ static const char* KEY_SCHEDULED_END;
+
/**
* Property class
*
diff --git a/include/server.h b/include/server.h
index 03a7524..cc04b40 100644
--- a/include/server.h
+++ b/include/server.h
@@ -12,12 +12,12 @@
#include <upnp/upnp.h>
#include "../include/webserver.h"
#include "../include/config.h"
+#include "../include/service.h"
using namespace std;
namespace upnp {
-class cUPnPService;
class cMediaManager;
class cMediaServer {
diff --git a/media/mediaManager.cpp b/media/mediaManager.cpp
index ed07da7..2b5fd87 100644
--- a/media/mediaManager.cpp
+++ b/media/mediaManager.cpp
@@ -8,6 +8,7 @@
#include "../include/plugin.h"
#include "../include/media/mediaManager.h"
#include "../include/server.h"
+#include "../include/parser.h"
#include <upnp/upnp.h>
#include <sstream>
#include <tntdb/statement.h>
@@ -37,10 +38,15 @@ IdList cMediaManager::GetContainerUpdateIDs(bool unevented){
return list;
}
-void cMediaManager::OnContainerUpdate(string containerID, long updateID){
+void cMediaManager::OnContainerUpdate(string uri, long updateID){
++mSystemUpdateID;
- mEventedContainerUpdateIDs[containerID] = updateID;
+ mEventedContainerUpdateIDs[tools::GenerateUUIDFromURL(uri)] = updateID;
+
+ mScanDirectories.push_back(uri);
+
+ // Start scanning for changed files.
+ Start();
}
StringList cMediaManager::GetSearchCapabilities() const {
@@ -94,6 +100,20 @@ int cMediaManager::Browse(BrowseRequest& request){
request.totalMatches = 0;
request.updateID = 0;
+ switch (request.browseMetadata){
+ case CD_BROWSE_METADATA:
+
+
+
+ case CD_BROWSE_DIRECT_CHILDREN:
+
+
+
+ default:
+ esyslog("UPnP\tInvalid arguments. Browse flag invalid");
+ return UPNP_SOAP_E_INVALID_ARGS;
+ }
+
return UPNP_E_SUCCESS;
}
@@ -130,19 +150,20 @@ bool cMediaManager::Initialise(){
tntdb::Statement objectTable = mConnection.prepare(
"CREATE TABLE metadata"
"("
- " objectID TEXT PRIMARY KEY,"
- " parentID TEXT NOT NULL,"
- " title TEXT NOT NULL,"
- " class TEXT NOT NULL,"
- " restricted INTEGER NOT NULL,"
- " description TEXT,"
- " ldescription TEXT,"
- " date TEXT,"
- " language TEXT,"
- " channelNr INTEGER,"
- " channelName TEXT,"
- " scheduledStart TEXT,"
- " scheduledEnd TEXT"
+ " objectID TEXT PRIMARY KEY,"
+ " parentID TEXT NOT NULL,"
+ " title TEXT NOT NULL,"
+ " class TEXT NOT NULL,"
+ " restricted INTEGER NOT NULL,"
+ " creator TEXT,"
+ " description TEXT,"
+ " longDescription TEXT,"
+ " date TEXT,"
+ " language TEXT,"
+ " channelNr INTEGER,"
+ " channelName TEXT,"
+ " scheduledStart TEXT,"
+ " scheduledEnd TEXT"
")");
objectTable.execute();
diff --git a/media/pluginManager.cpp b/media/pluginManager.cpp
index e677d6a..5d3c9ea 100644
--- a/media/pluginManager.cpp
+++ b/media/pluginManager.cpp
@@ -13,6 +13,21 @@ using namespace std;
namespace upnp {
+const char* cMetadata::KEY_OBJECTID = "object@id";
+const char* cMetadata::KEY_PARENTID = "object@parentID";
+const char* cMetadata::KEY_TITLE = "dc:title";
+const char* cMetadata::KEY_CREATOR = "dc:creator";
+const char* cMetadata::KEY_CLASS = "upnp:class";
+const char* cMetadata::KEY_RESTRICTED = "object@container";
+const char* cMetadata::KEY_DESCRIPTION = "dc:description";
+const char* cMetadata::KEY_LONG_DESCRIPTION = "upnp:longDescription";
+const char* cMetadata::KEY_DATE = "dc:date";
+const char* cMetadata::KEY_LANGUAGE = "dc:language";
+const char* cMetadata::KEY_CHANNEL_NR = "upnp:channelNr";
+const char* cMetadata::KEY_CHANNEL_NAME = "upnp:channelName";
+const char* cMetadata::KEY_SCHEDULED_START = "upnp:scheduledStartTime";
+const char* cMetadata::KEY_SCHEDULED_END = "upnp:scheduledEndTime";
+
bool cMetadata::SetObjectIDByUri(string uri){
return SetObjectID(tools::GenerateUUIDFromURL(uri));
}
diff --git a/server/connectionManager.cpp b/server/connectionManager.cpp
index cea68bc..64f68dc 100644
--- a/server/connectionManager.cpp
+++ b/server/connectionManager.cpp
@@ -5,6 +5,7 @@
* Author: savop
*/
+#include "../include/server.h"
#include "../include/connectionManager.h"
#include "../include/tools.h"
#include "../include/media/mediaManager.h"
diff --git a/server/server.cpp b/server/server.cpp
index 69c0a2c..9858029 100644
--- a/server/server.cpp
+++ b/server/server.cpp
@@ -26,7 +26,7 @@ cMediaServer::serviceMap cMediaServer::mServices;
cMediaServer::cMediaServer()
: mServerDescription("VDR UPnP/DLNA MS", "Denis Loh", "http://upnp.vdr-developer.org",
- DESCRIPTION, "VDR UPnP/DLNA MS", VERSION,
+ DESCRIPTION, "VDR UPnP-DLNA MS", VERSION,
"http://projects.vdr-developer.org/projects/plg-upnp/files", VERSION)
, mDeviceHandle(0)
, mAnnounceMaxAge(1800)
diff --git a/server/service.cpp b/server/service.cpp
index 7185170..14a0bb6 100644
--- a/server/service.cpp
+++ b/server/service.cpp
@@ -5,8 +5,9 @@
* Author: savop
*/
-#include "../include/server.h"
+
#include "../include/service.h"
+#include "../include/server.h"
#include "../include/tools.h"
#include <vdr/i18n.h>