ELEC-C7222
Libraries for ELEC C7222 Course Work
Loading...
Searching...
No Matches
c7222 Namespace Reference

C7222 course abstractions namespace. More...

Classes

class  AdvertisementData
 Generic advertisement data structure builder. More...
 
class  AdvertisementDataBuilder
 Builder for assembling a complete advertising payload. More...
 
class  Attribute
 ATT attribute wrapper with BTstack-compatible fields. More...
 
class  AttributeServer
 Encapsulates the ATT attribute server for the Pico W BLE stack. More...
 
class  Ble
 Singleton entry point for BLE configuration and events. More...
 
class  BleAddress
 BLE address container with an associated address type. More...
 
class  Button
 Input-only GPIO wrapper intended for push-buttons. More...
 
class  ButtonEvent
 Thread-safe event wrapper for button IRQ notifications. More...
 
class  Characteristic
 Represents a GATT Characteristic with its declaration, value, and descriptors. More...
 
class  CopyableOnly
 Convenience base that allows copy but forbids move. More...
 
class  FreeRtosBinarySemaphore
 Ownership-based wrapper for a FreeRTOS-style binary semaphore. More...
 
class  FreeRtosCountingSemaphore
 Ownership-based wrapper for a FreeRTOS-style counting semaphore. More...
 
class  FreeRtosCriticalSection
 Critical-section wrapper with destructor-based exit cleanup. More...
 
class  FreeRtosEventGroup
 Ownership-based wrapper for an event bit group. More...
 
class  FreeRtosMessageBuffer
 Ownership-based wrapper for discrete message buffering. More...
 
class  FreeRtosMutex
 Ownership-based wrapper for a standard mutex with destructor cleanup. More...
 
class  FreeRtosQueue
 Ownership-based wrapper for a fixed-size item queue. More...
 
class  FreeRtosRecursiveMutex
 Ownership-based wrapper for a recursive mutex with destructor cleanup. More...
 
class  FreeRtosStreamBuffer
 Ownership-based wrapper for byte-stream buffering. More...
 
class  FreeRtosTask
 Ownership-based wrapper for a task/thread execution object. More...
 
class  FreeRtosTaskNotification
 Utility interface for direct task notifications. More...
 
class  FreeRtosTimer
 Ownership-based C++ wrapper for FreeRTOS software timers. More...
 
class  Gap
 Manages Generic Access Profile (GAP) functionality for BLE. More...
 
class  GpioIn
 GPIO input-only wrapper with pull configuration and optional IRQ. More...
 
class  GpioOut
 GPIO output-only wrapper with output configuration and drive strength. More...
 
class  Led
 Output-only GPIO wrapper intended for LEDs. More...
 
class  MovableOnly
 Convenience base that allows move but forbids copy. More...
 
class  NonCopyable
 Disable copy operations while keeping move operations enabled. More...
 
class  NonCopyableNonMovable
 Disable both copy and move operations. More...
 
class  NonMovable
 Disable move operations while keeping copy operations enabled. More...
 
class  OnBoardLED
 Simple on-board LED controller. More...
 
class  OnChipTemperatureSensor
 Reads the RP2040 on-chip temperature sensor via the ADC. More...
 
class  PicoWBoard
 Board-level convenience wrapper for the C7222 Pico W board. More...
 
class  Platform
 Singleton access to platform-specific devices and initialization. More...
 
class  PwmOut
 Output-only PWM wrapper with period and duty configuration. More...
 
class  SafeLed
 LED wrapper that prevents simultaneous control from multiple threads. More...
 
class  SecurityManager
 Manages BLE security configuration and pairing-related events. More...
 
class  Service
 Represents a GATT Service with its characteristics and included services. More...
 
class  Uuid
 UUID storage for 16-bit and 128-bit UUIDs. More...
 

Typedefs

using ConnectionHandle = uint16_t
 

Enumerations

