diff --git a/services/distributed_call/include/distributed_communication/distributed_data_controller.h b/services/distributed_call/include/distributed_communication/distributed_data_controller.h index 00c2ed6936e874e747062668b691d10a6d097906..1c93633a0346374b44a63f01d490129b9b09fedf 100644 --- a/services/distributed_call/include/distributed_communication/distributed_data_controller.h +++ b/services/distributed_call/include/distributed_communication/distributed_data_controller.h @@ -34,6 +34,7 @@ constexpr const char* DISTRIBUTED_ITEM_DIRECTION = "direction"; constexpr uint32_t DISTRIBUTED_DATA_TYPE_OFFSET_BASE = 1; constexpr uint32_t DISTRIBUTED_MAX_RECV_DATA_LEN = 2048; +constexpr int32_t QOS_MIN_BW = 4 * 1024 * 1024; enum class DistributedDataType : int32_t { NAME = 0, diff --git a/services/distributed_call/include/transmission/client_session.h b/services/distributed_call/include/transmission/client_session.h index c6f8958785a08e5ebc308fc1795113689af0eee7..c294d314edc2de20fc9de7537030de7947b73df2 100644 --- a/services/distributed_call/include/transmission/client_session.h +++ b/services/distributed_call/include/transmission/client_session.h @@ -24,9 +24,10 @@ class ClientSession : public SessionAdapter { public: explicit ClientSession(const std::shared_ptr &callback) : SessionAdapter(callback) {} ~ClientSession() override; - void Create(const std::string &localName) override {} + void Create(const std::string &localName, const int32_t &qosMinBw) override {} void Destroy() override {} - void Connect(const std::string &peerDevId, const std::string &localName, const std::string &peerName) override; + void Connect(const std::string &peerDevId, const std::string &localName, const std::string &peerName, + const int32_t &qosMinBw) override; void Disconnect() override; void OnSessionBind(int32_t socket) override; void OnSessionShutdown(int32_t socket) override; diff --git a/services/distributed_call/include/transmission/server_session.h b/services/distributed_call/include/transmission/server_session.h index 0b7b5031f51f2d2b47211fc69fc3115b503d612e..483cbe67509de1bbb5cd57dad2fe42fc39cf5535 100644 --- a/services/distributed_call/include/transmission/server_session.h +++ b/services/distributed_call/include/transmission/server_session.h @@ -24,9 +24,10 @@ class ServerSession : public SessionAdapter { public: explicit ServerSession(const std::shared_ptr &callback) : SessionAdapter(callback) {} ~ServerSession() override; - void Create(const std::string &localName) override; + void Create(const std::string &localName, const int32_t &qosMinBw) override; void Destroy() override; - void Connect(const std::string &peerDevId, const std::string &localName, const std::string &peerName) override {} + void Connect(const std::string &peerDevId, const std::string &localName, const std::string &peerName, + const int32_t &qosMinBw) override {} void Disconnect() override {} void OnSessionBind(int32_t socket) override; void OnSessionShutdown(int32_t socket) override; diff --git a/services/distributed_call/include/transmission/session_adapter.h b/services/distributed_call/include/transmission/session_adapter.h index 2f78309d6d354716a889008c79d7ed065b295493..f4e9911283bd33ba7cd78b3d843ca5f73a8dfa11 100644 --- a/services/distributed_call/include/transmission/session_adapter.h +++ b/services/distributed_call/include/transmission/session_adapter.h @@ -23,7 +23,6 @@ namespace OHOS { namespace Telephony { constexpr int32_t INVALID_SOCKET_ID = -1; -constexpr int32_t QOS_MIN_BW = 4 * 1024 * 1024; constexpr int32_t QOS_MAX_LATENCY = 10000; constexpr const char* PACKET_NAME = "ohos.telephony.callmanager"; constexpr const char* SESSION_NAME = "ohos.telephony.callmanager.distributed_communication"; @@ -41,9 +40,10 @@ public: explicit SessionAdapter(const std::shared_ptr &callback); virtual ~SessionAdapter() = default; - virtual void Create(const std::string &localName) = 0; + virtual void Create(const std::string &localName, const int32_t &qosMinBw) = 0; virtual void Destroy() = 0; - virtual void Connect(const std::string &peerDevId, const std::string &localName, const std::string &peerName) = 0; + virtual void Connect(const std::string &peerDevId, const std::string &localName, const std::string &peerName, + const int32_t &qosMinBw) = 0; virtual void Disconnect() = 0; virtual void OnSessionBind(int32_t socket) = 0; virtual void OnSessionShutdown(int32_t socket) = 0; diff --git a/services/distributed_call/src/distributed_communication/distributed_data_sink_controller.cpp b/services/distributed_call/src/distributed_communication/distributed_data_sink_controller.cpp index 7d13faae0a7f9a1149d23f9eb6338ea65b558590..b89be3393f2273011db1cf278573a8f21046a59f 100644 --- a/services/distributed_call/src/distributed_communication/distributed_data_sink_controller.cpp +++ b/services/distributed_call/src/distributed_communication/distributed_data_sink_controller.cpp @@ -90,7 +90,7 @@ void DistributedDataSinkController::ConnectRemote(const std::string &devId) } session_ = transMgr->CreateClientSession(shared_from_this()); if (session_ != nullptr) { - session_->Connect(devId, SESSION_NAME, SESSION_NAME); + session_->Connect(devId, SESSION_NAME, SESSION_NAME, QOS_MIN_BW); } } diff --git a/services/distributed_call/src/distributed_communication/distributed_data_source_controller.cpp b/services/distributed_call/src/distributed_communication/distributed_data_source_controller.cpp index e0f5b4986484b91656a698a057aee8ba46614330..a9cb36a54d19e0aa9d8fe70a58e48d4757f25a14 100644 --- a/services/distributed_call/src/distributed_communication/distributed_data_source_controller.cpp +++ b/services/distributed_call/src/distributed_communication/distributed_data_source_controller.cpp @@ -34,7 +34,7 @@ void DistributedDataSourceController::OnDeviceOnline(const std::string &devId, c } session_ = transMgr->CreateServerSession(shared_from_this()); if (session_ != nullptr) { - session_->Create(SESSION_NAME); + session_->Create(SESSION_NAME, QOS_MIN_BW); } // save current call info diff --git a/services/distributed_call/src/transmission/client_session.cpp b/services/distributed_call/src/transmission/client_session.cpp index dce6c58fb3868835903dcdffa4fcb01ad48070fc..196e1f84dedfb9a288504e8d7cc480cfc7134891 100644 --- a/services/distributed_call/src/transmission/client_session.cpp +++ b/services/distributed_call/src/transmission/client_session.cpp @@ -23,7 +23,8 @@ ClientSession::~ClientSession() Disconnect(); } -void ClientSession::Connect(const std::string &peerDevId, const std::string &localName, const std::string &peerName) +void ClientSession::Connect(const std::string &peerDevId, const std::string &localName, const std::string &peerName, + const int32_t &qosMinBw) { { std::lock_guard lock(mutex_); @@ -37,7 +38,7 @@ void ClientSession::Connect(const std::string &peerDevId, const std::string &loc return; } QosTV qos[] = { - { .qos = QOS_TYPE_MIN_BW, .value = QOS_MIN_BW }, + { .qos = QOS_TYPE_MIN_BW, .value = qosMinBw }, { .qos = QOS_TYPE_MAX_LATENCY, .value = QOS_MAX_LATENCY } }; int32_t ret = BindAsync(socket, qos, sizeof(qos) / sizeof(qos[0]), &listener_); diff --git a/services/distributed_call/src/transmission/server_session.cpp b/services/distributed_call/src/transmission/server_session.cpp index 4d5e9ed43cb1ea446c7f1e287c22b61d2c77b415..aa2d2c68894a884f56a981b53cde60a93cd814aa 100644 --- a/services/distributed_call/src/transmission/server_session.cpp +++ b/services/distributed_call/src/transmission/server_session.cpp @@ -23,7 +23,7 @@ ServerSession::~ServerSession() Destroy(); } -void ServerSession::Create(const std::string &localName) +void ServerSession::Create(const std::string &localName, const int32_t &qosMinBw) { if (localName.empty()) { TELEPHONY_LOGE("create server socket fail, empty local name"); @@ -51,7 +51,7 @@ void ServerSession::Create(const std::string &localName) } QosTV qos[] = { - { .qos = QOS_TYPE_MIN_BW, .value = QOS_MIN_BW }, + { .qos = QOS_TYPE_MIN_BW, .value = qosMinBw }, { .qos = QOS_TYPE_MAX_LATENCY, .value = QOS_MAX_LATENCY } }; int32_t ret = Listen(socket, qos, sizeof(qos) / sizeof(qos[0]), &listener_); diff --git a/services/interoperable_call/include/interoperable_data_controller.h b/services/interoperable_call/include/interoperable_data_controller.h index 723cafe45680a1bab494e5f14bb7565f1846340d..df48e8187ac30ac8550db36a252864d57c1f1fa7 100644 --- a/services/interoperable_call/include/interoperable_data_controller.h +++ b/services/interoperable_call/include/interoperable_data_controller.h @@ -26,6 +26,7 @@ namespace Telephony { constexpr const char* DATA_TYPE = "dataType"; constexpr const char* INTEROPERABLE_ITEM_MUTE = "mute"; constexpr uint32_t INTEROPERABLE_MAX_RECV_DATA_LEN = 2048; +constexpr int32_t QOS_BW_BT = 4 * 64 * 1024; // 小于384*1024才可选路蓝牙,优先wifi,可选蓝牙 enum class InteroperableMsgType : int32_t { DATA_TYPE_UNKNOWN = -1, diff --git a/services/interoperable_call/src/interoperable_client_manager.cpp b/services/interoperable_call/src/interoperable_client_manager.cpp index ccb796d6fa17e80e52ab59670c3806c5cfe00357..9be009c7d6cf8a3f7f78bc5d11aac2d8f9cd3fb7 100644 --- a/services/interoperable_call/src/interoperable_client_manager.cpp +++ b/services/interoperable_call/src/interoperable_client_manager.cpp @@ -46,7 +46,7 @@ void InteroperableClientManager::ConnectRemote(const std::string &networkId) session_ = transMgr->CreateClientSession(shared_from_this()); if (session_ != nullptr) { TELEPHONY_LOGI("connect session_"); - session_->Connect(networkId, SOFTNET_SESSION_NAME, SOFTNET_SESSION_NAME); + session_->Connect(networkId, SOFTNET_SESSION_NAME, SOFTNET_SESSION_NAME, QOS_BW_BT); } } } // namespace Telephony diff --git a/services/interoperable_call/src/interoperable_server_manager.cpp b/services/interoperable_call/src/interoperable_server_manager.cpp index 386137c260d74109f244e0087b063374a42118cb..e59217752fe6a09f827b46af9062438a6be61228 100644 --- a/services/interoperable_call/src/interoperable_server_manager.cpp +++ b/services/interoperable_call/src/interoperable_server_manager.cpp @@ -32,7 +32,7 @@ void InteroperableServerManager::OnDeviceOnline(const std::string &networkId, co auto transMgr = DelayedSingleton::GetInstance(); session_ = transMgr->CreateServerSession(shared_from_this()); if (session_ != nullptr) { - session_->Create(SOFTNET_SESSION_NAME); + session_->Create(SOFTNET_SESSION_NAME, QOS_BW_BT); } } diff --git a/test/unittest/distributed_communication_test/src/distributed_data_test.cpp b/test/unittest/distributed_communication_test/src/distributed_data_test.cpp index 6878fd1c3bc69956fdba4591619dd0ed7a803675..e746f088a914620715bf4983af12558621742ed4 100644 --- a/test/unittest/distributed_communication_test/src/distributed_data_test.cpp +++ b/test/unittest/distributed_communication_test/src/distributed_data_test.cpp @@ -21,6 +21,7 @@ #include "distributed_data_controller.h" #include "distributed_data_sink_controller.h" #include "distributed_data_source_controller.h" +#include "interoperable_client_manager.h" #include "transmission_manager.h" namespace OHOS { @@ -348,21 +349,28 @@ HWTEST_F(DistributedDataTest, Telephony_DistributedDataTest_011, Function | Medi HWTEST_F(DistributedDataTest, Telephony_DistributedDataTest_012, Function | MediumTest | Level1) { auto controller = std::make_shared(); + auto iController = std::make_shared(); ASSERT_NO_THROW(controller->OnReceiveMsg(nullptr, DISTRIBUTED_MAX_RECV_DATA_LEN + 1)); + ASSERT_NO_THROW(iController->OnReceiveMsg(nullptr, INTEROPERABLE_MAX_RECV_DATA_LEN + 1)); std::string data = "test"; ASSERT_NO_THROW(controller->OnReceiveMsg(data.c_str(), data.length())); + ASSERT_NO_THROW(iController->OnReceiveMsg(data.c_str(), data.length())); data = "{ \"itemType\": 0, \"num\": \"123456\" }"; ASSERT_NO_THROW(controller->OnReceiveMsg(data.c_str(), data.length())); + ASSERT_NO_THROW(iController->OnReceiveMsg(data.c_str(), data.length())); data = "{ \"dataType\": 104, \"itemType\": 0, \"num\": \"123456\" }"; ASSERT_NO_THROW(controller->OnReceiveMsg(data.c_str(), data.length())); + ASSERT_NO_THROW(iController->OnReceiveMsg(data.c_str(), data.length())); data = "{ \"dataType\": 102, \"itemType\": 0, \"num\": \"123456\" }"; ASSERT_NO_THROW(controller->OnReceiveMsg(data.c_str(), data.length())); + ASSERT_NO_THROW(iController->OnReceiveMsg(data.c_str(), data.length())); data = "{ \"dataType\": 0, \"itemType\": 0, \"num\": \"123456\" }"; ASSERT_NO_THROW(controller->OnReceiveMsg(data.c_str(), data.length())); + ASSERT_NO_THROW(iController->OnReceiveMsg(data.c_str(), data.length())); } /** @@ -373,14 +381,20 @@ HWTEST_F(DistributedDataTest, Telephony_DistributedDataTest_012, Function | Medi HWTEST_F(DistributedDataTest, Telephony_DistributedDataTest_013, Function | MediumTest | Level1) { auto controller = std::make_shared(); + auto iController = std::make_shared(); controller->session_ = nullptr; ASSERT_NO_THROW(controller->SetMuted(true)); ASSERT_NO_THROW(controller->MuteRinger()); + ASSERT_NO_THROW(iController->SetMuted(true)); + ASSERT_NO_THROW(iController->MuteRinger()); std::shared_ptr callback = std::make_shared(); controller->session_ = DelayedSingleton::GetInstance()->CreateServerSession(callback); ASSERT_NO_THROW(controller->SetMuted(true)); ASSERT_NO_THROW(controller->MuteRinger()); + iController->session_ = DelayedSingleton::GetInstance()->CreateServerSession(callback); + ASSERT_NO_THROW(iController->SetMuted(true)); + ASSERT_NO_THROW(iController->MuteRinger()); } /** @@ -391,24 +405,29 @@ HWTEST_F(DistributedDataTest, Telephony_DistributedDataTest_013, Function | Medi HWTEST_F(DistributedDataTest, Telephony_DistributedDataTest_014, Function | MediumTest | Level1) { auto controller = std::make_shared(); + auto iController = std::make_shared(); cJSON *msg = cJSON_Parse("{ \"test\": 0 }"); std::string name = "test"; std::string stringValue = ""; int32_t intValue = 0; cJSON *dataJson = cJSON_GetObjectItem(msg, name.c_str()); EXPECT_TRUE(controller->GetInt32Value(msg, name, intValue)); + EXPECT_TRUE(iController->GetInt32Value(msg, name, intValue)); EXPECT_FALSE(controller->GetStringValue(msg, name, stringValue)); cJSON_Delete(msg); msg = cJSON_Parse("{ \"test\": \"hello\" }"); EXPECT_FALSE(controller->GetInt32Value(msg, name, intValue)); + EXPECT_FALSE(iController->GetInt32Value(msg, name, intValue)); EXPECT_TRUE(controller->GetStringValue(msg, name, stringValue)); bool boolValue = false; EXPECT_FALSE(controller->GetBoolValue(msg, name, boolValue)); + EXPECT_FALSE(iController->GetBoolValue(msg, name, boolValue)); cJSON_Delete(msg); msg = cJSON_Parse("{ \"test\": true }"); EXPECT_TRUE(controller->GetBoolValue(msg, name, boolValue)); + EXPECT_TRUE(iController->GetBoolValue(msg, name, boolValue)); cJSON_Delete(msg); } diff --git a/test/unittest/distributed_communication_test/src/distributed_transmission_test.cpp b/test/unittest/distributed_communication_test/src/distributed_transmission_test.cpp index 34fec32a11d1cc71f8445e7596e30bf9bbb3592a..b1a396e70a2c457c5f8650318116df50b81e81ce 100644 --- a/test/unittest/distributed_communication_test/src/distributed_transmission_test.cpp +++ b/test/unittest/distributed_communication_test/src/distributed_transmission_test.cpp @@ -64,9 +64,9 @@ HWTEST_F(DistributedTransmissionTest, Telephony_DistributedTransmissionTest_002, auto session = DelayedSingleton::GetInstance()->CreateClientSession(callback); ASSERT_NE(session, nullptr); session->socket_ = 0; - session->Connect("12345", SESSION_NAME, SESSION_NAME); + session->Connect("12345", SESSION_NAME, SESSION_NAME, 4194304); session->socket_ = INVALID_SOCKET_ID; - session->Connect("", SESSION_NAME, SESSION_NAME); + session->Connect("", SESSION_NAME, SESSION_NAME, 4194304); session->OnSessionBind(0); session->Disconnect(); session->OnSessionShutdown(0); @@ -77,7 +77,7 @@ HWTEST_F(DistributedTransmissionTest, Telephony_DistributedTransmissionTest_002, std::string peerName = "peerName"; auto clientSession = std::make_shared(callback); clientSession->clientSocket_ = INVALID_SOCKET_ID + 1; - clientSession->Connect("", SESSION_NAME, SESSION_NAME); // already connect + clientSession->Connect("", SESSION_NAME, SESSION_NAME, 4194304); // already connect clientSession->socket_ = INVALID_SOCKET_ID + 1; clientSession->Disconnect(); clientSession->socket_ = 1; @@ -96,18 +96,18 @@ HWTEST_F(DistributedTransmissionTest, Telephony_DistributedTransmissionTest_003, std::shared_ptr callback = std::make_shared(); auto session = std::make_shared(callback); ASSERT_NE(session, nullptr); - session->Create(""); + session->Create("", 4194304); session->socket_ = 0; - session->Create(SESSION_NAME); + session->Create(SESSION_NAME, 4194304); session->socket_ = INVALID_SOCKET_ID; - session->Create(SESSION_NAME); + session->Create(SESSION_NAME, 4194304); session->OnSessionBind(66); session->OnSessionShutdown(66); session->OnSessionShutdown(session->serverSocket_); session->serverSocket_ = 0; session->serverSocket_ = INVALID_SOCKET_ID + 1; - EXPECT_NO_THROW(session->Create("123")); + EXPECT_NO_THROW(session->Create("123", 4194304)); session->serverSocket_ = INVALID_SOCKET_ID; EXPECT_NO_THROW(session->Destroy()); session->serverSocket_ = INVALID_SOCKET_ID + 1;