From 9a98846007f180cdc966146f268a3bae0f940242 Mon Sep 17 00:00:00 2001 From: Charlie Date: Mon, 13 Jan 2025 10:50:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81USB=E5=8F=91=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charlie --- common/include/dm_constants.h | 6 ++++++ .../service/include/discovery/discovery_manager.h | 1 + services/service/include/softbus/softbus_listener.h | 2 ++ .../service/src/discovery/discovery_manager.cpp | 12 +++++++++++- services/service/src/softbus/softbus_listener.cpp | 13 +++++++++++-- 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/common/include/dm_constants.h b/common/include/dm_constants.h index 211d2b55c..9de198ac5 100755 --- a/common/include/dm_constants.h +++ b/common/include/dm_constants.h @@ -198,9 +198,13 @@ constexpr const char* FILTER_PARA_INCLUDE_TRUST = "FILTER_INCLUDE_TRUST"; constexpr const char* CONN_ADDR_TYPE_ID = "ID_TYPE"; constexpr const char* CONN_ADDR_TYPE_BR = "BR_TYPE"; constexpr const char* CONN_ADDR_TYPE_BLE = "BLE_TYPE"; +constexpr const char* CONN_ADDR_TYPE_USB = "USB_TYPE"; constexpr const char* CONN_ADDR_TYPE_WLAN_IP = "WLAN_IP_TYPE"; constexpr const char* CONN_ADDR_TYPE_ETH_IP = "ETH_IP_TYPE"; +// Softbus connection address type int +constexpr int32_t CONNECTION_ADDR_USB = 5; + // Parameter Key constexpr const char* PARAM_KEY_META_TYPE = "META_TYPE"; constexpr const char* PARAM_KEY_TARGET_ID = "TARGET_ID"; @@ -208,6 +212,8 @@ constexpr const char* PARAM_KEY_BR_MAC = "BR_MAC"; constexpr const char* PARAM_KEY_BLE_MAC = "BLE_MAC"; constexpr const char* PARAM_KEY_WIFI_IP = "WIFI_IP"; constexpr const char* PARAM_KEY_WIFI_PORT = "WIFI_PORT"; +constexpr const char* PARAM_KEY_USB_IP = "USB_IP"; +constexpr const char* PARAM_KEY_USB_PORT = "USB_PORT"; constexpr const char* PARAM_KEY_AUTH_TOKEN = "AUTH_TOKEN"; constexpr const char* PARAM_KEY_AUTH_TYPE = "AUTH_TYPE"; constexpr const char* PARAM_KEY_PIN_CODE = "PIN_CODE"; diff --git a/services/service/include/discovery/discovery_manager.h b/services/service/include/discovery/discovery_manager.h index fd204234e..856742125 100644 --- a/services/service/include/discovery/discovery_manager.h +++ b/services/service/include/discovery/discovery_manager.h @@ -89,6 +89,7 @@ private: void OnDeviceFound(const std::string &pkgName, const uint32_t capabilityType, const DmDeviceInfo &info, const DeviceFilterPara &filterPara); void UpdateInfoFreq(const std::map &discoverParam, DmSubscribeInfo &dmSubInfo); + void UpdateInfoMedium(const std::map &discoverParam, DmSubscribeInfo &dmSubInfo); private: std::mutex locks_; diff --git a/services/service/include/softbus/softbus_listener.h b/services/service/include/softbus/softbus_listener.h index fcfc2adcb..574dff138 100644 --- a/services/service/include/softbus/softbus_listener.h +++ b/services/service/include/softbus/softbus_listener.h @@ -26,6 +26,7 @@ #include #include "softbus_bus_center.h" +#include "dm_anonymous.h" #include "dm_device_info.h" #include "dm_publish_info.h" #include "dm_radar_helper.h" @@ -102,6 +103,7 @@ public: int32_t GetDeviceScreenStatus(const char *networkId, int32_t &screenStatus); private: + static void ParseConnAddrInfo(const ConnectionAddr *addrInfo, nlohmann::json &jsonObj); int32_t InitSoftPublishLNN(); private: diff --git a/services/service/src/discovery/discovery_manager.cpp b/services/service/src/discovery/discovery_manager.cpp index 25a496773..94368962d 100644 --- a/services/service/src/discovery/discovery_manager.cpp +++ b/services/service/src/discovery/discovery_manager.cpp @@ -65,7 +65,6 @@ int32_t DiscoveryManager::EnableDiscoveryListener(const std::string &pkgName, DmSubscribeInfo dmSubInfo; dmSubInfo.subscribeId = DM_INVALID_FLAG_ID; dmSubInfo.mode = DmDiscoverMode::DM_DISCOVER_MODE_PASSIVE; - dmSubInfo.medium = DmExchangeMedium::DM_BLE; dmSubInfo.freq = DmExchangeFreq::DM_LOW; dmSubInfo.isSameAccount = false; dmSubInfo.isWakeRemote = false; @@ -98,6 +97,7 @@ int32_t DiscoveryManager::EnableDiscoveryListener(const std::string &pkgName, capabilityMap_[pkgName] = std::string(dmSubInfo.capability); } + UpdateInfoMedium(discoverParam, dmSubInfo); int32_t ret = softbusListener_->RefreshSoftbusLNN(DM_PKG_NAME, dmSubInfo, LNN_DISC_CAPABILITY); if (ret != DM_OK) { LOGE("EnableDiscoveryListener failed, softbus refresh lnn ret: %{public}d.", ret); @@ -107,6 +107,16 @@ int32_t DiscoveryManager::EnableDiscoveryListener(const std::string &pkgName, return DM_OK; } +void DiscoveryManager::UpdateInfoMedium( + const std::map &discoverParam, DmSubscribeInfo &dmSubInfo) +{ + dmSubInfo.medium = DmExchangeMedium::DM_BLE; + if (discoverParam.find(PARAM_KEY_DISC_MEDIUM) != discoverParam.end()) { + int32_t medium = std::atoi((discoverParam.find(PARAM_KEY_DISC_MEDIUM)->second).c_str()); + dmSubInfo.medium = static_cast(medium); + } +} + int32_t DiscoveryManager::DisableDiscoveryListener(const std::string &pkgName, const std::map &extraParam) { diff --git a/services/service/src/softbus/softbus_listener.cpp b/services/service/src/softbus/softbus_listener.cpp index 7d560545d..b5b52e2e0 100644 --- a/services/service/src/softbus/softbus_listener.cpp +++ b/services/service/src/softbus/softbus_listener.cpp @@ -23,7 +23,6 @@ #include #include "device_manager_service.h" -#include "dm_anonymous.h" #include "dm_crypto.h" #include "dm_constants.h" #include "dm_device_info.h" @@ -799,6 +798,12 @@ void SoftbusListener::ConvertDeviceInfoToDmDevice(const DeviceInfo &device, DmDe return; } jsonObj[PARAM_KEY_DISC_CAPABILITY] = device.capabilityBitmap[0]; + ParseConnAddrInfo(addrInfo, jsonObj); + dmDevice.extraData = jsonObj.dump(); +} + +void SoftbusListener::ParseConnAddrInfo(const ConnectionAddr *addrInfo, nlohmann::json &jsonObj) +{ if (addrInfo->type == ConnectionAddrType::CONNECTION_ADDR_ETH) { std::string wifiIp((addrInfo->info).ip.ip); jsonObj[PARAM_KEY_WIFI_IP] = wifiIp; @@ -820,10 +825,14 @@ void SoftbusListener::ConvertDeviceInfoToDmDevice(const DeviceInfo &device, DmDe std::string udidHash(ConvertBytesToUpperCaseHexString((addrInfo->info).ble.udidHash, sizeof((addrInfo->info).ble.udidHash) / sizeof(*((addrInfo->info).ble.udidHash)))); jsonObj[PARAM_KEY_BLE_UDID_HASH] = udidHash; + } else if (addrInfo->type == CONNECTION_ADDR_USB) { + std::string usbIp((addrInfo->info).ip.ip); + jsonObj[PARAM_KEY_USB_IP] = usbIp; + jsonObj[PARAM_KEY_USB_PORT] = (addrInfo->info).ip.port; + jsonObj[PARAM_KEY_CONN_ADDR_TYPE] = CONN_ADDR_TYPE_USB; } else { LOGI("Unknown connection address type: %{public}d.", addrInfo->type); } - dmDevice.extraData = jsonObj.dump(); } int32_t SoftbusListener::GetNetworkTypeByNetworkId(const char *networkId, int32_t &networkType) -- Gitee