enum class  BleError : int {
  kSuccess , kUnknownHciCommand , kUnknownConnectionIdentifier , kHardwareFailure ,
  kPageTimeout , kAuthenticationFailure , kPinOrKeyMissing , kMemoryCapacityExceeded ,
  kConnectionTimeout , kConnectionLimitExceeded , kSynchronousConnectionLimitToADeviceExceeded , kAclConnectionAlreadyExists ,
  kCommandDisallowed , kConnectionRejectedDueToLimitedResources , kConnectionRejectedDueToSecurityReasons , kConnectionRejectedDueToUnacceptableBdAddr ,
  kUnsupportedFeatureOrParameterValue , kInvalidHciCommandParameters , kRemoteUserTerminatedConnection , kConnectionAcceptTimeoutExceeded ,
  kRemoteDeviceTerminatedConnectionDueToLowResources , kRemoteDeviceTerminatedConnectionDueToPowerOff , kConnectionTerminatedByLocalHost , kRepeatedAttempts ,
  kPairingNotAllowed , kUnknownLmpPdu , kUnsupportedRemoteFeatureUnsupportedLmpFeature , kScoOffsetRejected ,
  kScoIntervalRejected , kScoAirModeRejected , kInvalidLmpParametersInvalidLlParameters , kUnspecifiedError ,
  kUnsupportedLmpParameterValueUnsupportedLlParameterValue , kRoleChangeNotAllowed , kLmpResponseTimeoutLlResponseTimeout , kLmpErrorTransactionCollision ,
  kLmpPduNotAllowed , kEncryptionModeNotAcceptable , kLinkKeyCannotBeChanged , kRequestedQosNotSupported ,
  kInstantPassed , kPairingWithUnitKeyNotSupported , kDifferentTransactionCollision , kReserved ,
  kQosUnacceptableParameter , kQosRejected , kChannelClassificationNotSupported , kInsufficientSecurity ,
  kParameterOutOfMandatoryRange , kRoleSwitchPending , kReservedSlotViolation , kRoleSwitchFailed ,
  kExtendedInquiryResponseTooLarge , kSecureSimplePairingNotSupportedByHost , kHostBusyPairing , kConnectionRejectedDueToNoSuitableChannelFound ,
  kControllerBusy , kUnacceptableConnectionParameters , kDirectedAdvertisingTimeout , kConnectionTerminatedDueToMicFailure ,
  kConnectionFailedToBeEstablished , kMacConnectionFailed , kCoarseClockAdjustmentRejectedButWillTryToAdjustUsingClockDragging , kBtstackConnectionToBtdaemonFailed ,
  kBtstackActivationFailedSystemBluetooth , kBtstackActivationPoweronFailed , kBtstackActivationFailedUnknown , kBtstackNotActivated ,
  kBtstackBusy , kBtstackMemoryAllocFailed , kBtstackAclBuffersFull , kL2capCommandRejectReasonCommandNotUnderstood ,
  kL2capCommandRejectReasonSignalingMtuExceeded , kL2capCommandRejectReasonInvalidCidInRequest , kL2capConnectionResponseResultSuccessful , kL2capConnectionResponseResultPending ,
  kL2capConnectionResponseResultRefusedPsm , kL2capConnectionResponseResultRefusedSecurity , kL2capConnectionResponseResultRefusedResources , kL2capConnectionResponseResultErtmNotSupported ,
  kL2capConnectionResponseResultRtxTimeout , kL2capConnectionBasebandDisconnect , kL2capServiceAlreadyRegistered , kL2capDataLenExceedsRemoteMtu ,
  kL2capServiceDoesNotExist , kL2capLocalCidDoesNotExist , kL2capConnectionResponseUnknownError , kRfcommMultiplexerStopped ,
  kRfcommChannelAlreadyRegistered , kRfcommNoOutgoingCredits , kRfcommAggregateFlowOff , kRfcommDataLenExceedsMtu ,
  kHfpRemoteRejectsAudioConnection , kSdpHandleAlreadyRegistered , kSdpQueryIncomplete , kSdpServiceNotFound ,
  kSdpHandleInvalid , kSdpQueryBusy , kAttHandleValueIndicationInProgress , kAttHandleValueIndicationTimeout ,
  kAttHandleValueIndicationDisconnect , kAttErrorReadNotPermitted , kAttErrorWriteNotPermitted , kAttErrorInsufficientAuthentication ,
  kAttErrorInsufficientAuthorization , kAttErrorInvalidAttrValueLength , kAttErrorInsufficientEncryption , kGattClientNotConnected ,
  kGattClientBusy , kGattClientInWrongState , kGattClientDifferentContextForAddressAlreadyExists , kGattClientValueTooLong ,
  kGattClientCharacteristicNotificationNotSupported , kGattClientCharacteristicIndicationNotSupported , kBnepServiceAlreadyRegistered , kBnepChannelNotConnected ,
  kBnepDataLenExceedsMtu , kBnepSetupConnectionError , kObexUnknownError , kObexConnectFailed ,
  kObexDisconnected , kObexNotFound , kObexNotAcceptable , kObexAborted ,
  kMeshErrorAppkeyIndexInvalid
}
 BLE error codes used across HCI/L2CAP/ATT/GATT and BTstack helpers. More...
 
