* restructered document generation. Now only the functions of the daemon are generated
authorchristian mueller <christian.ei.mueller@bmw.de>
Tue, 7 Feb 2012 14:59:38 +0000 (15:59 +0100)
committerchristian mueller <christian.ei.mueller@bmw.de>
Tue, 7 Feb 2012 14:59:38 +0000 (15:59 +0100)
* sockethandler: take [0] instead of .front. added todo to make sockethandler faster
* added test for local routing

AudioManagerDaemon/CMakeLists.txt
AudioManagerDaemon/src/SocketHandler.cpp
AudioManagerDaemon/test/routing/routingTest.cpp
CHANGELOG
CMakeLists.txt
PluginCommandInterfaceDbus/CMakeLists.txt
PluginControlInterface/CMakeLists.txt
PluginRoutingInterfaceAsync/CMakeLists.txt
PluginRoutingInterfaceDbus/CMakeLists.txt
cmake/DoxyFile.in
includes/config.h

index b10c8fb..e14f222 100644 (file)
@@ -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 
index eb02db4..fa7fee4 100644 (file)
@@ -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;
index 463bbfd..d160e1a 100644 (file)
@@ -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<am_Route_s> listRoutes;
+    std::vector<am_RoutingElement_s> 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)
 {
index fe9885d..ebd230c 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,14 @@
+commit e6b739cc7e901ca8637bf3f5a72f5956cd764249
+Author: christian mueller <christian.ei.mueller@bmw.de>
+
+    * 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 <christian.ei.mueller@bmw.de>
+
+    * 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 <christian.ei.mueller@bmw.de>
 
index cafcf7a..e9db8e3 100644 (file)
@@ -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)
 
index 372def5..841a740 100644 (file)
@@ -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"
index d61bfdd..21612c5 100644 (file)
@@ -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"
index ebee65f..ac4f336 100644 (file)
@@ -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 
index 77a44db..4269e21 100644 (file)
@@ -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"
index bb1ef58..a885866 100644 (file)
@@ -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 
index 3e1542a..c9ed5b3 100644 (file)
@@ -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