44 static constexpr uint8_t kMaxSevenBitAddress = (1 << 7) - 1;
45 static constexpr uint16_t kMaxTenBitAddress = (1 << 10) - 1;
58 template <u
int16_t kAddress>
60 static_assert(kAddress <= kMaxTenBitAddress);
61 return Address(kAddress, Mode::kTenBit, kAlreadyCheckedAddress);
76 return Address(address, Mode::kTenBit);
91 template <u
int8_t kAddress>
93 static_assert(kAddress <= kMaxSevenBitAddress);
94 return Address(kAddress, Mode::kSevenBit, kAlreadyCheckedAddress);
109 return Address(address, Mode::kSevenBit);
137 [[deprecated(
"Use one of the factory methods above to construct safely.")]]
151 [[deprecated(
"Use GetAddress() and IsTenBit() as appropriate.")]]
173 constexpr bool IsTenBit()
const {
return mode_ == Mode::kTenBit; }
176 enum class Mode : uint8_t {
181 Address(uint16_t address, Mode mode);
183 enum AlreadyCheckedAddress { kAlreadyCheckedAddress };
184 constexpr Address(uint16_t address, Mode mode, AlreadyCheckedAddress)
185 : address_(address), mode_(mode) {}
187 uint16_t address_ : 10;
193 return a1.address_ == a2.address_ && a1.mode_ == a2.mode_;
static constexpr Address SevenBit()
Definition: address.h:92
uint16_t GetTenBit() const
Definition: address.h:152
uint16_t GetAddress() const
Definition: address.h:162
uint8_t GetSevenBit() const
Address(uint16_t address)
constexpr bool IsTenBit() const
Definition: address.h:173
friend bool operator==(const Address &a1, const Address &a2)
Definition: address.h:192
bool operator==(const Address &a1, const Address &a2)
Definition: address.h:192
static Address SevenBit(uint16_t address)
Definition: address.h:108
static Address TenBit(uint16_t address)
Definition: address.h:75
static constexpr Address TenBit()
Definition: address.h:59
Cross-platform I2C library.
Definition: address.h:19