enum class  AdvertisementDataType : uint8_t {
  kFlags = 0x01 , kIncompleteList16BitUuid = 0x02 , kCompleteList16BitUuid = 0x03 , kShortenedLocalName = 0x08 ,
  kCompleteLocalName = 0x09 , kTxPowerLevel = 0x0A , kSlaveConnectionIntervalRange = 0x12 , kServiceData16BitUuid = 0x16 ,
  kManufacturerSpecific = 0xFF
}
 BLE GAP advertisement data types. More...
 
enum class  GpioPullMode { None , PullUp , PullDown }
 GPIO pull configuration. More...
 
enum class  GpioOutputType { HighZ , PushPull , OpenDrain }
 GPIO output type. More...
 
enum class  GpioDriveStrength { mA2 , mA4 , mA8 , mA12 }
 GPIO drive strength. More...
 
enum class  GpioInputEvent : uint32_t {
  None = 0x00 , LevelLow = 0x01 , LevelHigh = 0x02 , BothLevels = 0x03 ,
  FallingEdge = 0x04 , RisingEdge = 0x08 , BothEdges = 0x0c , All = 0x0f
}
 GPIO input event bitmask for IRQ configuration. More...
 

Functions

std::ostream & operator<< (std::ostream &os, const BleAddress &addr)
 
std::ostream & operator<< (std::ostream &os, BleError error)
 Stream output helper for BleError.
 
std::vector< uint8_t > operator+ (const AdvertisementData &lhs, const AdvertisementData &rhs)
 Concatenate two AD structures into a raw byte vector.
 
std::ostream & operator<< (std::ostream &os, const Attribute &attr)
 Stream insertion operator for Attribute. Outputs the attribute handle, UUID, and parsed properties flags.
 
constexpr uint16_t operator| (Attribute::Properties lhs, Attribute::Properties rhs)
 Bitwise OR for two Properties values.
 
constexpr uint16_t operator& (Attribute::Properties lhs, Attribute::Properties rhs)
 Bitwise AND for two Properties values.
 
constexpr uint16_t operator^ (Attribute::Properties lhs, Attribute::Properties rhs)
 Bitwise XOR for two Properties values.
 
constexpr uint16_t operator~ (Attribute::Properties value)
 Bitwise NOT for a Properties value.
 
constexpr uint16_t operator|= (uint16_t &lhs, Attribute::Properties rhs)
 Bitwise OR assignment: uint16_t |= Properties.
 
constexpr uint16_t operator&= (uint16_t &lhs, Attribute::Properties rhs)
 Bitwise AND assignment: uint16_t &= Properties.
 
constexpr uint16_t operator^= (uint16_t &lhs, Attribute::Properties rhs)
 Bitwise XOR assignment: uint16_t ^= Properties.
 
constexpr uint16_t operator| (uint16_t lhs, Attribute::Properties rhs)
 Bitwise OR: uint16_t | Properties. Enables mixing uint16_t with Properties in either operand order.
 
constexpr uint16_t operator& (uint16_t lhs, Attribute::Properties rhs)
 Bitwise AND: uint16_t & Properties.
 
constexpr uint16_t operator^ (uint16_t lhs, Attribute::Properties rhs)
 Bitwise XOR: uint16_t ^ Properties.
 
constexpr uint16_t operator| (Attribute::Properties lhs, uint16_t rhs)
 Bitwise OR: Properties | uint16_t.
 
constexpr uint16_t operator& (Attribute::Properties lhs, uint16_t rhs)
 Bitwise AND: Properties & uint16_t.
 
constexpr uint16_t operator^ (Attribute::Properties lhs, uint16_t rhs)
 Bitwise XOR: Properties ^ uint16_t.
 
constexpr Characteristic::Properties operator| (Characteristic::Properties lhs, Characteristic::Properties rhs) noexcept
 Bitwise OR operator for Characteristic::Properties.
 
constexpr Characteristic::Properties operator& (Characteristic::Properties lhs, Characteristic::Properties rhs) noexcept
 Bitwise AND operator for Characteristic::Properties.
 
constexpr Characteristic::Properties operator^ (Characteristic::Properties lhs, Characteristic::Properties rhs) noexcept
 Bitwise XOR operator for Characteristic::Properties.
 
