[BLE Refactor] Modify to allow zero numSlots for AdvertisementHeader.

PiperOrigin-RevId: 434634152
This commit is contained in:
edwinwu
2022-03-14 19:39:50 -07:00
committed by Copybara-Service
parent 9239fb0767
commit 0702409047
2 changed files with 16 additions and 3 deletions
@@ -34,7 +34,7 @@ BleAdvertisementHeader::BleAdvertisementHeader(
Version version, bool extended_advertisement, int num_slots,
const ByteArray &service_id_bloom_filter,
const ByteArray &advertisement_hash, int psm) {
if (version != Version::kV2 || num_slots <= 0 ||
if (version != Version::kV2 || num_slots < 0 ||
service_id_bloom_filter.size() != kServiceIdBloomFilterLength ||
advertisement_hash.size() != kAdvertisementHashLength) {
return;
@@ -86,7 +86,7 @@ BleAdvertisementHeader::BleAdvertisementHeader(
((version_and_num_slots_byte & kExtendedAdvertismentBitMask) >> 4) == 1;
// The lower 4 bits are supposed to be the number of slots.
num_slots_ = static_cast<int>(version_and_num_slots_byte & kNumSlotsBitmask);
if (num_slots_ <= 0) {
if (num_slots_ < 0) {
version_ = Version::kUndefined;
return;
}
@@ -63,12 +63,25 @@ TEST(BleAdvertisementHeaderTest, ConstructionFailsWithBadVersion) {
EXPECT_FALSE(ble_advertisement_header.IsValid());
}
TEST(BleAdvertisementHeaderTest, ConstructionFailsWitZeroNumSlot) {
TEST(BleAdvertisementHeaderTest, ConstructionSucceedsWithZeroNumSlot) {
int num_slot = 0;
ByteArray service_id_bloom_filter{std::string(kServiceIDBloomFilter)};
ByteArray advertisement_hash{std::string(kAdvertisementHash)};
BleAdvertisementHeader ble_advertisement_header{
kVersion, false, num_slot, service_id_bloom_filter,
advertisement_hash, kPsmValue};
EXPECT_TRUE(ble_advertisement_header.IsValid());
}
TEST(BleAdvertisementHeaderTest, ConstructionFailsWithNegativeNumSlot) {
int num_slot = -1;
ByteArray service_id_bloom_filter{std::string(kServiceIDBloomFilter)};
ByteArray advertisement_hash{std::string(kAdvertisementHash)};
BleAdvertisementHeader ble_advertisement_header{
kVersion, false, num_slot, service_id_bloom_filter,
advertisement_hash, kPsmValue};