From 48f0999d896d828b78eaeef825d1ec6b1a46fa4b Mon Sep 17 00:00:00 2001 From: "Andrey Oleynik (GitHub)" Date: Mon, 13 Nov 2017 10:38:43 +0200 Subject: Fixes sending 'transport_switch' signal back to adapter/device After StopDevice call BT device channel is not usable anymore, so to talk back to system USB channel is used. Fixes unit test as well. --- .../transport_manager/src/transport_manager_impl.cc | 12 +++++++----- .../transport_manager/test/transport_manager_impl_test.cc | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/transport_manager/src/transport_manager_impl.cc b/src/components/transport_manager/src/transport_manager_impl.cc index 05c54db210..2b4660700c 100644 --- a/src/components/transport_manager/src/transport_manager_impl.cc +++ b/src/components/transport_manager/src/transport_manager_impl.cc @@ -735,18 +735,20 @@ bool TransportManagerImpl::TryDeviceSwitch( DeviceToAdapterMap::iterator value) { LOG4CXX_AUTO_TRACE(logger_); const auto device_uid = value->first; - const auto adapter = value->second; + const auto old_adapter = value->second; - if (transport_adapter::DeviceType::IOS_BT != adapter->GetDeviceType()) { + if (transport_adapter::DeviceType::IOS_BT != old_adapter->GetDeviceType()) { LOG4CXX_DEBUG(logger_, "Adapter type is not IOS_BT."); return false; } - adapter->StopDevice(device_uid); - adapter->DeviceSwitched(device_uid); + + const auto new_adapter = ta; + old_adapter->StopDevice(device_uid); + new_adapter->DeviceSwitched(device_uid); DeactivateDeviceConnections(device_uid); - value->second = ta; + value->second = new_adapter; device_to_reconnect_ = device_uid; const uint32_t timeout = get_settings().app_transport_change_timer() + diff --git a/src/components/transport_manager/test/transport_manager_impl_test.cc b/src/components/transport_manager/test/transport_manager_impl_test.cc index 2e0e66a7a9..cd5bb27a0f 100644 --- a/src/components/transport_manager/test/transport_manager_impl_test.cc +++ b/src/components/transport_manager/test/transport_manager_impl_test.cc @@ -1159,7 +1159,7 @@ TEST_F(TransportManagerImplTest, transport_adapter::DeviceType::IOS_USB); EXPECT_CALL(*mock_adapter_, StopDevice(mac_address_)); - EXPECT_CALL(*mock_adapter_, DeviceSwitched(mac_address_)); + EXPECT_CALL(*second_mock_adapter, DeviceSwitched(mac_address_)); EXPECT_CALL(mock_transport_manager_settings_, app_transport_change_timer()) .WillOnce(Return(timeout)); -- cgit v1.2.1