constexpr Characteristic::Properties operator~ (Characteristic::Properties prop) noexcept
 Bitwise NOT operator for Characteristic::Properties.
 
constexpr Characteristic::Propertiesoperator|= (Characteristic::Properties &lhs, Characteristic::Properties rhs) noexcept
 Bitwise OR assignment operator for Characteristic::Properties.
 
constexpr Characteristic::Propertiesoperator&= (Characteristic::Properties &lhs, Characteristic::Properties rhs) noexcept
 Bitwise AND assignment operator for Characteristic::Properties.
 
constexpr Characteristic::Propertiesoperator^= (Characteristic::Properties &lhs, Characteristic::Properties rhs) noexcept
 Bitwise XOR assignment operator for Characteristic::Properties.
 
std::ostream & operator<< (std::ostream &os, Characteristic::Properties props)
 Stream output operator for Characteristic::Properties. Outputs a human-readable list of properties (e.g., "Read | Write | Notify").
 
std::ostream & operator<< (std::ostream &os, const Characteristic &characteristic)
 Stream output operator for Characteristic. Outputs comprehensive information about the characteristic including UUID, properties, handles, value, and all descriptors.
 
constexpr Characteristic::CCCDProperties operator| (Characteristic::CCCDProperties lhs, Characteristic::CCCDProperties rhs) noexcept
 
constexpr Characteristic::CCCDProperties operator& (Characteristic::CCCDProperties lhs, Characteristic::CCCDProperties rhs) noexcept
 
constexpr Characteristic::SCCDProperties operator| (Characteristic::SCCDProperties lhs, Characteristic::SCCDProperties rhs) noexcept
 
constexpr Characteristic::SCCDProperties operator& (Characteristic::SCCDProperties lhs, Characteristic::SCCDProperties rhs) noexcept
 
constexpr Characteristic::ExtendedProperties operator| (Characteristic::ExtendedProperties lhs, Characteristic::ExtendedProperties rhs) noexcept
 
constexpr Characteristic::ExtendedProperties operator& (Characteristic::ExtendedProperties lhs, Characteristic::ExtendedProperties rhs) noexcept
 
std::ostream & operator<< (std::ostream &os, const Uuid &uuid)
 Prints the UUID to a stream.
 
constexpr SecurityManager::AuthenticationRequirement operator| (SecurityManager::AuthenticationRequirement lhs, SecurityManager::AuthenticationRequirement rhs)
 
constexpr SecurityManager::AuthenticationRequirement operator& (SecurityManager::AuthenticationRequirement lhs, SecurityManager::AuthenticationRequirement rhs)
 
constexpr SecurityManager::AuthenticationRequirement operator^ (SecurityManager::AuthenticationRequirement lhs, SecurityManager::AuthenticationRequirement rhs)
 
constexpr SecurityManager::AuthenticationRequirement operator~ (SecurityManager::AuthenticationRequirement value)
 
SecurityManager::AuthenticationRequirementoperator|= (SecurityManager::AuthenticationRequirement &lhs, SecurityManager::AuthenticationRequirement rhs)
 
SecurityManager::AuthenticationRequirementoperator&= (SecurityManager::AuthenticationRequirement &lhs, SecurityManager::AuthenticationRequirement rhs)
 
SecurityManager::AuthenticationRequirementoperator^= (SecurityManager::AuthenticationRequirement &lhs, SecurityManager::AuthenticationRequirement rhs)
 
std::ostream & operator<< (std::ostream &os, const SecurityManager &sm)
 Stream insertion operator for SecurityManager state and configuration.
 
void FreeRtosTimerCallback (void *timer)
 Internal use only. This function is invoked as a callback when the FreeRTOS timer expires.
 

Variables

constexpr size_t kAdvertisementDataLegacyMaxSize = 31
 Maximum length for legacy advertising data (length + type + value).
 
constexpr size_t kAdvertisementDataStructHeaderOverhead = 2
 Overhead bytes for an AD structure (length + type).
 

Detailed Description

C7222 course abstractions namespace.

This namespace is shared by all hardware abstractions used in the course.

Typedef Documentation

◆ ConnectionHandle

using c7222::ConnectionHandle = typedef uint16_t

Enumeration Type Documentation

◆ AdvertisementDataType

enum class c7222::AdvertisementDataType : uint8_t
strong

BLE GAP advertisement data types.

