From f00468f45b72e2693b79af30665f683967deb5a7 Mon Sep 17 00:00:00 2001 From: christian mueller Date: Tue, 7 Feb 2012 15:59:38 +0100 Subject: [PATCH] * restructered document generation. Now only the functions of the daemon are generated * sockethandler: take [0] instead of .front. added todo to make sockethandler faster * added test for local routing --- AudioManagerDaemon/CMakeLists.txt | 16 +++---- AudioManagerDaemon/src/SocketHandler.cpp | 19 +++++--- AudioManagerDaemon/test/routing/routingTest.cpp | 64 +++++++++++++++++++++++++ CHANGELOG | 11 +++++ CMakeLists.txt | 9 ++-- PluginCommandInterfaceDbus/CMakeLists.txt | 16 +++---- PluginControlInterface/CMakeLists.txt | 16 +++---- PluginRoutingInterfaceAsync/CMakeLists.txt | 16 +++---- PluginRoutingInterfaceDbus/CMakeLists.txt | 16 +++---- cmake/DoxyFile.in | 2 +- includes/config.h | 2 +- 11 files changed, 133 insertions(+), 54 deletions(-) diff --git a/AudioManagerDaemon/CMakeLists.txt b/AudioManagerDaemon/CMakeLists.txt index b10c8fb..e14f222 100644 --- a/AudioManagerDaemon/CMakeLists.txt +++ b/AudioManagerDaemon/CMakeLists.txt @@ -89,14 +89,14 @@ IF(WITH_TESTS) add_subdirectory (test) ENDIF(WITH_TESTS) -IF(WITH_DOCUMENTATION) - file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) - configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) - add_custom_target (Docs ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} - SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile - ) -ENDIF(WITH_DOCUMENTATION) +#IF(WITH_DOCUMENTATION) +# file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) +# configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) +# add_custom_target (Docs ALL +# COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} +# SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile +# ) +#ENDIF(WITH_DOCUMENTATION) INSTALL(TARGETS AudioManager RUNTIME diff --git a/AudioManagerDaemon/src/SocketHandler.cpp b/AudioManagerDaemon/src/SocketHandler.cpp index eb02db4..fa7fee4 100644 --- a/AudioManagerDaemon/src/SocketHandler.cpp +++ b/AudioManagerDaemon/src/SocketHandler.cpp @@ -35,6 +35,7 @@ #include "DLTWrapper.h" //todo: implement time correction if timer was interrupted by call +//todo: change hitlist to a list that holds all information, because entering and removing items will be cheaper than with std::vector using namespace am; @@ -85,7 +86,8 @@ void SocketHandler::start_listenting() shPollPrepare *prep = NULL; for (; prepIter != mListPoll.end(); ++prepIter) { - if ((prep = prepIter->prepareCB) != NULL) prep->Call(prepIter->handle, prepIter->userData); + if ((prep = prepIter->prepareCB) != NULL) + prep->Call(prepIter->handle, prepIter->userData); } if (mRecreatePollfds) @@ -100,7 +102,7 @@ void SocketHandler::start_listenting() #ifdef WITH_PPOLL timespec buffertime; - if ((pollStatus = ppoll(&mfdPollingArray.front(), mfdPollingArray.size(), insertTime(buffertime), &sigmask)) < 0) + if ((pollStatus = ppoll(&mfdPollingArray[0], mfdPollingArray.size(), insertTime(buffertime), &sigmask)) < 0) { if (errno == EINTR) { @@ -109,14 +111,14 @@ void SocketHandler::start_listenting() } else { - logError("SocketHandler::start_listenting ppoll returned with error",errno); + logError("SocketHandler::start_listenting ppoll returned with error", errno); exit(0); } } #else //sigprocmask (SIG_SETMASK, &mask, &oldmask); - if((pollStatus=poll(&mfdPollingArray.front(),mfdPollingArray.size(),timespec2ms(mTimeout)))<0) + if((pollStatus=poll(&mfdPollingArray[0],mfdPollingArray.size(),timespec2ms(mTimeout)))<0) { if(errno==EINTR) @@ -144,7 +146,8 @@ void SocketHandler::start_listenting() do { it = std::find_if(it, mfdPollingArray.end(), onlyFiredEvents); - if (it != mfdPollingArray.end()) hitList.push_back(std::distance(mfdPollingArray.begin(), it++)); + if (it != mfdPollingArray.end()) + hitList.push_back(std::distance(mfdPollingArray.begin(), it++)); } while (it != mfdPollingArray.end()); @@ -153,7 +156,8 @@ void SocketHandler::start_listenting() for (; hListIt != hitList.end(); ++hListIt) { shPollFired* fire = NULL; - if ((fire = listPoll.at(*hListIt).firedCB) != NULL) fire->Call(mfdPollingArray.at(*hListIt), listPoll.at(*hListIt).handle, listPoll.at(*hListIt).userData); + if ((fire = listPoll.at(*hListIt).firedCB) != NULL) + fire->Call(mfdPollingArray.at(*hListIt), listPoll.at(*hListIt).handle, listPoll.at(*hListIt).userData); } //stage 2, lets ask around if some dispatching is necessary, if not, they are taken from the hitlist @@ -217,7 +221,8 @@ void SocketHandler::stop_listening() */ am_Error_e SocketHandler::addFDPoll(const int fd, const int16_t event, shPollPrepare *prepare, shPollFired *fired, shPollCheck *check, shPollDispatch *dispatch, void* userData, sh_pollHandle_t& handle) { - if (!fdIsValid(fd)) return E_NON_EXISTENT; + if (!fdIsValid(fd)) + return E_NON_EXISTENT; sh_poll_s pollData; pollData.pollfdValue.fd = fd; diff --git a/AudioManagerDaemon/test/routing/routingTest.cpp b/AudioManagerDaemon/test/routing/routingTest.cpp index 463bbfd..d160e1a 100644 --- a/AudioManagerDaemon/test/routing/routingTest.cpp +++ b/AudioManagerDaemon/test/routing/routingTest.cpp @@ -77,6 +77,70 @@ ACTION(returnConnectionFormat){ arg3=arg2; } +//test that checks just sinks and source in a domain +TEST_F(routingTest,simpleRoute2withDomain) +{ + EXPECT_CALL(pMockInterface,cbNumberOfSourcesChanged()).Times(1); + EXPECT_CALL(pMockInterface,cbNumberOfSinksChanged()).Times(1); + EXPECT_CALL(pMockControlInterface,getConnectionFormatChoice(_,_,_,_)).WillRepeatedly(DoAll(returnConnectionFormat(), Return(E_OK))); + + //initialize 2 domains + am_Domain_s domain1; + am_domainID_t domainID1; + + domain1.domainID = 0; + domain1.name = "domain1"; + domain1.busname = "domain1bus"; + domain1.state = DS_CONTROLLED; + + ASSERT_EQ(E_OK, pDatabaseHandler.enterDomainDB(domain1,domainID1)); + + am_Source_s source; + am_sourceID_t sourceID; + + source.domainID = domainID1; + source.name = "source1"; + source.sourceState = SS_ON; + source.sourceID = 0; + source.sourceClassID = 5; + source.listConnectionFormats.push_back(CF_ANALOG); + + ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,sourceID)); + + am_Sink_s sink; + am_sinkID_t sinkID; + + sink.domainID = domainID1; + sink.name = "sink1"; + sink.sinkID = 0; + sink.sinkClassID = 5; + sink.muteState = MS_MUTED; + sink.listConnectionFormats.push_back(CF_ANALOG); + + ASSERT_EQ(E_OK, pDatabaseHandler.enterSinkDB(sink,sinkID)); + + std::vector listRoutes; + std::vector listRoutingElements; + am_RoutingElement_s hopp1; + + hopp1.sinkID = sinkID; + hopp1.sourceID = sourceID; + hopp1.domainID = domainID1; + hopp1.connectionFormat = source.listConnectionFormats[0]; + + listRoutingElements.push_back(hopp1); + + am_Route_s compareRoute; + compareRoute.route = listRoutingElements; + compareRoute.sinkID = sinkID; + compareRoute.sourceID = sourceID; + + ASSERT_EQ(E_OK, pRouter.getRoute(true,sourceID,sinkID,listRoutes)); + ASSERT_EQ(1, listRoutes.size()); + ASSERT_TRUE(pCF.compareRoute(compareRoute,listRoutes[0])); + +} + //test that checks just 2 domains, one sink one source with only one connection format each TEST_F(routingTest,simpleRoute2DomainsOnlyFree) { diff --git a/CHANGELOG b/CHANGELOG index fe9885d..ebd230c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,14 @@ +commit e6b739cc7e901ca8637bf3f5a72f5956cd764249 +Author: christian mueller + + * added function to routing algorithm that takes care of the route in case source and sink are in the same domain... + +commit ba9e8ff6cfc7de6fadce914b356b6e4b398d5ab3 +Author: christian mueller + + * worked in feedback from Thomas Goering towards integration tests + * corrected startup sequence and modified the testplugin so that the startup sequences match + commit 74cf9b985164be8c28a3cd1b11076900792594f8 Author: christian mueller diff --git a/CMakeLists.txt b/CMakeLists.txt index cafcf7a..e9db8e3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -114,11 +114,10 @@ pkg_check_modules(DLT REQUIRED automotive-dlt) IF(WITH_DOCUMENTATION) find_package(Doxygen) - file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}/Interfaces) - configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Interfaces/Doxyfile @ONLY IMMEDIATE) - add_custom_target (Interfaces ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Interfaces/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH}/Interfaces - SOURCES ${AUDIO_INCLUDES_FOLDER} ${DOC_OUTPUT_PATH}/Interfaces/Doxyfile + configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) + add_custom_target (AudioManangerDoku ALL + COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} + SOURCES ${AUDIO_INCLUDES_FOLDER} ${DOC_OUTPUT_PATH}/Doxyfile ) ENDIF(WITH_DOCUMENTATION) diff --git a/PluginCommandInterfaceDbus/CMakeLists.txt b/PluginCommandInterfaceDbus/CMakeLists.txt index 372def5..841a740 100644 --- a/PluginCommandInterfaceDbus/CMakeLists.txt +++ b/PluginCommandInterfaceDbus/CMakeLists.txt @@ -41,14 +41,14 @@ IF(WITH_TESTS) add_subdirectory (test) ENDIF(WITH_TESTS) -IF(WITH_DOCUMENTATION) - file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) - configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) - add_custom_target (PluginInterfaceDBusDocs ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} - SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile - ) -ENDIF(WITH_DOCUMENTATION) +#IF(WITH_DOCUMENTATION) +# file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) +# configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) +# add_custom_target (PluginInterfaceDBusDocs ALL +# COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} +# SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile +# ) +#ENDIF(WITH_DOCUMENTATION) INSTALL(TARGETS PluginCommandInterfaceDbus DESTINATION "lib/${LIB_INSTALL_SUFFIX}/command" diff --git a/PluginControlInterface/CMakeLists.txt b/PluginControlInterface/CMakeLists.txt index d61bfdd..21612c5 100644 --- a/PluginControlInterface/CMakeLists.txt +++ b/PluginControlInterface/CMakeLists.txt @@ -35,14 +35,14 @@ IF(WITH_TESTS) # add_subdirectory (test) ENDIF(WITH_TESTS) -IF(WITH_DOCUMENTATION) - file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) - configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) - add_custom_target (PluginControlInterfaceDBusDocs ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} - SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile - ) -ENDIF(WITH_DOCUMENTATION) +#IF(WITH_DOCUMENTATION) +# file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) +# configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) +# add_custom_target (PluginControlInterfaceDBusDocs ALL +# COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} +# SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile +# ) +#ENDIF(WITH_DOCUMENTATION) INSTALL(TARGETS PluginControlInterface DESTINATION "lib/${LIB_INSTALL_SUFFIX}/control" diff --git a/PluginRoutingInterfaceAsync/CMakeLists.txt b/PluginRoutingInterfaceAsync/CMakeLists.txt index ebee65f..ac4f336 100644 --- a/PluginRoutingInterfaceAsync/CMakeLists.txt +++ b/PluginRoutingInterfaceAsync/CMakeLists.txt @@ -65,14 +65,14 @@ IF(WITH_TESTS) add_subdirectory (test) ENDIF(WITH_TESTS) -IF(WITH_DOCUMENTATION) - file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) - configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) - add_custom_target (PluginRoutingInterfaceAsyncDocs ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} - SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile - ) -ENDIF(WITH_DOCUMENTATION) +#IF(WITH_DOCUMENTATION) +# file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) +# configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) +# add_custom_target (PluginRoutingInterfaceAsyncDocs ALL +# COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} +# SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile +# ) +#ENDIF(WITH_DOCUMENTATION) INSTALL(TARGETS PluginRoutingInterfaceAsync diff --git a/PluginRoutingInterfaceDbus/CMakeLists.txt b/PluginRoutingInterfaceDbus/CMakeLists.txt index 77a44db..4269e21 100644 --- a/PluginRoutingInterfaceDbus/CMakeLists.txt +++ b/PluginRoutingInterfaceDbus/CMakeLists.txt @@ -41,14 +41,14 @@ IF(WITH_TESTS) # add_subdirectory (test) ENDIF(WITH_TESTS) -IF(WITH_DOCUMENTATION) - file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) - configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) - add_custom_target (PluginRoutingInterfaceDBusDocs ALL - COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} - SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile - ) -ENDIF(WITH_DOCUMENTATION) +#IF(WITH_DOCUMENTATION) +# file(MAKE_DIRECTORY ${DOC_OUTPUT_PATH}) +# configure_file(${DOXY_FILE} ${DOC_OUTPUT_PATH}/Doxyfile @ONLY IMMEDIATE) +# add_custom_target (PluginRoutingInterfaceDBusDocs ALL +# COMMAND ${DOXYGEN_EXECUTABLE} ${DOC_OUTPUT_PATH}/Doxyfile WORKING_DIRECTORY ${DOC_OUTPUT_PATH} +# SOURCES ${PROJECT_BINARY_DIR} ${DOC_OUTPUT_PATH}/Doxyfile +# ) +#ENDIF(WITH_DOCUMENTATION) INSTALL(TARGETS PluginRoutingInterfaceDbus DESTINATION "lib/${LIB_INSTALL_SUFFIX}/routing" diff --git a/cmake/DoxyFile.in b/cmake/DoxyFile.in index bb1ef58..a885866 100644 --- a/cmake/DoxyFile.in +++ b/cmake/DoxyFile.in @@ -663,7 +663,7 @@ EXCLUDE_SYMLINKS = NO # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* -EXCLUDE_PATTERNS = +EXCLUDE_PATTERNS = */test/* */Plugin*/* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the diff --git a/includes/config.h b/includes/config.h index 3e1542a..c9ed5b3 100644 --- a/includes/config.h +++ b/includes/config.h @@ -1,7 +1,7 @@ #ifndef _CONFIG_H #define _CONFIG_H -#define DAEMONVERSION "ver-0.0.1-24-gba9e8ff" +#define DAEMONVERSION "ver-0.0.9-1-ge6b739c" #define WITH_DBUS_WRAPPER #define WITH_SOCKETHANDLER_LOOP -- 2.7.4