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)>;
242 (void)out; (void)maxCount;
286 const uint8_t* data, uint16_t len) {
287 (void)companyId; (void)data; (void)len;
318 virtual bool startScan(uint32_t durationMs = 5000,
bool keepAdvertising =
false) {
319 (void)durationMs; (void)keepAdvertising;
return false;
390 (void)connHandle; (void)accept;
428 virtual bool getPeerIdAddr(uint16_t connHandle, uint8_t addr[6], uint8_t* addrType)
const {
429 (void)connHandle; (void)addr; (void)addrType;
return false;
474 virtual void forgetBond(
const uint8_t addr[6], uint8_t addrType) {
475 (void)addr; (void)addrType;
490 bool pluginReserved =
false) {
491 (void)service; (void)pluginReserved;
516 const uint8_t* data, uint16_t len) {
517 (void)connHandle; (void)attrHandle; (void)data; (void)len;
530 const uint8_t* data, uint16_t len) {
531 (void)connHandle; (void)attrHandle; (void)data; (void)len;
539 virtual uint16_t
getMtu()
const {
return 20; }
549 virtual bool connect(
const uint8_t* addr, uint8_t addrType = 0) {
550 (void)addr; (void)addrType;
568 (void)connHandle; (void)uuid;
582 const uint8_t* data, uint16_t len,
583 bool withResponse =
true) {
584 (void)connHandle; (void)attrHandle; (void)data; (void)len; (void)withResponse;
595 (void)connHandle; (void)attrHandle;
606 (void)connHandle; (void)cccdHandle;
652 const uint8_t* data, uint16_t len)>;
659 const uint8_t* data, uint16_t len)>;
725 uint16_t* companyId,
const uint8_t** data, uint8_t* dataLen);
732 const uint8_t uuid128[16]);
738 bool findName(
const uint8_t* advData, uint8_t len,
739 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 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 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