Enumerator
kFlags 
kIncompleteList16BitUuid 
kCompleteList16BitUuid 
kShortenedLocalName 
kCompleteLocalName 
kTxPowerLevel 
kSlaveConnectionIntervalRange 
kServiceData16BitUuid 
kManufacturerSpecific 

◆ BleError

enum class c7222::BleError : int
strong

BLE error codes used across HCI/L2CAP/ATT/GATT and BTstack helpers.

Values are aligned with BTstack and Bluetooth error/status codes where applicable.

Enumerator
kSuccess 

Generic HCI status and controller errors.

kUnknownHciCommand 
kUnknownConnectionIdentifier 
kHardwareFailure 
kPageTimeout 
kAuthenticationFailure 
kPinOrKeyMissing 
kMemoryCapacityExceeded 
kConnectionTimeout 
kConnectionLimitExceeded 
kSynchronousConnectionLimitToADeviceExceeded 
kAclConnectionAlreadyExists 
kCommandDisallowed 
kConnectionRejectedDueToLimitedResources 
kConnectionRejectedDueToSecurityReasons 
kConnectionRejectedDueToUnacceptableBdAddr 
kUnsupportedFeatureOrParameterValue 
kInvalidHciCommandParameters 
kRemoteUserTerminatedConnection 
kConnectionAcceptTimeoutExceeded 
kRemoteDeviceTerminatedConnectionDueToLowResources 
kRemoteDeviceTerminatedConnectionDueToPowerOff 
kConnectionTerminatedByLocalHost 
kRepeatedAttempts 
kPairingNotAllowed 
kUnknownLmpPdu 
kUnsupportedRemoteFeatureUnsupportedLmpFeature 
kScoOffsetRejected 
kScoIntervalRejected 
kScoAirModeRejected 
kInvalidLmpParametersInvalidLlParameters 
kUnspecifiedError 
kUnsupportedLmpParameterValueUnsupportedLlParameterValue 
kRoleChangeNotAllowed 
kLmpResponseTimeoutLlResponseTimeout 
kLmpErrorTransactionCollision 
kLmpPduNotAllowed 
kEncryptionModeNotAcceptable 
kLinkKeyCannotBeChanged 
kRequestedQosNotSupported 
kInstantPassed 
kPairingWithUnitKeyNotSupported 
kDifferentTransactionCollision 
kReserved 
kQosUnacceptableParameter 
kQosRejected 
kChannelClassificationNotSupported 
kInsufficientSecurity 
kParameterOutOfMandatoryRange 
kRoleSwitchPending 
kReservedSlotViolation 
kRoleSwitchFailed 
kExtendedInquiryResponseTooLarge 
kSecureSimplePairingNotSupportedByHost 
kHostBusyPairing 
kConnectionRejectedDueToNoSuitableChannelFound 
kControllerBusy 
kUnacceptableConnectionParameters 
kDirectedAdvertisingTimeout 
kConnectionTerminatedDueToMicFailure 
kConnectionFailedToBeEstablished 
kMacConnectionFailed 
kCoarseClockAdjustmentRejectedButWillTryToAdjustUsingClockDragging 
kBtstackConnectionToBtdaemonFailed 

BTstack framework errors.

kBtstackActivationFailedSystemBluetooth 
kBtstackActivationPoweronFailed 
kBtstackActivationFailedUnknown 
kBtstackNotActivated 
kBtstackBusy 
kBtstackMemoryAllocFailed 
kBtstackAclBuffersFull 
kL2capCommandRejectReasonCommandNotUnderstood 

L2CAP errors and results.

kL2capCommandRejectReasonSignalingMtuExceeded 
kL2capCommandRejectReasonInvalidCidInRequest 
kL2capConnectionResponseResultSuccessful 
kL2capConnectionResponseResultPending 
kL2capConnectionResponseResultRefusedPsm 
kL2capConnectionResponseResultRefusedSecurity 
kL2capConnectionResponseResultRefusedResources 
kL2capConnectionResponseResultErtmNotSupported 
kL2capConnectionResponseResultRtxTimeout 
kL2capConnectionBasebandDisconnect 
kL2capServiceAlreadyRegistered 
kL2capDataLenExceedsRemoteMtu 
kL2capServiceDoesNotExist 
kL2capLocalCidDoesNotExist 
kL2capConnectionResponseUnknownError 
kRfcommMultiplexerStopped 

RFCOMM errors.

