diff options
author | Christian Mueller <christian@lmuc329619u.(none)> | 2011-12-09 18:43:28 +0100 |
---|---|---|
committer | Christian Mueller <christian@lmuc329619u.(none)> | 2011-12-09 18:43:28 +0100 |
commit | d85e69bbf6d8ec6e087c7af579686923c76079cd (patch) | |
tree | e95edbd83f1a7458872dd4ad3df5d346afed7d3a /AudioManagerDaemon/src | |
parent | 5773404eb801e27179b7c3c7803a990145d6e94a (diff) | |
download | audiomanager-d85e69bbf6d8ec6e087c7af579686923c76079cd.tar.gz |
Some changes, renaming...
Diffstat (limited to 'AudioManagerDaemon/src')
-rw-r--r-- | AudioManagerDaemon/src/CommandReceiver.cpp | 10 | ||||
-rw-r--r-- | AudioManagerDaemon/src/ControlSender.cpp (renamed from AudioManagerDaemon/src/ControlLoader.cpp) | 8 | ||||
-rw-r--r-- | AudioManagerDaemon/src/DatabaseHandler.cpp | 86 | ||||
-rw-r--r-- | AudioManagerDaemon/src/main.cpp | 33 |
4 files changed, 99 insertions, 38 deletions
diff --git a/AudioManagerDaemon/src/CommandReceiver.cpp b/AudioManagerDaemon/src/CommandReceiver.cpp index b5294bd..604a659 100644 --- a/AudioManagerDaemon/src/CommandReceiver.cpp +++ b/AudioManagerDaemon/src/CommandReceiver.cpp @@ -68,7 +68,7 @@ am_Error_e CommandReceiver::setSystemProperty(const am_SystemProperty_s & proper am_Error_e CommandReceiver::getListMainConnections(std::vector<am_MainConnectionType_s> & listConnections) const { - mDatabaseHandler->getListVisibleMainConnections(listConnections); + return mDatabaseHandler->getListVisibleMainConnections(listConnections); } @@ -76,48 +76,56 @@ am_Error_e CommandReceiver::getListMainConnections(std::vector<am_MainConnection am_Error_e CommandReceiver::getListMainSinks(std::vector<am_SinkType_s>& listMainSinks) const { + return mDatabaseHandler->getListMainSinks(listMainSinks); } am_Error_e CommandReceiver::getListMainSources(std::vector<am_SourceType_s>& listMainSources) const { + return mDatabaseHandler->getListMainSources(listMainSources); } am_Error_e CommandReceiver::getListMainSinkSoundProperties(const am_sinkID_t sinkID, std::vector<am_MainSoundProperty_s> & listSoundProperties) const { + return mDatabaseHandler->getListMainSinkSoundProperties(sinkID,listSoundProperties); } am_Error_e CommandReceiver::getListMainSourceSoundProperties(const am_sourceID_t sourceID, std::vector<am_MainSoundProperty_s> & listSourceProperties) const { + return mDatabaseHandler->getListMainSourceSoundProperties(sourceID,listSourceProperties); } am_Error_e CommandReceiver::getListSourceClasses(std::vector<am_SourceClass_s> & listSourceClasses) const { + return mDatabaseHandler->getListSourceClasses(listSourceClasses); } am_Error_e CommandReceiver::getListSinkClasses(std::vector<am_SinkClass_s> & listSinkClasses) const { + return mDatabaseHandler->getListSinkClasses(listSinkClasses); } am_Error_e CommandReceiver::getListSystemProperties(std::vector<am_SystemProperty_s> & listSystemProperties) const { + return mDatabaseHandler->getListSystemProperties(listSystemProperties); } am_Error_e CommandReceiver::getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t & delay) const { + return mDatabaseHandler->getTimingInformation(mainConnectionID,delay); } diff --git a/AudioManagerDaemon/src/ControlLoader.cpp b/AudioManagerDaemon/src/ControlSender.cpp index 8f5e5ea..bd3787b 100644 --- a/AudioManagerDaemon/src/ControlLoader.cpp +++ b/AudioManagerDaemon/src/ControlSender.cpp @@ -5,11 +5,11 @@ * Author: christian */ -#include "ControlLoader.h" +#include "ControlSender.h" #include "pluginTemplate.h" #include <string> -ControlLoader::ControlLoader() +ControlSender::ControlSender() { ControlSendInterface* (*createFunc)(); std::string libPath="/home/christian/workspace/gitserver/build/plugins/control/libPluginControlInterface.so"; @@ -29,13 +29,13 @@ ControlLoader::ControlLoader() -ControlLoader::~ControlLoader() +ControlSender::~ControlSender() { } -ControlSendInterface *ControlLoader::returnControl() +ControlSendInterface *ControlSender::returnControl() { return mControler; } diff --git a/AudioManagerDaemon/src/DatabaseHandler.cpp b/AudioManagerDaemon/src/DatabaseHandler.cpp index 948ff94..2284717 100644 --- a/AudioManagerDaemon/src/DatabaseHandler.cpp +++ b/AudioManagerDaemon/src/DatabaseHandler.cpp @@ -2801,7 +2801,7 @@ am_Error_e DatabaseHandler::changeConnectionTimingInformation(const am_connectio { assert(connectionID!=0); - sqlite3_stmt* query=NULL; + sqlite3_stmt *query=NULL, *queryMainConnections; int eCode=0; std::string command= "UPDATE " + std::string(CONNECTION_TABLE) + " set delay=? WHERE connectionID=?"; @@ -2811,20 +2811,98 @@ am_Error_e DatabaseHandler::changeConnectionTimingInformation(const am_connectio if((eCode=sqlite3_step(query))!=SQLITE_DONE) { - DLT_LOG(AudioManager, DLT_LOG_ERROR, DLT_STRING("DatabaseHandler::enterConnectionDB SQLITE Step error code:"),DLT_INT(eCode)); + DLT_LOG(AudioManager, DLT_LOG_ERROR, DLT_STRING("DatabaseHandler::changeConnectionTimingInformation SQLITE Step error code:"),DLT_INT(eCode)); return E_DATABASE_ERROR; } if((eCode=sqlite3_finalize(query))!=SQLITE_OK) { - DLT_LOG(AudioManager, DLT_LOG_ERROR, DLT_STRING("DatabaseHandler::enterConnectionDB SQLITE Finalize error code:"),DLT_INT(eCode)); + DLT_LOG(AudioManager, DLT_LOG_ERROR, DLT_STRING("DatabaseHandler::changeConnectionTimingInformation SQLITE Finalize error code:"),DLT_INT(eCode)); + return E_DATABASE_ERROR; + } + + //now we need to find all mainConnections that use the changed connection and update their timing + am_mainConnectionID_t mainConnectionID; + am_timeSync_t tempDelay=0; + am_Error_e error; + command= "SELECT mainConnectionID FROM " + std::string(MAINCONNECTION_TABLE); + sqlite3_prepare_v2(mDatabase,command.c_str(),-1,&queryMainConnections,NULL); + + while((eCode=sqlite3_step(queryMainConnections))==SQLITE_ROW) + { + mainConnectionID=sqlite3_column_int(queryMainConnections,0); + if(connectionPartofMainConnection(connectionID,mainConnectionID)) + { + tempDelay=calculateMainConnectionDelay(mainConnectionID); + if ((error=changeDelayMainConnection(tempDelay,mainConnectionID))!= E_OK) + { + return error; + } + } + } + + if(eCode!=SQLITE_DONE) + { + DLT_LOG(AudioManager, DLT_LOG_ERROR, DLT_STRING("DatabaseHandler::changeConnectionTimingInformation SQLITE error code:"),DLT_INT(eCode)); + return E_DATABASE_ERROR; + } + + if((eCode=sqlite3_finalize(queryMainConnections))!=SQLITE_OK) + { + DLT_LOG(AudioManager, DLT_LOG_ERROR, DLT_STRING("DatabaseHandler::changeConnectionTimingInformation SQLITE Finalize error code:"),DLT_INT(eCode)); return E_DATABASE_ERROR; } - //todo: add DLT Info Message here return E_OK; } +bool DatabaseHandler::connectionPartofMainConnection(const am_connectionID_t connectionID, const am_mainConnectionID_t mainConnectionID) const +{ + sqlite3_stmt* query=NULL; + std::string command = "SELECT connectionID FROM MainConnectionRoute"+ int2string(mainConnectionID)+ " WHERE connectionID=" + int2string(connectionID); + int eCode=0; + bool returnVal=true; + sqlite3_prepare_v2(mDatabase,command.c_str(),-1,&query,NULL); + if ((eCode=sqlite3_step(query))==SQLITE_DONE) returnVal=false; + else if (eCode!=SQLITE_ROW) + { + returnVal=false; + DLT_LOG(AudioManager, DLT_LOG_ERROR, DLT_STRING("DatabaseHandler::connectionPartofMainConnection database error!:"), DLT_INT(eCode)) + } + sqlite3_finalize(query); + return returnVal; +} + +am_timeSync_t DatabaseHandler::calculateMainConnectionDelay(const am_mainConnectionID_t mainConnectionID) const +{ + assert (mainConnectionID!=0); + sqlite3_stmt* query=NULL; + std::string command = "SELECT delay FROM MainConnectionRoute"+ int2string(mainConnectionID); + int eCode=0; + am_timeSync_t delay=0; + sqlite3_prepare_v2(mDatabase,command.c_str(),-1,&query,NULL); + while((eCode=sqlite3_step(query))==SQLITE_ROW) + { + int16_t temp_delay=sqlite3_column_int(query,0); + if (temp_delay!=-1 && delay!=-1) delay+=temp_delay; + else delay=-1; + } + if((eCode=sqlite3_step(query))!=SQLITE_DONE) + { + DLT_LOG(AudioManager, DLT_LOG_ERROR, DLT_STRING("DatabaseHandler::calculateMainConnectionDelay SQLITE Step error code:"),DLT_INT(eCode)); + return E_DATABASE_ERROR; + } + + if((eCode=sqlite3_finalize(query))!=SQLITE_OK) + { + DLT_LOG(AudioManager, DLT_LOG_ERROR, DLT_STRING("DatabaseHandler::calculateMainConnectionDelay SQLITE Finalize error code:"),DLT_INT(eCode)); + return E_DATABASE_ERROR; + } + + if (delay==0) delay=-1; + return delay; +} + void DatabaseHandler::createTables() { for(uint16_t i=0;i<sizeof(databaseTables)/sizeof(databaseTables[0]);i++) diff --git a/AudioManagerDaemon/src/main.cpp b/AudioManagerDaemon/src/main.cpp index ef5da21..3aa5f8b 100644 --- a/AudioManagerDaemon/src/main.cpp +++ b/AudioManagerDaemon/src/main.cpp @@ -6,15 +6,16 @@ */ //todo: add debug commandline option to allow to use other than memory database +//todo: make real daemon out of it- systemd conform + #include "RoutingReceiver.h" #include "CommandReceiver.h" #include "ControlReceiver.h" #include "DatabaseHandler.h" -#include "control/ControlSendInterface.h" -#include "DBusWrapper.h" -#include "ControlLoader.h" +#include "ControlSender.h" #include "CommandSender.h" #include "RoutingSender.h" +#include "DBusWrapper.h" #include <dbus/dbus.h> #include <dlt/dlt.h> @@ -36,32 +37,6 @@ int main(int argc, char *argv[]) RoutingSender iRoutingSender; CommandSender iCommandSender; - am_Connection_s lowCon; - am_connectionID_t cID; - lowCon.connectionID=0; - lowCon.sinkID=2; - lowCon.sourceID=3; - lowCon.connectionFormat=CF_ANALOG; - lowCon.delay=-1; - iDatabaseHandler.enterConnectionDB(lowCon,cID); - - am_RoutingElement_s re; - re.connectionFormat=CF_ANALOG; - re.domainID=1; - re.sinkID=2; - re.sourceID=3; - - am_MainConnection_s con; - am_mainConnectionID_t mainC; - con.connectionID=0; - con.connectionState=CS_CONNECTING; - con.route.sinkID=2; - con.route.sourceID=3; - con.route.route.push_back(re); - iControlReceiver.enterMainConnectionDB(con,mainC); - //ControlLoader iControlLoader; -// ControlSendInterface* iControlSender =iControlLoader.returnControl(); - iCommandSender.startupInterface(&iCommandReceiver); |