diff options
author | Wolf Bergenheim <ext-wolf.2.bergenheim@nokia.com> | 2010-02-09 12:07:31 +0200 |
---|---|---|
committer | Wolf Bergenheim <ext-wolf.2.bergenheim@nokia.com> | 2010-02-09 12:14:46 +0200 |
commit | 381719b9a0adb8553a041633aed943f5ef48a1ff (patch) | |
tree | 6c5db8b6a7342dee77b1e1a010a6618fd824714f | |
parent | 6751c585385f017d08540bbe121606d642afb220 (diff) | |
download | libresourceqt-381719b9a0adb8553a041633aed943f5ef48a1ff.tar.gz |
Restructured libresourceqt includes, updated debianpackages to soversion=1.
Fixed ResourceEngine to work with the new Resource object.
27 files changed, 306 insertions, 193 deletions
diff --git a/common.pri b/common.pri new file mode 100644 index 0000000..b9a164a --- /dev/null +++ b/common.pri @@ -0,0 +1,8 @@ +LIBDBUSQEVENTLOOP = $${PWD}/libdbus-qeventloop +LIBRESOURCEQT = $${PWD}/libresourceqt + +LIBRESOURCEINC = $${LIBRESOURCEQT}/include/qt4 +POLICY = $${LIBRESOURCEINC}/policy + +VERSION = 1.0.0 + diff --git a/debian/changelog b/debian/changelog index 5fc5a2e..6d623f5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -libresourceqt (0.1) unstable; urgency=low +libresourceqt (1.0) unstable; urgency=low * First release diff --git a/debian/control b/debian/control index dd27f2d..101f7bc 100644 --- a/debian/control +++ b/debian/control @@ -1,43 +1,44 @@ Source: libresourceqt Priority: extra Maintainer: Martin Wolf <ext-martin.2.wolf@nokia.com> -Build-Depends: debhelper (>= 5), libqt4-dev (>= 4.5), libdbus-1-dev +Build-Depends: debhelper (>= 5), libqt4-dev (>= 4.5), libdbus-1-dev, libresource0-dev Standards-Version: 3.8.0 Section: libs -Package: libresourceqt-dev -Section: libdevel +Package: libdbus-qeventloop1 +Section: libs Architecture: any -Depends: libresourceqt0 (= ${binary:Version}) -Description: Development package for libresourceqt - Includes development files for libresourceqt. +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: libdbus-qeventloop library + Contains library files for the application that use libdbus-qeventloop -Package: libresourceqt0 +Package: libresourceqt1 Section: libs Architecture: any -Depends: libdbus-qeventloop0, ${shlibs:Depends}, ${misc:Depends} +Depends: libdbus-qeventloop1, ${shlibs:Depends}, ${misc:Depends} Description: libresourceqt library Contains library files for the application that use libresourceqt +Package: libresourceqt-dev +Section: libdevel +Architecture: any +Depends: libresourceqt1 (= ${binary:Version}), libresource0-dev, libdbus-1-dev, libdbus-qeventloop-dev +Description: Development package for libresourceqt + Includes development files for libresourceqt. + Package: libdbus-qeventloop-dev Section: libdevel Architecture: any -Depends: libdbus-qeventloop0 (= ${binary:Version}) +Depends: libdbus-qeventloop1 (= ${binary:Version}), libdbus-1-dev Description: Development package for libdbus-qeventloop Includes development files for libdbus-qeventloop. -Package: libdbus-qeventloop0 -Section: libs -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: libdbus-qeventloop library - Contains library files for the application that use libdbus-qeventloop - Package: libresourceqt-tests Section: misc -Depends: testrunner, libresourceqt0, libdbus-qeventloop0, ${shlibs:Depends} -XB-Maemo-CI-Packages: libresourceqt0, libdbus-qeventloop0 +Depends: testrunner, libdbus-qeventloop1, libresourceqt1, ${shlibs:Depends} +XB-Maemo-CI-Packages: libdbus-qeventloop1, libresourceqt1 XB-Maemo-CI-Stage: fast, staging, acceptance Architecture: any -Description: libresourceqt0 and libdbus-qeventloop test package +Description: libresourceqt1 and libdbus-qeventloop test package This package contains tests which can be used in CI environment + diff --git a/debian/libdbus-qeventloop0.install b/debian/libdbus-qeventloop1.install index f960cda..f960cda 100644 --- a/debian/libdbus-qeventloop0.install +++ b/debian/libdbus-qeventloop1.install diff --git a/debian/libresourceqt-dev.install b/debian/libresourceqt-dev.install index 1e9ea18..2476bd7 100644 --- a/debian/libresourceqt-dev.install +++ b/debian/libresourceqt-dev.install @@ -1 +1 @@ -usr/include/resource/qt4/resource*
\ No newline at end of file +usr/include/resource/qt4/policy diff --git a/debian/libresourceqt0.install b/debian/libresourceqt1.install index c09c3e8..c09c3e8 100644 --- a/debian/libresourceqt0.install +++ b/debian/libresourceqt1.install diff --git a/libdbus-qeventloop/libdbus-qeventloop.pro b/libdbus-qeventloop/libdbus-qeventloop.pro index 7aa22b1..5f74b8c 100644 --- a/libdbus-qeventloop/libdbus-qeventloop.pro +++ b/libdbus-qeventloop/libdbus-qeventloop.pro @@ -1,13 +1,7 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2010-01-18T16:28:34 -# -#------------------------------------------------- - +include(../common.pri) TARGET = dbus-qeventloop TEMPLATE = lib -VERSION = 0.1 DESTDIR = build MOC_DIR = .moc OBJECTS_DIR = .obj diff --git a/project.pro b/libresourceqt.pro index 7801d61..7801d61 100644 --- a/project.pro +++ b/libresourceqt.pro diff --git a/libresourceqt/include/resource-set.h b/libresourceqt/include/qt4/policy/resource-set.h index 1f515ee..632ed71 100644 --- a/libresourceqt/include/resource-set.h +++ b/libresourceqt/include/qt4/policy/resource-set.h @@ -1,7 +1,7 @@ #ifndef RESOURCE_SET_H #define RESOURCE_SET_H -#include "resources.h" +#include <policy/resources.h> #include <QString> #include <QObject> #include <QVector> @@ -18,12 +18,12 @@ * * \section library_use_section Library Usage * - * To use the Resource Policy Library, you first need to create a set of + * To use the Resource Policy Library, you first need to create a number of * \ref Resource objects like this (given as an example of what a media player * might want/need): * \code * ResourcePolicy::AudioResource *audioResource = new ResourcePolicy::AudioResource(); - * ResourcePolicy::VideoResource *audioResource = new ResourcePolicy::AudioResource(); + * ResourcePolicy::VideoResource *audioResource = new ResourcePolicy::VideoResource(); * videoResource->setOptional(); * \endcode * Then you need to create a \ref ResourcePolicy::ResourceSet like this: @@ -106,7 +106,7 @@ namespace ResourcePolicy * This method returns a list of all resource in the set. * \return a QList of all resources in the set. */ - QList<Resource *> resources(); + QList<Resource *> resources() const; /** * This method returns a const pointer to a resource of a specific type. * \type The type of resource we are interested in. @@ -128,6 +128,7 @@ namespace ResourcePolicy bool contains(const QList<ResourceType> &types) const; quint32 id() const; + QString applicationClass(); /** * Connects to the Resource Policy Manager. The connected() signal is sent @@ -168,12 +169,12 @@ namespace ResourcePolicy * the given resources have become available. * \param availableResources A list of available resources. */ - void resourcesBecameAvailable(QList<Resource *> availableResources); + void resourcesBecameAvailable(QList<ResourceType> availableResources); /** * This signal is emited as a response to the acquire() request. - * \param grantedResources The list of granted optional resources. + * \param grantedOptionalResources The list of granted optional resources. */ - void resourcesGranted(QList<Resource *> grantedOptionalResources); + void resourcesGranted(QList<ResourceType> grantedOptionalResources); /** * This signal is emited as a response to the acquire() request, in the * case where we are not granted any requests. @@ -197,7 +198,7 @@ namespace ResourcePolicy private: quint32 identifier; - const QString applicationClass; + const QString resourceClass; Resource* resourceSet[NumberOfTypes]; }; } diff --git a/libresourceqt/include/resource.h b/libresourceqt/include/qt4/policy/resource.h index 13265d5..13265d5 100644 --- a/libresourceqt/include/resource.h +++ b/libresourceqt/include/qt4/policy/resource.h diff --git a/libresourceqt/include/resources.h b/libresourceqt/include/qt4/policy/resources.h index 8e3da70..47002d7 100644 --- a/libresourceqt/include/resources.h +++ b/libresourceqt/include/qt4/policy/resources.h @@ -1,7 +1,7 @@ #ifndef RESOURCES_H #define RESOURCES_H -#include "resource.h" +#include <policy/resource.h> #include <QObject> #include <QString> diff --git a/libresourceqt/libresourceqt.pro b/libresourceqt/libresourceqt.pro index b9e5cd5..a80eac8 100644 --- a/libresourceqt/libresourceqt.pro +++ b/libresourceqt/libresourceqt.pro @@ -1,17 +1,18 @@ +include(../common.pri) TEMPLATE = lib -VERSION = 1.0.0 TARGET = resourceqt DESTDIR = build -DEPENDPATH += include src -INCLUDEPATH += src include ../libresource/src +DEPENDPATH += $${POLICY} src +INCLUDEPATH += $${LIBRESOURCEINC} src # Input -PUBLIC_HEADERS = include/resource.h include/resource-set.h include/resources.h +PUBLIC_HEADERS = $${POLICY}/resource.h $${POLICY}/resource-set.h $${POLICY}/resources.h -HEADERS += $$PUBLIC_HEADERS +HEADERS += $${PUBLIC_HEADERS} src/resource-engine.h SOURCES += src/resource.cpp \ src/resource-set.cpp \ + src/resource-engine.cpp \ src/resources.cpp OBJECTS_DIR = build @@ -19,12 +20,13 @@ MOC_DIR = build CONFIG += qt link_pkgconfig dll QT = core -PKGCONFIG += dbus-1 +PKGCONFIG += dbus-1 libresource0 # Install directives -headers.files = $$PUBLIC_HEADERS +headers.files = $${PUBLIC_HEADERS} INSTALLBASE = /usr -target.path = $$INSTALLBASE/lib -headers.path = $$INSTALLBASE/include/resource/qt4 +target.path = $${INSTALLBASE}/lib +headers.path = $${INSTALLBASE}/include/resource/qt4/policy INSTALLS = target headers + diff --git a/libresourceqt/src/resource-engine.cpp b/libresourceqt/src/resource-engine.cpp index cd34c08..a25c789 100644 --- a/libresourceqt/src/resource-engine.cpp +++ b/libresourceqt/src/resource-engine.cpp @@ -1,18 +1,24 @@ #include "resource-engine.h" #include <dbus/dbus.h> -#include <Resource> using namespace ResourcePolicy; -static void connectionIsUp(resconn_t *connection); static inline quint32 allResourcesToBitmask(const ResourceSet *resourceSet); static inline quint32 optionalResourcesToBitmask(const ResourceSet *resourceSet); static inline quint32 sharedResourcesToBitmask(const ResourceSet *resourceSet); +static inline quint32 resourceTypeToLibresourceType(ResourceType type); + +static void connectionIsUp(resconn_t *connection); +static void statusCallbackHandler(resset_t *rset, resmsg_t *msg); +static void handleUnregisterMessage(resmsg_t *, resset_t *, void *data); +static void handleGrantMessage(resmsg_t *msg, resset_t *rs, void *data); +static void handleAdviceMessage(resmsg_t *msg, resset_t *rs, void *data); ResourceEngine::ResourceEngine(ResourceSet *resourceSet) - : QObject(resourceSet), resourceSet(resourceSet), requestId(0) + : QObject(resourceSet), connected(false), resourceSet(resourceSet), + libresourceConnection(NULL), libresourceSet(NULL), requestId(0), + messageMap() { - identifier = (quint32)this; } ResourceEngine::~ResourceEngine() @@ -27,104 +33,159 @@ bool ResourceEngine::initialize() dbus_error_init(&dbusError); dbusConnection = dbus_bus_get(DBUS_BUS_SYSTEM, &dbusError); if(dbus_error_is_set(&dbusError)) { - qDebug("Error while connection to the system bus: %s", dbusError.message); - dbus_error_free(&dbusError); - return false; + qDebug("Error getting the system bus: %s", dbusError.message); + dbus_error_free(&dbusError); + return false; } dbus_error_free(&dbusError); libresourceConnection = resproto_init(RESPROTO_ROLE_CLIENT, RESPROTO_TRANSPORT_DBUS, connectionIsUp, dbusConnection); if(libresourceConnection == NULL) { - return NULL; + return NULL; } -/* resproto_set_handler(libresourceConnection, RESMSG_UNREGISTER, handleUnregisterMessage); + resproto_set_handler(libresourceConnection, RESMSG_UNREGISTER, handleUnregisterMessage); resproto_set_handler(libresourceConnection, RESMSG_GRANT, handleGrantMessage); - resproto_set_handler(libresourceConnection, RESMSG_ADVICE, handleAdviceMessage);*/ + resproto_set_handler(libresourceConnection, RESMSG_ADVICE, handleAdviceMessage); + return true; } +static void handleUnregisterMessage(resmsg_t *, resset_t *, void *data) +{ + ResourceEngine *engine = reinterpret_cast<ResourceEngine *>(data); + + engine->disconnected(); +} + +void ResourceEngine::disconnected() +{ + qDebug("disconnected"); + + connected = false; +} + +static void handleGrantMessage(resmsg_t *msg, resset_t *, void *data) +{ + ResourceEngine *engine = reinterpret_cast<ResourceEngine *>(data); + + engine->receivedGrant(&(msg->notify)); +} + +void ResourceEngine::receivedGrant(resmsg_notify_t *notifyMessage) +{ + char buf[80]; + resmsg_res_str(notifyMessage->resrc, buf, sizeof(buf)); + qDebug("%s: %s", __FUNCTION__, buf); +} + +static void handleAdviceMessage(resmsg_t *msg, resset_t *, void *data) +{ + ResourceEngine *engine = reinterpret_cast<ResourceEngine *>(data); + + engine->receivedAdvice(&(msg->notify)); +} + +void ResourceEngine::receivedAdvice(resmsg_notify_t *notifyMessage) +{ + char buf[80]; + resmsg_res_str(notifyMessage->resrc, buf, sizeof(buf)); + qDebug("%s: %s", __FUNCTION__, buf); +} + bool ResourceEngine::connect() { resmsg_t resourceMessage; resourceMessage.record.type = RESMSG_REGISTER; - resourceMessage.record.id = identifier; - resourceMessage.record.reqno = ++reqestId; + resourceMessage.record.id = resourceSet->id(); + resourceMessage.record.reqno = ++requestId; - requestMap.insert(requestId, RESMSG_REGISTER); + messageMap.insert(requestId, RESMSG_REGISTER); uint32_t allResources, optionalResources, sharedResources; allResources = allResourcesToBitmask(resourceSet); - allResources = optionalResourcesToBitmask(resourceSet); - allResources = sharedResourcesToBitmask(resourceSet); + optionalResources = optionalResourcesToBitmask(resourceSet); + sharedResources = sharedResourcesToBitmask(resourceSet); resourceMessage.record.rset.all = allResources; resourceMessage.record.rset.opt = optionalResources; resourceMessage.record.rset.share = sharedResources; resourceMessage.record.rset.mask = 0; //find out what it is - resourceMessage.record.klass = resourceSet->applicationClass(); + QByteArray ba = resourceSet->applicationClass().toLatin1(); + resourceMessage.record.klass = ba.data(); + resourceMessage.record.mode = 0; //No auto release - libresourceSet = resconn_connect(libresourceConnection, &resourceMessage, handleConnect); + libresourceSet = resconn_connect(libresourceConnection, &resourceMessage, + statusCallbackHandler); libresourceSet->userdata = this; //save our context - index = REQHASH_INDEX(reqno); - reqtyp[index] = RESMSG_REGISTER; return true; } static inline quint32 allResourcesToBitmask(const ResourceSet *resourceSet) { - QList<Resource> resourceList = resourceSet->resources(); + QList<Resource *> resourceList = resourceSet->resources(); quint32 bitmask=0; for(int i=0; i < resourceList.size(); i++) { - switch(resourceList[i].type()) { - case AudioPlaybackResource: + bitmask += resourceTypeToLibresourceType(resourceList[i]->type()); + } + return bitmask; +} + +static inline quint32 resourceTypeToLibresourceType(ResourceType type) +{ + quint32 bitmask=0; + switch(type) { + case AudioPlaybackType: bitmask += RESMSG_AUDIO_PLAYBACK; break; - case VideoPlaybackResource: + case VideoPlaybackType: bitmask += RESMSG_VIDEO_PLAYBACK; break; - case AudioRecorderResource: + case AudioRecorderType: bitmask += RESMSG_AUDIO_RECORDING; break; - case VideoRecorderResource: + case VideoRecorderType: bitmask += RESMSG_VIDEO_RECORDING; break; - case VibraResource: + case VibraType: bitmask += RESMSG_VIBRA; break; - case + case LedsType: + bitmask += RESMSG_LEDS; + break; + case BacklightType: + bitmask += RESMSG_BACKLIGHT; + break; + case SystemButtonType: + bitmask += RESMSG_SYSTEM_BUTTON; + case LockButtonType: + bitmask += RESMSG_LOCK_BUTTON; + break; + case ScaleButtonType: + bitmask += RESMSG_SCALE_BUTTON; + break; + case SnapButtonType: + bitmask += RESMSG_SNAP_BUTTON; + break; + case LensCoverType: + bitmask += RESMSG_LENS_COVER; + break; default: break; - } } return bitmask; } static inline quint32 optionalResourcesToBitmask(const ResourceSet *resourceSet) { - QList<Resource> resourceList = resourceSet->resources(); + QList<Resource *> resourceList = resourceSet->resources(); quint32 bitmask=0; for(int i=0; i < resourceList.size(); i++) { - if(resourceList[i].isOptional()) { - switch(resourceList[i].type()) { - case AudioPlaybackResource: - bitmask += RESMSG_AUDIO_PLAYBACK; - break; - case VideoPlaybackResource: - bitmask += RESMSG_VIDEO_PLAYBACK; - break; - case AudioRecorderResource: - bitmask += RESMSG_AUDIO_RECORDING; - break; - case VideoRecorderResource: - bitmask += RESMSG_VIDEO_RECORDING; - break; - default: - break; - } + if(resourceList[i]->isOptional()) { + bitmask += resourceTypeToLibresourceType(resourceList[i]->type()); } } return bitmask; @@ -132,31 +193,21 @@ static inline quint32 optionalResourcesToBitmask(const ResourceSet *resourceSet) static inline quint32 sharedResourcesToBitmask(const ResourceSet *resourceSet) { - QList<Resource> resourceList = resourceSet->resources(); + QList<Resource *> resourceList = resourceSet->resources(); quint32 bitmask=0; for(int i=0; i < resourceList.size(); i++) { - if(resourceList[i].isShared()) { - switch(resourceList[i].type()) { - case AudioPlaybackResource: - bitmask += RESMSG_AUDIO_PLAYBACK; - break; - case VideoPlaybackResource: - bitmask += RESMSG_VIDEO_PLAYBACK; - break; - case AudioRecorderResource: - bitmask += RESMSG_AUDIO_RECORDING; - break; - case VideoRecorderResource: - bitmask += RESMSG_VIDEO_RECORDING; - break; - default: - break; - } + if(resourceList[i]->isShared()) { + bitmask += resourceTypeToLibresourceType(resourceList[i]->type()); } } return bitmask; } +static void statusCallbackHandler(resset_t *rset, resmsg_t *msg) +{ + qDebug("Received a status notification"); +} + bool ResourceEngine::isConnected() { return false; @@ -195,3 +246,4 @@ void ResourceEngine::handleConnectionIsUp() { emit connectedToManager(); } + diff --git a/libresourceqt/src/resource-engine.h b/libresourceqt/src/resource-engine.h index 9dd5fe5..863a23b 100644 --- a/libresourceqt/src/resource-engine.h +++ b/libresourceqt/src/resource-engine.h @@ -5,18 +5,16 @@ #include <QMap> #include <dbus/dbus.h> #include <res-conn.h> -#include "resource-set.h" +#include <policy/resource-set.h> namespace ResourcePolicy { -class ResourceEngineData; - class ResourceEngine: public QObject { Q_OBJECT Q_DISABLE_COPY( ResourceEngine ) public: - ResourceEngine(ResourceSet *resourceSet=NULL); + ResourceEngine(ResourceSet *resourceSet); ~ResourceEngine(); bool initialize(); @@ -33,9 +31,13 @@ public: void handleConnectionIsUp(); + void disconnected(); + void receivedGrant(resmsg_notify_t *notifyMessage); + void receivedAdvice(resmsg_notify_t *notifyMessage); + signals: - void resourcesBecameAvailable(QList<Resource> availableResources); - void resourcesAcquired(QList<Resource> grantedResources); + void resourcesBecameAvailable(QList<Resource *> availableResources); + void resourcesAcquired(QList<Resource *> grantedResources); void resourcesDenied(); void lostResources(); void connectedToManager(); diff --git a/libresourceqt/src/resource-factory.cpp b/libresourceqt/src/resource-factory.cpp deleted file mode 100644 index f500792..0000000 --- a/libresourceqt/src/resource-factory.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "resource-factory.h" -#include "libplayback-wrapper.h" - -using namespace ResourceTypes; - -ResourceFactory::ResourceFactory(QObject *parent) - : QObject(parent), sessionBusConnection(QDBusConnection::sessionBus()) -{ -} - -ResourceFactory::~ResourceFactory() -{ -} - -Resource * ResourceFactory::createResource(enum ResourceClass applicationClass, - quint16 requestedResources) -{ - qDebug("We %s connected to DBus",sessionBusConnection.isConnected()?"are":"are not"); - Resource *resource = new Resource(applicationClass, requestedResources, this); - ResourceLibrary *libPlayback = new LibPlaybackWrapper(resource); - - bool resourceProperlyInitialized = resource->initialize(libPlayback); - if(resourceProperlyInitialized) { - return resource; - } - else { - qDebug("Failed to initialize Resource. Returning NULL!"); - delete resource; - return NULL; - } -} diff --git a/libresourceqt/src/resource-set.cpp b/libresourceqt/src/resource-set.cpp index c7862ef..6ff8d9a 100644 --- a/libresourceqt/src/resource-set.cpp +++ b/libresourceqt/src/resource-set.cpp @@ -1,9 +1,9 @@ -#include "resource-set.h" +#include <policy/resource-set.h> using namespace ResourcePolicy; ResourceSet::ResourceSet(const QString &applicationClass, QObject * parent) - : QObject(parent), applicationClass(applicationClass) + : QObject(parent), resourceClass(applicationClass) { identifier = (quint32)this; memset(resourceSet, 0, sizeof(QPointer<Resource>)*NumberOfTypes); @@ -60,7 +60,7 @@ quint32 ResourceSet::id() const return identifier; } -QList<Resource *> ResourceSet::resources() +QList<Resource *> ResourceSet::resources() const { QList<Resource *> listOfResources; for(int i=0; i < NumberOfTypes; i++) { @@ -109,3 +109,7 @@ bool ResourceSet::update() return false; } +QString ResourceSet::applicationClass() +{ + return this->resourceClass; +} diff --git a/libresourceqt/src/resource.cpp b/libresourceqt/src/resource.cpp index 8207b66..fe1153e 100644 --- a/libresourceqt/src/resource.cpp +++ b/libresourceqt/src/resource.cpp @@ -1,4 +1,4 @@ -#include "resource.h" +#include <policy/resource.h> using namespace ResourcePolicy; diff --git a/libresourceqt/src/resources.cpp b/libresourceqt/src/resources.cpp index 9858bd3..c763ebc 100644 --- a/libresourceqt/src/resources.cpp +++ b/libresourceqt/src/resources.cpp @@ -1,4 +1,4 @@ -#include "resources.h" +#include <policy/resources.h> using namespace ResourcePolicy; diff --git a/tests/test-resource-engine/test-resource-engine.cpp b/tests/test-resource-engine/test-resource-engine.cpp index 5c95224..ee2656f 100644 --- a/tests/test-resource-engine/test-resource-engine.cpp +++ b/tests/test-resource-engine/test-resource-engine.cpp @@ -2,13 +2,30 @@ #include <dbus/dbus.h> using namespace ResourcePolicy; +quint32 theID = 0; + +static void verify_resproto_init(resproto_role_t role, + resproto_transport_t transport, + resconn_linkup_t callbackFunction, + DBusConnection *dbusConnection); + +static void verify_resconn_connect(resconn_t *connection, resmsg_t *message, + resproto_status_t callbackFunction); TestResourceEngine::TestResourceEngine() - : resourceEngine(NULL), resourceSet(NULL), - audioPlayback(AudioPlaybackResource), videoPlayback(VideoPlaybackResource), - audioRecorder(AudioRecorderResource), videoRecorder(VideoRecorderResource) + : resourceEngine(NULL), resourceSet(NULL) { + audioPlayback = new AudioResource; + videoPlayback = new VideoResource; + audioRecorder = new AudioRecorderResource; + videoRecorder = new VideoRecorderResource; + + videoPlayback->setOptional(); + audioRecorder->setOptional(); + videoRecorder->setOptional(); + resourceSet = new ResourceSet("player", this); + theID = resourceSet->id(); resourceSet->addResource(audioPlayback); resourceSet->addResource(videoPlayback); resourceSet->addResource(audioRecorder); @@ -17,6 +34,10 @@ TestResourceEngine::TestResourceEngine() TestResourceEngine::~TestResourceEngine() { + delete audioPlayback; + delete videoPlayback; + delete audioRecorder; + delete videoRecorder; } void TestResourceEngine::init() @@ -36,27 +57,78 @@ void TestResourceEngine::testConnect() QTEST_MAIN(TestResourceEngine) //////////////////////////////////////////////////////////////// +resconn_t *resourceConnection; +resset_t *resSet; resconn_t* resproto_init(resproto_role_t role, resproto_transport_t transport, ...) { - resconn_t *resourceConnection; resconn_linkup_t callbackFunction; - DBusConnection *dbusConnection, systemBus; + DBusConnection *dbusConnection; va_list args; - va_start(); + va_start(args, transport); callbackFunction = va_arg(args, resconn_linkup_t); dbusConnection = va_arg(args, DBusConnection *); - va_end(); + va_end(args); + + verify_resproto_init(role, transport, callbackFunction, dbusConnection); + + resourceConnection =(resconn_t *) calloc(1, sizeof(resconn_t)); - systemBus = dbus_bus_get(DBUS_BUS_SYSTEM); + return resourceConnection; +} + +static void verify_resproto_init(resproto_role_t role, + resproto_transport_t transport, + resconn_linkup_t callbackFunction, + DBusConnection *dbusConnection) +{ + DBusConnection *systemBus; + systemBus = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); QVERIFY(callbackFunction != NULL); QVERIFY(dbusConnection == systemBus); QVERIFY(role == RESPROTO_ROLE_CLIENT); QVERIFY(transport == RESPROTO_TRANSPORT_DBUS); +} - resourceConnection =(resconn_t *) calloc(1, sizeof(resconn_t)); +resset_t *resconn_connect(resconn_t *connection, resmsg_t *message, + resproto_status_t callbackFunction) +{ + verify_resconn_connect(connection, message, callbackFunction); - return resourceConnection; + resSet = (resset_t *) calloc(1, sizeof(resset_t)); + + return resSet; +} + +static void verify_resconn_connect(resconn_t *connection, resmsg_t *message, + resproto_status_t callbackFunction) +{ + QVERIFY(connection == resourceConnection); + QVERIFY(message->record.type == RESMSG_REGISTER); + QVERIFY(message->record.id == theID); + QVERIFY(message->record.reqno == 1); + QVERIFY(message->record.rset.all == (RESMSG_AUDIO_PLAYBACK|RESMSG_AUDIO_RECORDING + |RESMSG_VIDEO_PLAYBACK|RESMSG_VIDEO_RECORDING)); + QVERIFY(message->record.rset.opt == (RESMSG_AUDIO_RECORDING|RESMSG_VIDEO_PLAYBACK + |RESMSG_VIDEO_RECORDING)); + QVERIFY(message->record.rset.share == 0); + QVERIFY(message->record.rset.mask == 0); + QCOMPARE(message->record.klass, "player"); + QVERIFY(message->record.mode == 0); + QVERIFY(callbackFunction != NULL); +} + +char *resmsg_res_str(uint32_t res, char *buf, int len) +{ + snprintf(buf, len, "0x%04x", res); + + return buf; } + +int resproto_set_handler(union resconn_u *, resmsg_type_t, resproto_handler_t) +{ + return 1; +} + diff --git a/tests/test-resource-engine/test-resource-engine.h b/tests/test-resource-engine/test-resource-engine.h index 5484a05..5e7a79b 100644 --- a/tests/test-resource-engine/test-resource-engine.h +++ b/tests/test-resource-engine/test-resource-engine.h @@ -9,16 +9,16 @@ using namespace ResourcePolicy; class TestResourceEngine: public QObject { Q_OBJECT - friend resconn_t* resproto_init(resproto_role_t, resproto_transport_t, ...); private: ResourceEngine *resourceEngine; - ResourceSet *resourceSet; - Resource audioPlayback; - Resource videoPlayback; - Resource audioRecorder; - Resource videoRecorder; + AudioResource *audioPlayback; + VideoResource *videoPlayback; + AudioRecorderResource *audioRecorder; + VideoRecorderResource *videoRecorder; bool libresourceInitialized; public: + ResourceSet *resourceSet; + TestResourceEngine(); ~TestResourceEngine(); public slots: diff --git a/tests/test-resource-engine/test-resource-engine.pro b/tests/test-resource-engine/test-resource-engine.pro index 25e2dd9..2c0d4a7 100644 --- a/tests/test-resource-engine/test-resource-engine.pro +++ b/tests/test-resource-engine/test-resource-engine.pro @@ -1,19 +1,21 @@ -BASE = ../../libresourceqt +include(../../common.pri) TEMPLATE = app TARGET = test-resource-engine DESTDIR = build -DEPENDPATH += $${BASE}/include $${BASE}/src . -INCLUDEPATH += $${BASE}/src $${BASE}/include $${BASE}/../libresource/src +DEPENDPATH += $${POLICY} $${LIBRESOURCEQT}/src . +INCLUDEPATH += $${LIBRESOURCEQT}/src $${LIBRESOURCEINC} /usr/include/resource # Input -HEADERS += $${BASE}/include/resource.h \ - $${BASE}/include/resource-set.h \ - $${BASE}/src/resource-engine.h \ +HEADERS += $${POLICY}/resource.h \ + $${POLICY}/resources.h \ + $${POLICY}/resource-set.h \ + $${LIBRESOURCEQT}/src/resource-engine.h \ test-resource-engine.h -SOURCES += $${BASE}/src/resource.cpp \ - $${BASE}/src/resource-set.cpp \ - $${BASE}/src/resource-engine.cpp \ +SOURCES += $${LIBRESOURCEQT}/src/resource.cpp \ + $${LIBRESOURCEQT}/src/resources.cpp \ + $${LIBRESOURCEQT}/src/resource-set.cpp \ + $${LIBRESOURCEQT}/src/resource-engine.cpp \ test-resource-engine.cpp OBJECTS_DIR = build @@ -27,3 +29,4 @@ PKGCONFIG += dbus-1 INSTALLBASE = /usr target.path = $${INSTALLBASE}/lib/libresourceqt-tests/ INSTALLS = target + diff --git a/tests/test-resource-set/test-resource-set.h b/tests/test-resource-set/test-resource-set.h index 0a3eeef..5c6498b 100644 --- a/tests/test-resource-set/test-resource-set.h +++ b/tests/test-resource-set/test-resource-set.h @@ -2,7 +2,7 @@ #define TEST_RESOURCE_SET_H #include <QtTest/QTest> -#include "resource-set.h" +#include <policy/resource-set.h> using namespace ResourcePolicy; diff --git a/tests/test-resource-set/test-resource-set.pro b/tests/test-resource-set/test-resource-set.pro index 5a9f7f6..aa3ebca 100644 --- a/tests/test-resource-set/test-resource-set.pro +++ b/tests/test-resource-set/test-resource-set.pro @@ -1,13 +1,14 @@ -BASE = ../../libresourceqt +include(../../common.pri) TEMPLATE = app TARGET = test-resource-set DESTDIR = build -DEPENDPATH += $${BASE}/include $${BASE}/src . -INCLUDEPATH += $${BASE}/src $${BASE}/include +DEPENDPATH += $${POLICY} $${BASE}/src . +INCLUDEPATH += $${LIBRESOURCEQT}/src $${LIBRESOURCEINC} # Input -HEADERS += $${BASE}/include/resources.h $${BASE}/include/resource-set.h test-resource-set.h -SOURCES += $${BASE}/src/resource.cpp $${BASE}/src/resources.cpp $${BASE}/src/resource-set.cpp test-resource-set.cpp +HEADERS += $${POLICY}/resources.h $${POLICY}/resource-set.h test-resource-set.h +SOURCES += $${LIBRESOURCEQT}/src/resource.cpp $${LIBRESOURCEQT}/src/resources.cpp \ + $${LIBRESOURCEQT}/src/resource-set.cpp test-resource-set.cpp OBJECTS_DIR = build MOC_DIR = build @@ -17,5 +18,5 @@ QT -= gui # Install directives INSTALLBASE = /usr -target.path = $$INSTALLBASE/lib/libresourceqt-tests/ +target.path = $${INSTALLBASE}/lib/libresourceqt-tests/ INSTALLS = target diff --git a/tests/test-resource/test-resource.h b/tests/test-resource/test-resource.h index fc04c47..61a48ea 100644 --- a/tests/test-resource/test-resource.h +++ b/tests/test-resource/test-resource.h @@ -3,7 +3,7 @@ #include <QtTest/QTest> #include <QMetaType> -#include "resources.h" +#include <policy/resources.h> Q_DECLARE_METATYPE(ResourcePolicy::ResourceType) diff --git a/tests/test-resource/test-resource.pro b/tests/test-resource/test-resource.pro index 6ff2f35..c6ec6ab 100644 --- a/tests/test-resource/test-resource.pro +++ b/tests/test-resource/test-resource.pro @@ -1,13 +1,13 @@ -BASE = ../../libresourceqt +include(../../common.pri) TEMPLATE = app TARGET = test-resource DESTDIR = build -DEPENDPATH += $${BASE}/include $${BASE}/src . -INCLUDEPATH += $${BASE}/src $${BASE}/include +DEPENDPATH += $${POLICY} $${LIBRESOURCEQT}/src . +INCLUDEPATH += $${LIBRESOURCEQT}/src $${LIBRESOURCEINC} # Input -HEADERS += $${BASE}/include/resource.h $${BASE}/include/resources.h test-resource.h -SOURCES += $${BASE}/src/resource.cpp $${BASE}/src/resources.cpp test-resource.cpp +HEADERS += $${POLICY}/resource.h $${POLICY}/resources.h test-resource.h +SOURCES += $${LIBRESOURCEQT}/src/resource.cpp $${LIBRESOURCEQT}/src/resources.cpp test-resource.cpp OBJECTS_DIR = build MOC_DIR = build @@ -17,5 +17,5 @@ QT -= gui # Install directives INSTALLBASE = /usr -target.path = $$INSTALLBASE/lib/libresourceqt-tests/ +target.path = $${INSTALLBASE}/lib/libresourceqt-tests/ INSTALLS = target diff --git a/tests/tests.pro b/tests/tests.pro index c24c97c..1d2853f 100644 --- a/tests/tests.pro +++ b/tests/tests.pro @@ -8,8 +8,8 @@ TEMPLATE = subdirs SUBDIRS = test-dbus-qeventloop \ test-dbus-pong \ test-resource \ -# test-resource-engine \ - test-resource-set + test-resource-set \ + test-resource-engine # Install options testsxml.path = /usr/share/libresourceqt-tests/ diff --git a/tests/tests.xml b/tests/tests.xml index 8cd4f87..579c2e9 100644 --- a/tests/tests.xml +++ b/tests/tests.xml @@ -10,6 +10,10 @@ <case name="test-resource-set" type="Functional" level="Component" description="Unit tests for libresourceqt" timeout="15"> <step expected_result="0">/usr/lib/libresourceqt-tests/test-resource-set</step> </case> + + <case name="test-resource-engine" type="Functional" level="Component" description="Unit tests for libresourceqt" timeout="15"> + <step expected_result="0">/usr/lib/libresourceqt-tests/test-resource-engine</step> + </case> <environments> <scratchbox>false</scratchbox> |