kRfcommChannelAlreadyRegistered 
kRfcommNoOutgoingCredits 
kRfcommAggregateFlowOff 
kRfcommDataLenExceedsMtu 
kHfpRemoteRejectsAudioConnection 

HFP errors.

kSdpHandleAlreadyRegistered 

SDP errors.

kSdpQueryIncomplete 
kSdpServiceNotFound 
kSdpHandleInvalid 
kSdpQueryBusy 
kAttHandleValueIndicationInProgress 

ATT indication flow control errors.

kAttHandleValueIndicationTimeout 
kAttHandleValueIndicationDisconnect 
kAttErrorReadNotPermitted 

ATT Error: Read Not Permitted (0x02 from spec).

kAttErrorWriteNotPermitted 

ATT Error: Write Not Permitted (0x03 from spec).

kAttErrorInsufficientAuthentication 

ATT Error: Insufficient Authentication (0x05 from spec).

kAttErrorInsufficientAuthorization 

ATT Error: Insufficient Authorization (0x08 from spec).

kAttErrorInvalidAttrValueLength 

ATT Error: Invalid Attribute Value Length (0x0D from spec).

kAttErrorInsufficientEncryption 

ATT Error: Insufficient Encryption (0x0F from spec).

kGattClientNotConnected 

GATT client errors.

kGattClientBusy 
kGattClientInWrongState 
kGattClientDifferentContextForAddressAlreadyExists 
kGattClientValueTooLong 
kGattClientCharacteristicNotificationNotSupported 
kGattClientCharacteristicIndicationNotSupported 
kBnepServiceAlreadyRegistered 

BNEP errors.

kBnepChannelNotConnected 
kBnepDataLenExceedsMtu 
kBnepSetupConnectionError 
kObexUnknownError 

OBEX errors.

kObexConnectFailed 
kObexDisconnected 
kObexNotFound 
kObexNotAcceptable 
kObexAborted 
kMeshErrorAppkeyIndexInvalid 

Mesh errors.

◆ GpioDriveStrength

enum class c7222::GpioDriveStrength
strong

GPIO drive strength.

Enumerator
mA2 

2 mA drive.

mA4 

4 mA drive.

mA8 

8 mA drive.

mA12 

12 mA drive.

◆ GpioInputEvent

enum class c7222::GpioInputEvent : uint32_t
strong

GPIO input event bitmask for IRQ configuration.

These values are bit flags and can be OR-ed together. Composite values (BothLevels, BothEdges, All) are provided for convenience.

Enumerator
None 

No events.

LevelLow 

Trigger on low level.

LevelHigh 

Trigger on high level.

BothLevels 

Trigger on low or high level.

FallingEdge 

Trigger on high-to-low edge.

RisingEdge 

Trigger on low-to-high edge.

BothEdges 

Trigger on rising or falling edge.

All 

Trigger on all level and edge events.

◆ GpioOutputType

enum class c7222::GpioOutputType
strong

GPIO output type.

Enumerator
HighZ 

High-impedance (not driven).

PushPull 

Drive high/low actively.

OpenDrain 

Drive low or float.

◆ GpioPullMode

enum class c7222::GpioPullMode
strong

GPIO pull configuration.

Enumerator
None 

Disable pulls.

PullUp 

Enable pull-up.

PullDown 

Enable pull-down.

Function Documentation

◆ FreeRtosTimerCallback()

void c7222::FreeRtosTimerCallback ( void *  timer)

Internal use only. This function is invoked as a callback when the FreeRTOS timer expires.

This function should not be used directly by the user. It is intended to be called by the FreeRTOS timer infrastructure to handle timer expiration events. Ensure that any logic that needs to be executed on timer expiry is encapsulated within the FreeRtosTimer class and its associated callback mechanism.

Parameters
timerA pointer to the timer instance that has expired.

◆ operator&() [1/8]

constexpr uint16_t c7222::operator& ( Attribute::Properties  lhs,
Attribute::Properties  rhs 
)
constexpr

Bitwise AND for two Properties values.

Returns
Result as uint16_t

◆ operator&() [2/8]

constexpr uint16_t c7222::operator& ( Attribute::Properties  lhs,
uint16_t  rhs 
)
constexpr

Bitwise AND: Properties & uint16_t.

◆ operator&() [3/8]

constexpr Characteristic::CCCDProperties c7222::operator& ( Characteristic::CCCDProperties  lhs,
Characteristic::CCCDProperties  rhs 
)
constexprnoexcept

◆ operator&() [4/8]

