mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-14 14:46:12 -04:00
Control Advertising/Scanning of instant on lost separately
PiperOrigin-RevId: 778356456
This commit is contained in:
committed by
Copybara-Service
parent
cf92356d02
commit
0614f439d9
+1
-1
@@ -256,7 +256,7 @@ NC_INSTANCE NcCreateService() {
|
||||
true);
|
||||
nearby::NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
::nearby::connections::config_package_nearby::nearby_connections_feature::
|
||||
kEnableStopBLEScanningOnWifiUpgrade,
|
||||
kEnableStopBleScanningOnWifiUpgrade,
|
||||
true);
|
||||
nearby::NearbyFlags::GetInstance().OverrideBoolFlagValue(
|
||||
::nearby::connections::config_package_nearby::nearby_connections_feature::
|
||||
|
||||
@@ -983,7 +983,7 @@ BwuManager::ProcessBwuPathAvailableEventInternal(
|
||||
config_package_nearby::nearby_connections_feature::kEnableBleV2);
|
||||
if (NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableStopBLEScanningOnWifiUpgrade)) {
|
||||
kEnableStopBleScanningOnWifiUpgrade)) {
|
||||
if (client->GetLocalOsInfo().type() ==
|
||||
location::nearby::connections::OsInfo::APPLE &&
|
||||
old_medium == Medium::BLE && medium == Medium::WIFI_HOTSPOT) {
|
||||
@@ -1005,7 +1005,7 @@ BwuManager::ProcessBwuPathAvailableEventInternal(
|
||||
|
||||
if (NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableStopBLEScanningOnWifiUpgrade)) {
|
||||
kEnableStopBleScanningOnWifiUpgrade)) {
|
||||
if (disable_ble_scanning) {
|
||||
if (enable_ble_v2) {
|
||||
NEARBY_LOGS(INFO) << "Resume BLE_V2 scanning.";
|
||||
|
||||
@@ -34,15 +34,33 @@ constexpr auto kBlePeripheralLostTimeoutMillis =
|
||||
// When true, disable Bluetooth classic scanning.
|
||||
constexpr auto kDisableBluetoothClassicScanning =
|
||||
flags::Flag<bool>(kConfigPackage, "45639961", false);
|
||||
// Disable instant on lost on BLE without extended feature.
|
||||
constexpr auto kDisableInstantOnLostOnBleWithoutExtended =
|
||||
flags::Flag<bool>(kConfigPackage, "45687098", true);
|
||||
// When true, enable advertising for instant on lost feature.
|
||||
constexpr auto kEnableAdvertisingForInstantOnLost =
|
||||
flags::Flag<bool>(kConfigPackage, "45708614", false);
|
||||
// Enable/Disable auto_reconnect feature.
|
||||
constexpr auto kEnableAutoReconnect =
|
||||
flags::Flag<bool>(kConfigPackage, "45427690", false);
|
||||
// Disable/Enable BLE v2 in Nearby Connections SDK.
|
||||
constexpr auto kEnableBleV2 =
|
||||
flags::Flag<bool>(kConfigPackage, "45401515", false);
|
||||
// Enable/Disable AWDL in Nearby connections SDK.
|
||||
constexpr auto kEnableAwdl =
|
||||
flags::Flag<bool>(kConfigPackage, "45690762", false);
|
||||
// Disable/Enable BLE L2CAP in Nearby Connections SDK.
|
||||
constexpr auto kEnableBleL2cap =
|
||||
flags::Flag<bool>(kConfigPackage, "45685706", false);
|
||||
// Disable/Enable BLE v2 in Nearby Connections SDK.
|
||||
constexpr auto kEnableBleV2 =
|
||||
flags::Flag<bool>(kConfigPackage, "45401515", false);
|
||||
// Enable/Disable DCT advertising/scanning specification.
|
||||
constexpr auto kEnableDct =
|
||||
flags::Flag<bool>(kConfigPackage, "45697202", false);
|
||||
// Disable/Enable dynamic role switch in Nearby Connections SDK.
|
||||
constexpr auto kEnableDynamicRoleSwitch =
|
||||
flags::Flag<bool>(kConfigPackage, "45696452", false);
|
||||
// Enable/Disable GATT client disconnection.
|
||||
constexpr auto kEnableGattClientDisconnection =
|
||||
flags::Flag<bool>(kConfigPackage, "45698964", false);
|
||||
// Disable/Enable GATT query in thread in BLE V2.
|
||||
// Manual edit: setting this to false for ChromeOS rollout as well.
|
||||
constexpr auto kEnableGattQueryInThread =
|
||||
@@ -53,10 +71,13 @@ constexpr auto kEnableInstantOnLost =
|
||||
// When true, enable multiplexing in NC.
|
||||
constexpr auto kEnableMultiplex =
|
||||
flags::Flag<bool>(kConfigPackage, "45647946", false);
|
||||
// Enable/disable multiplex in NC for AWDL.
|
||||
constexpr auto kEnableMultiplexAwdl =
|
||||
flags::Flag<bool>(kConfigPackage, "45690761", false);
|
||||
// When true, enable multiplexing in NC for Bluetooth.
|
||||
constexpr auto kEnableMultiplexBluetooth =
|
||||
flags::Flag<bool>(kConfigPackage, "45676646", false);
|
||||
// When true, enable multiplexing in NC for WifiLan.
|
||||
// When true, enable multiplexing in NC for Wifi.
|
||||
constexpr auto kEnableMultiplexWifiLan =
|
||||
flags::Flag<bool>(kConfigPackage, "45676647", false);
|
||||
// Enable/Disable payload manager to skip chunk update.
|
||||
@@ -68,6 +89,12 @@ constexpr auto kEnablePayloadReceivedAck =
|
||||
// Enable/Disable safe-to-disconnect feature.
|
||||
constexpr auto kEnableSafeToDisconnect =
|
||||
flags::Flag<bool>(kConfigPackage, "45425789", false);
|
||||
// When true, enable scanning for instant on lost feature.
|
||||
constexpr auto kEnableScanningForInstantOnLost =
|
||||
flags::Flag<bool>(kConfigPackage, "45708613", false);
|
||||
// Stop BLE_V2 scanning when upgrading to WIFI Hotspot or WFD.
|
||||
constexpr auto kEnableStopBleScanningOnWifiUpgrade =
|
||||
flags::Flag<bool>(kConfigPackage, "45687902", false);
|
||||
// by default, enable Wi-Fi Hotspot client.
|
||||
constexpr auto kEnableWifiHotspotClient =
|
||||
flags::Flag<bool>(kConfigPackage, "45648734", true);
|
||||
@@ -86,27 +113,7 @@ constexpr auto kSafeToDisconnectVersion =
|
||||
// When true, use stable endpoint ID.
|
||||
constexpr auto kUseStableEndpointId =
|
||||
flags::Flag<bool>(kConfigPackage, "45639298", false);
|
||||
// When true, disable instant on lost on BLE without extended feature.
|
||||
constexpr auto kDisableInstantOnLostOnBleWithoutExtended =
|
||||
flags::Flag<bool>(kConfigPackage, "45687098", true);
|
||||
// When true, stop BLE_V2 scanning when upgrading to WIFI Hotspot or WFD.
|
||||
constexpr auto kEnableStopBLEScanningOnWifiUpgrade =
|
||||
flags::Flag<bool>(kConfigPackage, "45687902", false);
|
||||
// When true, enable multiplexing in NC for AWDL.
|
||||
constexpr auto kEnableMultiplexAwdl =
|
||||
flags::Flag<bool>(kConfigPackage, "45690761", false);
|
||||
// Enable/Disable AWDL in Nearby connections SDK.
|
||||
constexpr auto kEnableAwdl =
|
||||
flags::Flag<bool>(kConfigPackage, "45690762", false);
|
||||
// When true, enable dynamic role switch in NC.
|
||||
constexpr auto kEnableDynamicRoleSwitch =
|
||||
flags::Flag<bool>(kConfigPackage, "45696452", false);
|
||||
// Enable/Disable DCT advertising/scanning specification.
|
||||
constexpr auto kEnableDct =
|
||||
flags::Flag<bool>(kConfigPackage, "45697202", false);
|
||||
// Enable/Disable GATT client disconnection.
|
||||
constexpr auto kEnableGattClientDisconnection =
|
||||
flags::Flag<bool>(kConfigPackage, "45698964", false);
|
||||
|
||||
} // namespace nearby_connections_feature
|
||||
} // namespace config_package_nearby
|
||||
} // namespace connections
|
||||
|
||||
@@ -107,7 +107,10 @@ BleV2::~BleV2() {
|
||||
|
||||
if (NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableInstantOnLost)) {
|
||||
kEnableInstantOnLost) ||
|
||||
NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableAdvertisingForInstantOnLost)) {
|
||||
instant_on_lost_manager_.Shutdown();
|
||||
}
|
||||
}
|
||||
@@ -272,7 +275,10 @@ bool BleV2::StopAdvertising(const std::string& service_id) {
|
||||
|
||||
if (NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableInstantOnLost)) {
|
||||
kEnableInstantOnLost) ||
|
||||
NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableAdvertisingForInstantOnLost)) {
|
||||
instant_on_lost_manager_.OnAdvertisingStopped(service_id);
|
||||
}
|
||||
|
||||
@@ -1197,7 +1203,10 @@ bool BleV2::StartFastAdvertisingLocked(
|
||||
|
||||
if (NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableInstantOnLost)) {
|
||||
kEnableInstantOnLost) ||
|
||||
NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableAdvertisingForInstantOnLost)) {
|
||||
instant_on_lost_manager_.OnAdvertisingStarted(service_id,
|
||||
medium_advertisement_bytes);
|
||||
}
|
||||
@@ -1233,7 +1242,10 @@ bool BleV2::StartRegularAdvertisingLocked(
|
||||
} else {
|
||||
if (NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableInstantOnLost)) {
|
||||
kEnableInstantOnLost) ||
|
||||
NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableAdvertisingForInstantOnLost)) {
|
||||
instant_on_lost_manager_.OnAdvertisingStarted(
|
||||
service_id, medium_advertisement_bytes);
|
||||
}
|
||||
@@ -1319,10 +1331,12 @@ bool BleV2::StartGattAdvertisingLocked(
|
||||
|
||||
if (NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableInstantOnLost)) {
|
||||
for (const auto& item : advertising_data.service_data) {
|
||||
instant_on_lost_manager_.OnAdvertisingStarted(service_id, item.second);
|
||||
}
|
||||
kEnableInstantOnLost) ||
|
||||
NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableAdvertisingForInstantOnLost)) {
|
||||
instant_on_lost_manager_.OnAdvertisingStarted(service_id,
|
||||
medium_advertisement_bytes);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -196,8 +196,7 @@ bool DiscoveredPeripheralTracker::HandleOnLostAdvertisementLocked(
|
||||
|
||||
for (const auto& hash : on_lost_advertisement->hashes()) {
|
||||
for (const auto& it : gatt_advertisement_infos_) {
|
||||
if (it.second.advertisement_header.GetAdvertisementHash().string_data() ==
|
||||
hash) {
|
||||
if (it.second.instant_on_lost_hash.string_data() == hash) {
|
||||
auto discovery_cb_it = service_id_infos_.find(it.second.service_id);
|
||||
if (discovery_cb_it == service_id_infos_.end()) {
|
||||
LOG(INFO)
|
||||
@@ -216,7 +215,10 @@ bool DiscoveredPeripheralTracker::HandleOnLostAdvertisementLocked(
|
||||
if (gatt_advertisement.IsValid()) {
|
||||
if (NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableInstantOnLost)) {
|
||||
kEnableInstantOnLost) ||
|
||||
NearbyFlags::GetInstance().GetBoolFlag(
|
||||
config_package_nearby::nearby_connections_feature::
|
||||
kEnableScanningForInstantOnLost)) {
|
||||
AddInstantLostAdvertisement(it.second.advertisement_header);
|
||||
discovery_cb_it->second.discovered_peripheral_callback
|
||||
.instant_lost_cb(lost_peripheral, it.second.service_id,
|
||||
@@ -500,7 +502,10 @@ BleAdvertisementHeader DiscoveredPeripheralTracker::HandleRawGattAdvertisements(
|
||||
GattAdvertisementInfo gatt_advertisement_info = {
|
||||
.service_id = service_id,
|
||||
.advertisement_header = new_advertisement_header,
|
||||
.peripheral = peripheral};
|
||||
.peripheral = peripheral,
|
||||
.instant_on_lost_hash = bleutils::GenerateAdvertisementHash(
|
||||
gatt_advertisement.ByteArrayWithExtraField())};
|
||||
|
||||
gatt_advertisement_infos_.insert_or_assign(
|
||||
gatt_advertisement, std::move(gatt_advertisement_info));
|
||||
}
|
||||
|
||||
@@ -141,8 +141,11 @@ class DiscoveredPeripheralTracker {
|
||||
// gatt_advertisements_.
|
||||
BleAdvertisementHeader advertisement_header;
|
||||
|
||||
// A proxy BlePeripheral for found/lost disovery callback.
|
||||
// A proxy BlePeripheral for found/lost discovery callback.
|
||||
BleV2Peripheral peripheral;
|
||||
|
||||
// Hash for instant on lost.
|
||||
ByteArray instant_on_lost_hash;
|
||||
};
|
||||
|
||||
// Clears stale data from any previous sessions.
|
||||
|
||||
@@ -341,8 +341,7 @@ TEST_P(DiscoveredPeripheralTrackerTest,
|
||||
EXPECT_EQ(GetFetchAdvertisementCallbackCount(), 0);
|
||||
}
|
||||
|
||||
TEST_P(DiscoveredPeripheralTrackerTest,
|
||||
DctAdvertisementPeripheralDiscovered) {
|
||||
TEST_P(DiscoveredPeripheralTrackerTest, DctAdvertisementPeripheralDiscovered) {
|
||||
ByteArray dct_advertisement_bytes = CreateDctAdvertisement(
|
||||
std::string(kServiceIdA), std::string(kDeviceName));
|
||||
CountDownLatch found_latch(1);
|
||||
@@ -1204,7 +1203,8 @@ TEST_P(DiscoveredPeripheralTrackerTest, LostPeripheralForInstantOnLost) {
|
||||
EXPECT_EQ(GetFetchAdvertisementCallbackCount(), 1);
|
||||
|
||||
auto advertisement = InstantOnLostAdvertisement::CreateFromHashes(
|
||||
std::list<std::string>({std::string(advertisement_hash)}));
|
||||
std::list<std::string>({std::string(
|
||||
bleutils::GenerateAdvertisementHash(advertisement_bytes))}));
|
||||
ASSERT_OK(advertisement);
|
||||
api::ble_v2::BleAdvertisementData loss_advertisement_data{};
|
||||
loss_advertisement_data.service_data.insert(
|
||||
@@ -1269,7 +1269,8 @@ TEST_P(DiscoveredPeripheralTrackerTest, InstantLostPeripheralForInstantOnLost) {
|
||||
EXPECT_EQ(GetFetchAdvertisementCallbackCount(), 1);
|
||||
|
||||
auto advertisement = InstantOnLostAdvertisement::CreateFromHashes(
|
||||
std::list<std::string>({std::string(advertisement_hash)}));
|
||||
std::list<std::string>({std::string(
|
||||
bleutils::GenerateAdvertisementHash(advertisement_bytes))}));
|
||||
ASSERT_OK(advertisement);
|
||||
api::ble_v2::BleAdvertisementData loss_advertisement_data{};
|
||||
loss_advertisement_data.service_data.insert(
|
||||
@@ -1340,7 +1341,8 @@ TEST_P(DiscoveredPeripheralTrackerTest,
|
||||
|
||||
CountDownLatch fetch_latch2(1);
|
||||
auto advertisement = InstantOnLostAdvertisement::CreateFromHashes(
|
||||
std::list<std::string>({std::string(advertisement_hash)}));
|
||||
std::list<std::string>({std::string(
|
||||
bleutils::GenerateAdvertisementHash(advertisement_bytes))}));
|
||||
ASSERT_OK(advertisement);
|
||||
api::ble_v2::BleAdvertisementData loss_advertisement_data{};
|
||||
loss_advertisement_data.service_data.insert(
|
||||
|
||||
Reference in New Issue
Block a user