46 std::memset(u.
u128, 0,
sizeof(u.
u128));
54 std::memcpy(u.
u128, v, 16);
59 if (
type != other.
type)
return false;
61 return std::memcmp(
u128, other.
u128, 16) == 0;
70 constexpr uint8_t
READ = 0x02;
81 constexpr uint8_t
READ = 0x01;
91 const uint8_t* data, uint16_t len)>;
97 uint8_t* buf, uint16_t* len)>;
252 (void)out; (void)maxCount;
296 const uint8_t* data, uint16_t len) {
297 (void)companyId; (void)data; (void)len;
328 virtual bool startScan(uint32_t durationMs = 5000,
bool keepAdvertising =
false) {
329 (void)durationMs; (void)keepAdvertising;
return false;
400 (void)connHandle; (void)accept;
438 virtual bool getPeerIdAddr(uint16_t connHandle, uint8_t addr[6], uint8_t* addrType)
const {
439 (void)connHandle; (void)addr; (void)addrType;
return false;
484 virtual void forgetBond(
const uint8_t addr[6], uint8_t addrType) {
485 (void)addr; (void)addrType;
500 bool pluginReserved =
false) {
501 (void)service; (void)pluginReserved;
526 const uint8_t* data, uint16_t len) {
527 (void)connHandle; (void)attrHandle; (void)data; (void)len;
540 const uint8_t* data, uint16_t len) {
541 (void)connHandle; (void)attrHandle; (void)data; (void)len;
549 virtual uint16_t
getMtu()
const {
return 20; }
559 virtual bool connect(
const uint8_t* addr, uint8_t addrType = 0) {
560 (void)addr; (void)addrType;
578 (void)connHandle; (void)uuid;
592 const uint8_t* data, uint16_t len,
593 bool withResponse =
true) {
594 (void)connHandle; (void)attrHandle; (void)data; (void)len; (void)withResponse;
605 (void)connHandle; (void)attrHandle;
616 (void)connHandle; (void)cccdHandle;
632 (void)connHandle; (void)valueHandle;
678 const uint8_t* data, uint16_t len)>;
685 const uint8_t* data, uint16_t len)>;
751 uint16_t* companyId,
const uint8_t** data, uint8_t* dataLen);
758 const uint8_t uuid128[16]);
764 bool findName(
const uint8_t* advData, uint8_t len,
765 char*
name, uint8_t nameMaxLen);
char name[cdc::hal::ISecureElement::RMEM_NAME_LEN]
std::function< void(uint16_t connHandle)> ConnectionCallback
virtual void setCharacteristicReadCallback(CharacteristicReadCallback cb)
virtual void removeNumericComparisonCallback(ListenerToken token)
virtual bool readCharacteristic(uint16_t connHandle, uint16_t attrHandle)
std::function< void(uint32_t passkey)> PasskeyCallback
virtual void disconnectHandle(uint16_t connHandle)
virtual bool connect(const uint8_t *addr, uint8_t addrType=0)
virtual void removeDisconnectionCallback(ListenerToken token)
virtual ListenerToken addDisconnectionCallback(DisconnectionCallback cb)
virtual ListenerToken addWriteCompleteCallback(WriteCompleteCallback cb)
virtual ListenerToken addCharacteristicReadCallback(CharacteristicReadCallback cb)
virtual void removeEncryptionChangeCallback(ListenerToken token)
virtual bool enableNotifications(uint16_t connHandle, uint16_t cccdHandle)
virtual const char * getDeviceName() const =0
virtual ListenerToken addServiceDiscoveryCallback(ServiceDiscoveryCallback cb)
virtual bool getMacAddress(uint8_t *mac) const =0
virtual bool addAdvertisingUuid(const BleUuid &uuid)
std::function< void(uint16_t connHandle, int status)> EncChangeCallback
static constexpr uint8_t MAX_SCAN_RESULTS
virtual ListenerToken addNotificationCallback(NotificationCallback cb)
virtual void cancelConnect()
std::function< void(uint16_t connHandle, uint16_t attrHandle, const uint8_t *data, uint16_t len)> CharacteristicReadCallback
virtual bool getPeerIdAddr(uint16_t connHandle, uint8_t addr[6], uint8_t *addrType) const
virtual void removeNotificationCallback(ListenerToken token)
virtual void removeCharacteristicReadCallback(ListenerToken token)
virtual bool setAdvertisingManufacturerData(uint16_t companyId, const uint8_t *data, uint16_t len)
virtual void removeAdvertisingUuid(const BleUuid &uuid)
virtual bool getConnectedDeviceName(char *buf, size_t bufLen) const
std::function< void(bool success)> AuthCompleteCallback
virtual bool unregisterGattService(const BleUuid &serviceUuid)
std::function< void(uint16_t connHandle, const DiscoveredService *service, bool complete)> ServiceDiscoveryCallback
virtual void removeServiceDiscoveryCallback(ListenerToken token)
virtual bool startScan(uint32_t durationMs=5000, bool keepAdvertising=false)
std::function< void(uint16_t connHandle, uint32_t passkey)> NumericComparisonCallback
virtual uint16_t getMtu() const
virtual void forgetBond(const uint8_t addr[6], uint8_t addrType)
virtual uint8_t getBondedDeviceCount() const
virtual void removeWriteCompleteCallback(ListenerToken token)
virtual void setNumericComparisonCallback(NumericComparisonCallback cb)
virtual ListenerToken addConnectionCallback(ConnectionCallback cb)
static constexpr ListenerToken INVALID_LISTENER
virtual void startAdvertising()
virtual bool isEnabled() const =0
virtual void clearAdvertisingManufacturerData()
virtual void setWriteCompleteCallback(WriteCompleteCallback cb)
virtual bool isConnected() const =0
virtual void setNotificationCallback(NotificationCallback cb)
virtual void setDeviceName(const char *name)=0
virtual uint16_t getConnectionHandle() const
virtual void removeConnectionCallback(ListenerToken token)
virtual void clearAllBonds()
static constexpr uint8_t MAX_BONDED_DEVICES
std::function< void(uint16_t connHandle, int reason)> DisconnectionCallback
virtual bool discoverServiceByUuid(uint16_t connHandle, const BleUuid &uuid)
virtual ListenerToken addEncryptionChangeCallback(EncChangeCallback cb)
virtual uint8_t getScanResults(BleScanResult *results, uint8_t maxResults)
virtual ListenerToken addNumericComparisonCallback(NumericComparisonCallback cb)
virtual bool subscribeToCharacteristic(uint16_t connHandle, uint16_t valueHandle)
virtual bool sendIndication(uint16_t connHandle, uint16_t attrHandle, const uint8_t *data, uint16_t len)
virtual void respondToNumericComparison(uint16_t connHandle, bool accept)
virtual uint8_t getBondedDevices(BleBondInfo *out, uint8_t maxCount) const
virtual bool writeCharacteristic(uint16_t connHandle, uint16_t attrHandle, const uint8_t *data, uint16_t len, bool withResponse=true)
static constexpr uint8_t MAX_CHARS_PER_SERVICE
virtual void setAppearance(uint16_t appearance)
virtual void setServiceDiscoveryCallback(ServiceDiscoveryCallback cb)
virtual bool initiateSecurity(uint16_t connHandle)
virtual ~IBluetoothController()=default
virtual bool registerGattService(const GattServiceDef &service, bool pluginReserved=false)
std::function< void(uint16_t connHandle, uint16_t attrHandle, const uint8_t *data, uint16_t len)> NotificationCallback
virtual void disconnect()=0
virtual void notifySystemReady()
Signals that system startup is complete.
virtual int8_t getRssi() const =0
virtual bool sendNotification(uint16_t connHandle, uint16_t attrHandle, const uint8_t *data, uint16_t len)
virtual bool isAdvertising() const
virtual bool isScanComplete() const
static constexpr uint8_t MAX_REGISTERED_SERVICES
virtual void stopAdvertising()
std::function< void(uint16_t connHandle, uint16_t attrHandle, int status)> WriteCompleteCallback
virtual void setPasskeyCallback(PasskeyCallback cb)
virtual void setAuthCompleteCallback(AuthCompleteCallback cb)
bool findServiceUuid128(const uint8_t *advData, uint8_t len, const uint8_t uuid128[16])
Checks whether a specific 128-bit service UUID is present in AD structures.
bool findManufacturerData(const uint8_t *advData, uint8_t len, uint16_t *companyId, const uint8_t **data, uint8_t *dataLen)
Extracts manufacturer-specific AD payload and company identifier.
bool findName(const uint8_t *advData, uint8_t len, char *name, uint8_t nameMaxLen)
Extracts local device name from advertising data.
constexpr uint8_t READ_ENC
constexpr uint8_t WRITE_ENC
constexpr uint8_t INDICATE
constexpr uint8_t WRITE_NO_RSP
std::function< int(uint16_t connHandle, uint16_t attrHandle, uint8_t *buf, uint16_t *len)> GattReadCallback
constexpr ListenerToken INVALID_LISTENER
IBluetoothController * getBluetoothControllerInstance()
Returns singleton Bluetooth stub when NimBLE is unavailable.
std::function< int(uint16_t connHandle, uint16_t attrHandle, const uint8_t *data, uint16_t len)> GattWriteCallback
IBluetoothController::ListenerToken ListenerToken
static BleUuid from16(uint16_t v)
static BleUuid from128(const uint8_t v[16])
bool operator==(const BleUuid &other) const
GattWriteCallback onWrite
const GattDescriptor * descriptors
uint8_t numCharacteristics
GattCharacteristic * characteristics
DiscoveredCharacteristic characteristics[MAX_DISCOVERED_CHARS]
uint8_t numCharacteristics
static constexpr uint8_t MAX_DISCOVERED_CHARS