constexpr Characteristic::ExtendedProperties c7222::operator& ( Characteristic::ExtendedProperties  lhs,
Characteristic::ExtendedProperties  rhs 
)
constexprnoexcept

◆ operator&() [5/8]

constexpr Characteristic::Properties c7222::operator& ( Characteristic::Properties  lhs,
Characteristic::Properties  rhs 
)
constexprnoexcept

Bitwise AND operator for Characteristic::Properties.

Parameters
lhsLeft-hand side operand
rhsRight-hand side operand
Returns
Intersection of properties bitmask

◆ operator&() [6/8]

constexpr Characteristic::SCCDProperties c7222::operator& ( Characteristic::SCCDProperties  lhs,
Characteristic::SCCDProperties  rhs 
)
constexprnoexcept

◆ operator&() [7/8]

◆ operator&() [8/8]

constexpr uint16_t c7222::operator& ( uint16_t  lhs,
Attribute::Properties  rhs 
)
constexpr

Bitwise AND: uint16_t & Properties.

◆ operator&=() [1/3]

constexpr Characteristic::Properties & c7222::operator&= ( Characteristic::Properties lhs,
Characteristic::Properties  rhs 
)
constexprnoexcept

Bitwise AND assignment operator for Characteristic::Properties.

Parameters
lhsLeft-hand side operand (modified)
rhsRight-hand side operand
Returns
Reference to modified lhs

◆ operator&=() [2/3]

◆ operator&=() [3/3]

constexpr uint16_t c7222::operator&= ( uint16_t &  lhs,
Attribute::Properties  rhs 
)
constexpr

Bitwise AND assignment: uint16_t &= Properties.

Returns
Reference to lhs after operation

◆ operator+()

std::vector< uint8_t > c7222::operator+ ( const AdvertisementData lhs,
const AdvertisementData rhs 
)

Concatenate two AD structures into a raw byte vector.

Use this when building a single advertising payload from multiple AdvertisementData objects. The caller is responsible for ensuring the combined size stays within the legacy 31-byte limit.

◆ operator<<() [1/7]

std::ostream & c7222::operator<< ( std::ostream &  os,
BleError  error 
)

Stream output helper for BleError.

◆ operator<<() [2/7]

std::ostream & c7222::operator<< ( std::ostream &  os,
Characteristic::Properties  props 
)

Stream output operator for Characteristic::Properties. Outputs a human-readable list of properties (e.g., "Read | Write | Notify").

Parameters
osOutput stream
propsProperties bitmask
Returns
Reference to the output stream

◆ operator<<() [3/7]

std::ostream & c7222::operator<< ( std::ostream &  os,
const Attribute attr 
)

Stream insertion operator for Attribute. Outputs the attribute handle, UUID, and parsed properties flags.

◆ operator<<() [4/7]

std::ostream & c7222::operator<< ( std::ostream &  os,
const BleAddress addr 
)

◆ operator<<() [5/7]

std::ostream & c7222::operator<< ( std::ostream &  os,
const Characteristic characteristic 
)

Stream output operator for Characteristic. Outputs comprehensive information about the characteristic including UUID, properties, handles, value, and all descriptors.

Stream insertion operator for Characteristic. Outputs the characteristic UUID, properties, security requirements, and descriptors.

Parameters
osOutput stream
characteristicThe characteristic to output
Returns
Reference to the output stream

◆ operator<<() [6/7]

std::ostream & c7222::operator<< ( std::ostream &  os,
const SecurityManager sm 
)

Stream insertion operator for SecurityManager state and configuration.

◆ operator<<() [7/7]

std::ostream & c7222::operator<< ( std::ostream &  os,
const Uuid uuid 
)

Prints the UUID to a stream.

This is the definition corresponding to the friend declaration above.

◆ operator^() [1/5]

constexpr uint16_t c7222::operator^ ( Attribute::Properties  lhs,
Attribute::Properties  rhs 
)
constexpr

Bitwise XOR for two Properties values.

Returns
Result as uint16_t

◆ operator^() [2/5]

constexpr uint16_t c7222::operator^ ( Attribute::Properties  lhs,
uint16_t  rhs 
)
constexpr

Bitwise XOR: Properties ^ uint16_t.

◆ operator^() [3/5]

constexpr Characteristic::Properties c7222::operator^ ( Characteristic::Properties  lhs,
Characteristic::Properties  rhs 
)
constexprnoexcept

