mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-16 15:36:12 -04:00
Add identity type field to PresenceDevice
PiperOrigin-RevId: 543824854
This commit is contained in:
committed by
Copybara-Service
parent
259350e343
commit
95f070796f
@@ -112,11 +112,9 @@ void ScanManager::NotifyFoundBle(ScanSessionId id, BleAdvertisementData data,
|
||||
return;
|
||||
}
|
||||
if (it->second.decoder.MatchesScanFilter(advert->data_elements)) {
|
||||
// TODO(b/256913915): Provide more information in PresenceDevice once
|
||||
// fully implemented
|
||||
internal::Metadata metadata;
|
||||
metadata.set_bluetooth_mac_address(std::string(remote_address));
|
||||
PresenceDevice device{metadata};
|
||||
PresenceDevice device(DeviceMotion(), metadata, advert->identity_type);
|
||||
device.AddExtendedProperties(advert->data_elements);
|
||||
for (const auto& data_element : advert->data_elements) {
|
||||
if (data_element.GetType() == DataElement::kActionFieldType) {
|
||||
|
||||
@@ -19,8 +19,10 @@
|
||||
|
||||
#include "internal/interop/device.h"
|
||||
#include "internal/platform/ble_connection_info.h"
|
||||
#include "internal/platform/implementation/crypto.h"
|
||||
#include "internal/platform/implementation/system_clock.h"
|
||||
#include "internal/platform/prng.h"
|
||||
#include "internal/proto/credential.pb.h"
|
||||
#include "presence/device_motion.h"
|
||||
|
||||
namespace nearby {
|
||||
@@ -56,6 +58,16 @@ PresenceDevice::PresenceDevice(DeviceMotion device_motion,
|
||||
endpoint_id_ = GenerateRandomEndpointId();
|
||||
}
|
||||
|
||||
PresenceDevice::PresenceDevice(
|
||||
DeviceMotion device_motion, Metadata metadata,
|
||||
nearby::internal::IdentityType identity_type) noexcept
|
||||
: discovery_timestamp_(nearby::SystemClock::ElapsedRealtime()),
|
||||
device_motion_(device_motion),
|
||||
metadata_(metadata),
|
||||
identity_type_(identity_type) {
|
||||
endpoint_id_ = GenerateRandomEndpointId();
|
||||
}
|
||||
|
||||
std::vector<nearby::ConnectionInfoVariant> PresenceDevice::GetConnectionInfos()
|
||||
const {
|
||||
std::vector<uint8_t> transformed_actions;
|
||||
|
||||
@@ -15,13 +15,12 @@
|
||||
#ifndef THIRD_PARTY_NEARBY_PRESENCE_PRESENCE_DEVICE_H_
|
||||
#define THIRD_PARTY_NEARBY_PRESENCE_PRESENCE_DEVICE_H_
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/time/time.h"
|
||||
#include "absl/types/variant.h"
|
||||
#include "internal/interop/device.h"
|
||||
#include "internal/proto/credential.pb.h"
|
||||
#include "internal/proto/metadata.pb.h"
|
||||
#include "presence/data_element.h"
|
||||
#include "presence/device_motion.h"
|
||||
@@ -39,6 +38,9 @@ class PresenceDevice : public nearby::NearbyDevice {
|
||||
explicit PresenceDevice(Metadata metadata) noexcept;
|
||||
explicit PresenceDevice(DeviceMotion device_motion,
|
||||
Metadata metadata) noexcept;
|
||||
explicit PresenceDevice(
|
||||
DeviceMotion device_motion, Metadata metadata,
|
||||
nearby::internal::IdentityType identity_type) noexcept;
|
||||
std::string GetEndpointId() const override { return endpoint_id_; }
|
||||
void AddExtendedProperty(const DataElement& data_element) {
|
||||
extended_properties_.push_back(data_element);
|
||||
@@ -62,6 +64,7 @@ class PresenceDevice : public nearby::NearbyDevice {
|
||||
Metadata GetMetadata() const { return metadata_; }
|
||||
void SetMetadata(const Metadata metadata) { metadata_ = metadata; }
|
||||
absl::Time GetDiscoveryTimestamp() const { return discovery_timestamp_; }
|
||||
internal::IdentityType GetIdentityType() const { return identity_type_; }
|
||||
|
||||
private:
|
||||
const absl::Time discovery_timestamp_;
|
||||
@@ -70,6 +73,7 @@ class PresenceDevice : public nearby::NearbyDevice {
|
||||
std::vector<DataElement> extended_properties_;
|
||||
std::vector<PresenceAction> actions_;
|
||||
std::string endpoint_id_;
|
||||
internal::IdentityType identity_type_ = internal::IDENTITY_TYPE_UNSPECIFIED;
|
||||
};
|
||||
|
||||
// Timestamp is not used for equality since if the same device is discovered
|
||||
@@ -80,7 +84,8 @@ inline bool operator==(const PresenceDevice& d1, const PresenceDevice& d2) {
|
||||
d1.GetMetadata().SerializeAsString() ==
|
||||
d2.GetMetadata().SerializeAsString() &&
|
||||
d1.GetActions() == d2.GetActions() &&
|
||||
d1.GetExtendedProperties() == d2.GetExtendedProperties();
|
||||
d1.GetExtendedProperties() == d2.GetExtendedProperties() &&
|
||||
d1.GetIdentityType() == d2.GetIdentityType();
|
||||
}
|
||||
|
||||
inline bool operator!=(const PresenceDevice& d1, const PresenceDevice& d2) {
|
||||
|
||||
@@ -14,13 +14,12 @@
|
||||
|
||||
#include "presence/presence_device.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "gmock/gmock.h"
|
||||
#include "protobuf-matchers/protocol-buffer-matchers.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "absl/types/variant.h"
|
||||
#include "internal/platform/ble_connection_info.h"
|
||||
#include "internal/proto/credential.pb.h"
|
||||
#include "presence/data_element.h"
|
||||
#include "presence/presence_action.h"
|
||||
|
||||
@@ -58,17 +57,21 @@ TEST(PresenceDeviceTest, DefaultMotionEquals) {
|
||||
TEST(PresenceDeviceTest, ExplicitInitEquals) {
|
||||
Metadata metadata = CreateTestMetadata();
|
||||
PresenceDevice device1 =
|
||||
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata);
|
||||
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata,
|
||||
internal::IDENTITY_TYPE_PUBLIC);
|
||||
PresenceDevice device2 =
|
||||
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata);
|
||||
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata,
|
||||
internal::IDENTITY_TYPE_PUBLIC);
|
||||
EXPECT_EQ(device1, device2);
|
||||
}
|
||||
|
||||
TEST(PresenceDeviceTest, ExplicitInitNotEquals) {
|
||||
Metadata metadata = CreateTestMetadata();
|
||||
PresenceDevice device1 = PresenceDevice({kDefaultMotionType}, metadata);
|
||||
PresenceDevice device1 = PresenceDevice({kDefaultMotionType}, metadata,
|
||||
internal::IDENTITY_TYPE_PUBLIC);
|
||||
PresenceDevice device2 =
|
||||
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata);
|
||||
PresenceDevice({kDefaultMotionType, kTestConfidence}, metadata,
|
||||
internal::IDENTITY_TYPE_PRIVATE);
|
||||
EXPECT_NE(device1, device2);
|
||||
}
|
||||
|
||||
@@ -84,7 +87,7 @@ TEST(PresenceDeviceTest, TestGetBleConnectionInfo) {
|
||||
EXPECT_EQ(ble_info.GetActions(), std::vector<uint8_t>{kTestAction});
|
||||
}
|
||||
|
||||
TEST(PresenceDevicetest, TestGetAddExtendedProperties) {
|
||||
TEST(PresenceDeviceTest, TestGetAddExtendedProperties) {
|
||||
Metadata metadata = CreateTestMetadata();
|
||||
PresenceDevice device = PresenceDevice({kDefaultMotionType}, metadata);
|
||||
device.AddExtendedProperty({kDataElementType, kDataElementValue});
|
||||
@@ -93,7 +96,7 @@ TEST(PresenceDevicetest, TestGetAddExtendedProperties) {
|
||||
DataElement(kDataElementType, kDataElementValue));
|
||||
}
|
||||
|
||||
TEST(PresenceDevicetest, TestGetAddExtendedPropertiesVector) {
|
||||
TEST(PresenceDeviceTest, TestGetAddExtendedPropertiesVector) {
|
||||
Metadata metadata = CreateTestMetadata();
|
||||
PresenceDevice device = PresenceDevice({kDefaultMotionType}, metadata);
|
||||
device.AddExtendedProperties(
|
||||
@@ -124,6 +127,13 @@ TEST(PresenceDeviceTest, TestEndpointIdIsRandom) {
|
||||
EXPECT_NE(device.GetEndpointId(), std::string(kEndpointIdLength, 0));
|
||||
}
|
||||
|
||||
TEST(PresenceDeviceTest, TestGetIdentityType) {
|
||||
Metadata metadata = CreateTestMetadata();
|
||||
PresenceDevice device =
|
||||
PresenceDevice(DeviceMotion(), metadata, internal::IDENTITY_TYPE_PUBLIC);
|
||||
EXPECT_EQ(device.GetIdentityType(), internal::IDENTITY_TYPE_PUBLIC);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace presence
|
||||
} // namespace nearby
|
||||
|
||||
Reference in New Issue
Block a user