diff --git a/interfaces/inner_kits/native_cpp/include/dm_publish_info.h b/interfaces/inner_kits/native_cpp/include/dm_publish_info.h index b003475a77bea7da8ad3867532880250fdd35c30..bb3a48775db00615a2fe8efbe29d832bf9b21af0 100644 --- a/interfaces/inner_kits/native_cpp/include/dm_publish_info.h +++ b/interfaces/inner_kits/native_cpp/include/dm_publish_info.h @@ -42,6 +42,10 @@ typedef struct { * Discovery ranging. For details, see {@link PublishInfo}. */ bool ranging; + /** + * Service subscription medium. For details, see {@link DmExchangeMedium}. + */ + DmExchangeMedium medium; } DmPublishInfo; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/service/src/advertise/advertise_manager.cpp b/services/service/src/advertise/advertise_manager.cpp index 263203e85048c9e7ad3a8862b82f1aa8b483e774..172f0565bda8684828596b27326f87c08985c999 100644 --- a/services/service/src/advertise/advertise_manager.cpp +++ b/services/service/src/advertise/advertise_manager.cpp @@ -91,6 +91,7 @@ void AdvertiseManager::ConfigAdvParam(const std::map & dmPubInfo->mode = DmDiscoverMode::DM_DISCOVER_MODE_PASSIVE; dmPubInfo->freq = DmExchangeFreq::DM_LOW; dmPubInfo->ranging = true; + dmPubInfo->medium = DmExchangeMedium::DM_AUTO; if (advertiseParam.find(PARAM_KEY_META_TYPE) != advertiseParam.end()) { LOGI("StartAdvertising input MetaType=%{public}s", (advertiseParam.find(PARAM_KEY_META_TYPE)->second).c_str()); @@ -106,6 +107,12 @@ void AdvertiseManager::ConfigAdvParam(const std::map & dmPubInfo->freq = static_cast(std::atoi((advertiseParam.find(PARAM_KEY_DISC_FREQ)->second).c_str())); } + if (advertiseParam.find(PARAM_KEY_DISC_MEDIUM) != advertiseParam.end()) { + if (IsNumberString(advertiseParam.find(PARAM_KEY_DISC_MEDIUM)->second)) { + dmPubInfo->medium = + static_cast(std::atoi((advertiseParam.find(PARAM_KEY_DISC_MEDIUM)->second).c_str())); + } + } } int32_t AdvertiseManager::StopAdvertising(const std::string &pkgName, int32_t publishId) diff --git a/services/service/src/softbus/softbus_listener.cpp b/services/service/src/softbus/softbus_listener.cpp index 3f7cf134306a84d3f6998da7ab5a33e813b648df..7b00d75ba7d2a0d60069135d6c3697a56470b6c1 100644 --- a/services/service/src/softbus/softbus_listener.cpp +++ b/services/service/src/softbus/softbus_listener.cpp @@ -631,7 +631,11 @@ int32_t SoftbusListener::PublishSoftbusLNN(const DmPublishInfo &dmPubInfo, const PublishInfo publishInfo; publishInfo.publishId = dmPubInfo.publishId; publishInfo.mode = static_cast(dmPubInfo.mode); - publishInfo.medium = (capability == DM_CAPABILITY_APPROACH) ? ExchangeMedium::BLE : ExchangeMedium::AUTO; + if (capability == DM_CAPABILITY_APPROACH) { + publishInfo.medium = ExchangeMedium::BLE; + } else { + publishInfo.medium = static_cast(dmPubInfo.medium); + } publishInfo.freq = static_cast(dmPubInfo.freq); publishInfo.capability = capability.c_str(); publishInfo.capabilityData = const_cast(reinterpret_cast(customData.c_str()));