Bitwise XOR operator for Characteristic::Properties.

Parameters
lhsLeft-hand side operand
rhsRight-hand side operand
Returns
XOR of properties bitmask

◆ operator^() [4/5]

◆ operator^() [5/5]

constexpr uint16_t c7222::operator^ ( uint16_t  lhs,
Attribute::Properties  rhs 
)
constexpr

Bitwise XOR: uint16_t ^ Properties.

◆ operator^=() [1/3]

constexpr Characteristic::Properties & c7222::operator^= ( Characteristic::Properties lhs,
Characteristic::Properties  rhs 
)
constexprnoexcept

Bitwise XOR assignment operator for Characteristic::Properties.

Parameters
lhsLeft-hand side operand (modified)
rhsRight-hand side operand
Returns
Reference to modified lhs

◆ operator^=() [2/3]

◆ operator^=() [3/3]

constexpr uint16_t c7222::operator^= ( uint16_t &  lhs,
Attribute::Properties  rhs 
)
constexpr

Bitwise XOR assignment: uint16_t ^= Properties.

Returns
Reference to lhs after operation

◆ operator|() [1/8]

constexpr uint16_t c7222::operator| ( Attribute::Properties  lhs,
Attribute::Properties  rhs 
)
constexpr

Bitwise OR for two Properties values.

Returns
Result as uint16_t

◆ operator|() [2/8]

constexpr uint16_t c7222::operator| ( Attribute::Properties  lhs,
uint16_t  rhs 
)
constexpr

Bitwise OR: Properties | uint16_t.

◆ operator|() [3/8]

constexpr Characteristic::CCCDProperties c7222::operator| ( Characteristic::CCCDProperties  lhs,
Characteristic::CCCDProperties  rhs 
)
constexprnoexcept

◆ operator|() [4/8]

constexpr Characteristic::ExtendedProperties c7222::operator| ( Characteristic::ExtendedProperties  lhs,
Characteristic::ExtendedProperties  rhs 
)
constexprnoexcept

◆ operator|() [5/8]

constexpr Characteristic::Properties c7222::operator| ( Characteristic::Properties  lhs,
Characteristic::Properties  rhs 
)
constexprnoexcept

Bitwise OR operator for Characteristic::Properties.

Parameters
lhsLeft-hand side operand
rhsRight-hand side operand
Returns
Combined properties bitmask

◆ operator|() [6/8]

constexpr Characteristic::SCCDProperties c7222::operator| ( Characteristic::SCCDProperties  lhs,
Characteristic::SCCDProperties  rhs 
)
constexprnoexcept

◆ operator|() [7/8]

◆ operator|() [8/8]

constexpr uint16_t c7222::operator| ( uint16_t  lhs,
Attribute::Properties  rhs 
)
constexpr

Bitwise OR: uint16_t | Properties. Enables mixing uint16_t with Properties in either operand order.

◆ operator|=() [1/3]

constexpr Characteristic::Properties & c7222::operator|= ( Characteristic::Properties lhs,
Characteristic::Properties  rhs 
)
constexprnoexcept

Bitwise OR assignment operator for Characteristic::Properties.

Parameters
lhsLeft-hand side operand (modified)
rhsRight-hand side operand
Returns
Reference to modified lhs

◆ operator|=() [2/3]

◆ operator|=() [3/3]

constexpr uint16_t c7222::operator|= ( uint16_t &  lhs,
Attribute::Properties  rhs 
)
constexpr

Bitwise OR assignment: uint16_t |= Properties.

Returns
Reference to lhs after operation

◆ operator~() [1/3]

constexpr uint16_t c7222::operator~ ( Attribute::Properties  value)
constexpr

Bitwise NOT for a Properties value.

Returns
Complement as uint16_t

◆ operator~() [2/3]

constexpr Characteristic::Properties c7222::operator~ ( Characteristic::Properties  prop)
constexprnoexcept

Bitwise NOT operator for Characteristic::Properties.

Parameters
propProperties to invert
Returns
Inverted properties bitmask

◆ operator~() [3/3]

Variable Documentation

◆ kAdvertisementDataLegacyMaxSize

constexpr size_t c7222::kAdvertisementDataLegacyMaxSize = 31
constexpr

Maximum length for legacy advertising data (length + type + value).

◆ kAdvertisementDataStructHeaderOverhead

constexpr size_t c7222::kAdvertisementDataStructHeaderOverhead = 2
constexpr

Overhead bytes for an AD structure (length + type).