diff options
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | httptnt/deviceDescription.ecpp | 2 | ||||
-rw-r--r-- | include/media/mediaManager.h | 3 | ||||
-rw-r--r-- | include/plugin.h | 15 | ||||
-rw-r--r-- | include/server.h | 2 | ||||
-rw-r--r-- | media/mediaManager.cpp | 51 | ||||
-rw-r--r-- | media/pluginManager.cpp | 15 | ||||
-rw-r--r-- | server/connectionManager.cpp | 1 | ||||
-rw-r--r-- | server/server.cpp | 2 | ||||
-rw-r--r-- | server/service.cpp | 3 |
10 files changed, 75 insertions, 20 deletions
@@ -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> |