diff options
author | christian mueller <christian.ei.mueller@bmw.de> | 2012-02-27 10:11:08 +0100 |
---|---|---|
committer | christian mueller <christian.ei.mueller@bmw.de> | 2012-02-27 19:10:59 +0100 |
commit | aa93713377d28a8ce7821466ef828f79a18e982d (patch) | |
tree | f1efc6d524ef4656f93977e746d75428e06ac236 /AudioManagerDaemon/src/CommandReceiver.cpp | |
parent | 02b17a992e900ad82df8edf02e5e51e750ece36b (diff) | |
download | audiomanager-aa93713377d28a8ce7821466ef828f79a18e982d.tar.gz |
* [GAM-4] updated interfaces
* shifted mainpage doxygen from EA generated to mainpage.h
* added logo to doxygen documentation
* fixed compile bug in cmakelists when no plugins are build
* [ GAM-23 ]fixed plugin version recognition in cmake
* first working CAmSerializer with DatabaseObserver
Diffstat (limited to 'AudioManagerDaemon/src/CommandReceiver.cpp')
-rw-r--r-- | AudioManagerDaemon/src/CommandReceiver.cpp | 56 |
1 files changed, 52 insertions, 4 deletions
diff --git a/AudioManagerDaemon/src/CommandReceiver.cpp b/AudioManagerDaemon/src/CommandReceiver.cpp index ff092dd..74b819b 100644 --- a/AudioManagerDaemon/src/CommandReceiver.cpp +++ b/AudioManagerDaemon/src/CommandReceiver.cpp @@ -29,13 +29,19 @@ #include <SocketHandler.h> #include <config.h> #include <cassert> +#include <algorithm> using namespace am; CommandReceiver::CommandReceiver(DatabaseHandler *iDatabaseHandler, ControlSender *iControlSender, SocketHandler *iSocketHandler) : mDatabaseHandler(iDatabaseHandler), // mControlSender(iControlSender), // - mSocketHandler(iSocketHandler) + mSocketHandler(iSocketHandler), // + mListStartupHandles(), // + mListRundownHandles(), // + mWaitStartup(false), // + mWaitRundown(false) + { assert(mDatabaseHandler!=NULL); assert(mSocketHandler!=NULL); @@ -46,7 +52,11 @@ CommandReceiver::CommandReceiver(DatabaseHandler *iDatabaseHandler, ControlSende mDatabaseHandler(iDatabaseHandler), // mControlSender(iControlSender), // mDBusWrapper(iDBusWrapper), // - mSocketHandler(iSocketHandler) + mSocketHandler(iSocketHandler), // + mListStartupHandles(), // + mListRundownHandles(), // + mWaitStartup(false), // + mWaitRundown(false) { assert(mDatabaseHandler!=NULL); assert(mSocketHandler!=NULL); @@ -168,8 +178,46 @@ am_Error_e CommandReceiver::getSocketHandler(SocketHandler *& socketHandler) con return E_OK; } -uint16_t CommandReceiver::getInterfaceVersion() const +void CommandReceiver::getInterfaceVersion(std::string & version) const +{ + version = CommandReceiveVersion; +} + +void CommandReceiver::confirmCommandReady(const uint16_t handle) +{ + mListStartupHandles.erase(std::remove(mListStartupHandles.begin(), mListStartupHandles.end(), handle), mListStartupHandles.end()); + if (mWaitStartup && mListStartupHandles.empty()) + mControlSender->confirmCommandReady(); +} + +void CommandReceiver::confirmCommandRundown(const uint16_t handle) +{ + mListRundownHandles.erase(std::remove(mListRundownHandles.begin(), mListRundownHandles.end(), handle), mListRundownHandles.end()); + if (mWaitRundown && mListRundownHandles.empty()) + mControlSender->confirmCommandRundown(); +} + +uint16_t CommandReceiver::getStartupHandle() +{ + uint16_t handle = ++handleCount; //todo: handle overflow + mListStartupHandles.push_back(handle); + return handle; +} + +uint16_t CommandReceiver::getRundownHandle() +{ + uint16_t handle = ++handleCount; //todo: handle overflow + mListRundownHandles.push_back(handle); + return handle; +} + +void am::CommandReceiver::waitOnStartup(bool startup) +{ + mWaitStartup = startup; +} + +void am::CommandReceiver::waitOnRundown(bool rundown) { - return CommandReceiveVersion; + mWaitRundown = rundown; } |