From 4412e1bf443251d41cf3dfdcad744a6a4d7751ac Mon Sep 17 00:00:00 2001 From: fanrui0 Date: Tue, 29 Apr 2025 11:48:59 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=BD=AF=E6=80=BB=E7=BA=BF=E9=80=89?= =?UTF-8?q?=E8=B7=AF=E6=94=B9=E4=B8=BA=E8=93=9D=E7=89=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: fanrui0 --- .../distributed_data_controller.h | 1 + .../include/transmission/client_session.h | 5 +++-- .../include/transmission/server_session.h | 5 +++-- .../include/transmission/session_adapter.h | 6 +++--- .../distributed_data_sink_controller.cpp | 2 +- .../distributed_data_source_controller.cpp | 2 +- .../src/transmission/client_session.cpp | 5 +++-- .../src/transmission/server_session.cpp | 4 ++-- .../include/interoperable_data_controller.h | 1 + .../src/interoperable_client_manager.cpp | 2 +- .../src/interoperable_server_manager.cpp | 2 +- .../src/distributed_data_test.cpp | 2 ++ .../src/distributed_transmission_test.cpp | 14 +++++++------- 13 files changed, 29 insertions(+), 22 deletions(-) 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 00c2ed69..1c93633a 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 c6f89587..c294d314 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 0b7b5031..483cbe67 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 2f78309d..f4e99112 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 7d13faae..b89be339 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 e0f5b498..a9cb36a5 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 dce6c58f..196e1f84 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 4d5e9ed4..aa2d2c68 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 723cafe4..3b07caa1 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_MIN_BW = 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 ccb796d6..9be009c7 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 386137c2..e5921775 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 6878fd1c..6a4914ad 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,6 +349,7 @@ 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)); std::string data = "test"; ASSERT_NO_THROW(controller->OnReceiveMsg(data.c_str(), data.length())); 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 34fec32a..b1a396e7 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; -- Gitee From 1caebfd2c41b330afe779b561608dcfff6df5717 Mon Sep 17 00:00:00 2001 From: niumingyu0 Date: Tue, 29 Apr 2025 06:06:11 +0000 Subject: [PATCH 2/3] update test/unittest/distributed_communication_test/src/distributed_data_test.cpp. Signed-off-by: niumingyu0 --- .../src/distributed_data_test.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 6a4914ad..e746f088 100644 --- a/test/unittest/distributed_communication_test/src/distributed_data_test.cpp +++ b/test/unittest/distributed_communication_test/src/distributed_data_test.cpp @@ -351,20 +351,26 @@ HWTEST_F(DistributedDataTest, Telephony_DistributedDataTest_012, Function | Medi 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())); } /** @@ -375,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()); } /** @@ -393,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); } -- Gitee From b86702ea02cf73dba26fca9222685143bb182ff4 Mon Sep 17 00:00:00 2001 From: niumingyu0 Date: Tue, 29 Apr 2025 06:26:49 +0000 Subject: [PATCH 3/3] update services/interoperable_call/include/interoperable_data_controller.h. Signed-off-by: niumingyu0 --- .../interoperable_call/include/interoperable_data_controller.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/interoperable_call/include/interoperable_data_controller.h b/services/interoperable_call/include/interoperable_data_controller.h index 3b07caa1..df48e818 100644 --- a/services/interoperable_call/include/interoperable_data_controller.h +++ b/services/interoperable_call/include/interoperable_data_controller.h @@ -26,7 +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_MIN_BW = 4 * 64 * 1024; // 小于384*1024才可选路蓝牙,优先wifi,可选蓝牙 +constexpr int32_t QOS_BW_BT = 4 * 64 * 1024; // 小于384*1024才可选路蓝牙,优先wifi,可选蓝牙 enum class InteroperableMsgType : int32_t { DATA_TYPE_UNKNOWN = -1, -- Gitee