summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Lorenz <jlorenz@de.adit-jv.com>2015-07-15 17:43:37 +0200
committerChristian Linke <christian.linke@bmw.de>2015-08-04 13:15:30 +0100
commit63efb86fd9273828d3792c0e0c66e32bbeee617b (patch)
treeaef508037554b4c69fd064a8df3bef91a5c150c4
parent12f03b854547a083c0b428d21de0468ba7b7fafb (diff)
downloadaudiomanager-63efb86fd9273828d3792c0e0c66e32bbeee617b.tar.gz
calculateMainConnectionDelay doesn't work if only a single connection has a timing information
Signed-off-by: Jens Lorenz <jlorenz@de.adit-jv.com>
-rw-r--r--AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp16
-rw-r--r--AudioManagerDaemon/test/AmMapHandlerTest/CAmMapHandlerTest.cpp15
2 files changed, 19 insertions, 12 deletions
diff --git a/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp b/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp
index 1af6361..d8878c3 100644
--- a/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp
+++ b/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp
@@ -534,8 +534,7 @@ am_Error_e CAmDatabaseHandlerMap::enterMainConnectionDB(const am_MainConnection_
}
//now check the connectionTable for all connections in the route. IF connectionID exist
- delay = calculateDelayForRoute(mainConnectionData.listConnectionID);
- mMappedData.mMainConnectionMap[nextID].delay = delay;
+ delay = calculateDelayForRoute(mainConnectionData.listConnectionID);
logInfo("DatabaseHandler::enterMainConnectionDB entered new mainConnection with sourceID", mainConnectionData.sourceID, "sinkID:", mainConnectionData.sinkID, "delay:", delay, "assigned ID:", connectionID);
if (mpDatabaseObserver)
@@ -549,7 +548,9 @@ am_Error_e CAmDatabaseHandlerMap::enterMainConnectionDB(const am_MainConnection_
//finally, we update the delay value for the maintable
if (delay == 0)
delay = -1;
- return (changeDelayMainConnection(delay, connectionID));
+ (void)changeDelayMainConnection(delay, connectionID);
+
+ return (E_OK);
}
/**
@@ -2225,21 +2226,16 @@ am_timeSync_t CAmDatabaseHandlerMap::calculateMainConnectionDelay(const am_mainC
return -1;
am_MainConnection_s mainConnection = mMappedData.mMainConnectionMap.at(mainConnectionID);
am_timeSync_t delay = 0;
- am_timeSync_t min = SHRT_MAX;
std::vector<am_connectionID_t>::const_iterator iter = mainConnection.listConnectionID.begin();
for(;iter<mainConnection.listConnectionID.end(); ++iter)
{
am_Connection_Database_s const * source = objectForKeyIfExistsInMap(*iter, mMappedData.mConnectionMap);
if( NULL!=source )
{
- delay += source->delay;
- min = std::min(min,source->delay);
+ delay += std::max(source->delay, static_cast<am_timeSync_t>(0));
}
}
- if (min < 0)
- delay = -1;
- return (delay);
-
+ return (delay == 0 ? -1 : std::min(delay, static_cast<am_timeSync_t>(SHRT_MAX)));
}
/**
diff --git a/AudioManagerDaemon/test/AmMapHandlerTest/CAmMapHandlerTest.cpp b/AudioManagerDaemon/test/AmMapHandlerTest/CAmMapHandlerTest.cpp
index 0e9b3dc..18632f3 100644
--- a/AudioManagerDaemon/test/AmMapHandlerTest/CAmMapHandlerTest.cpp
+++ b/AudioManagerDaemon/test/AmMapHandlerTest/CAmMapHandlerTest.cpp
@@ -3020,7 +3020,7 @@ TEST_F(CAmMapHandlerObserverCallbacksTest, enter_removeCrossfader)
ASSERT_EQ(E_OK,pDatabaseHandler.removeCrossfaderDB(crossfaderID))<< "ERROR: database error";
}
-TEST_F(CAmMapHandlerObserverCallbacksTest, enter_removeMainConnection)
+TEST_F(CAmMapHandlerObserverCallbacksTest, enter_update_removeMainConnection)
{
//fill the connection database
am_Connection_s connection;
@@ -3076,9 +3076,20 @@ TEST_F(CAmMapHandlerObserverCallbacksTest, enter_removeMainConnection)
EXPECT_CALL(*MockDatabaseObserver::getMockObserverObject(), timingInformationChanged(1, _)).Times(1);
ASSERT_EQ(E_OK, pDatabaseHandler.enterMainConnectionDB(mainConnection,mainConnectionID));
ASSERT_NE(0, mainConnectionID);
+
+ //change delay of first connection
+ am_timeSync_t delay = 20;
+ EXPECT_CALL(*MockDatabaseObserver::getMockObserverObject(), timingInformationChanged(mainConnectionID, 20)).Times(1);
+ ASSERT_EQ(E_OK, pDatabaseHandler.changeConnectionTimingInformation(mainConnection.listConnectionID[0], delay));
+
+ //change delay of route
+ delay = 40;
+ EXPECT_CALL(*MockDatabaseObserver::getMockObserverObject(), timingInformationChanged(mainConnectionID, 40)).Times(1);
+ ASSERT_EQ(E_OK, pDatabaseHandler.changeDelayMainConnection(delay, mainConnectionID));
+
EXPECT_CALL(*MockDatabaseObserver::getMockObserverObject(), removedMainConnection(1)).Times(1);
EXPECT_CALL(*MockDatabaseObserver::getMockObserverObject(), mainConnectionStateChanged(1, _)).Times(1);
- ASSERT_EQ(E_OK,pDatabaseHandler.removeMainConnectionDB(1)) << "ERROR: database error";
+ ASSERT_EQ(E_OK,pDatabaseHandler.removeMainConnectionDB(mainConnectionID)) << "ERROR: database error";
}
TEST_F(CAmMapHandlerObserverCallbacksTest, changeSinkAvailability)