Direct-BT v3.2.3-1-g688f983
Direct-BT - Direct Bluetooth Programming.
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
direct_bt Namespace Reference

Namespaces

namespace  BTDeviceRegistry
 Application toolkit providing BT device registration of processed and awaited devices.
 
namespace  BTSecurityRegistry
 Application toolkit providing BT security setup and its device association on a pattern matching basis, i.e.
 
namespace  jni
 Author: Sven Gothel sgoth.nosp@m.el@j.nosp@m.ausof.nosp@m.t.co.nosp@m.m Copyright (c) 2020 Gothel Software e.K.
 

Classes

class  AdapterInfo
 
class  AdapterStatusListener
 BTAdapter status listener for remote BTDevice discovery events: Added, updated and removed; as well as for certain BTAdapter events. More...
 
class  AttElementList
 List of elements. More...
 
class  AttErrorRsp
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.1.1 ATT_ERROR_RSP. More...
 
class  AttException
 
class  AttExchangeMTU
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.2.1 ATT_EXCHANGE_MTU_REQ BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.2.2 ATT_EXCHANGE_MTU_RSP. More...
 
class  AttExeWriteReq
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.6.3 ATT_EXECUTE_WRITE_REQ. More...
 
class  AttExeWriteRsp
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.6.4 ATT_EXECUTE_WRITE_RSP. More...
 
class  AttFindByTypeValueReq
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.3.3 ATT_FIND_BY_TYPE_VALUE_REQ. More...
 
class  AttFindByTypeValueRsp
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.3.4 ATT_FIND_BY_TYPE_VALUE_RSP. More...
 
class  AttFindInfoReq
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.3.1 ATT_FIND_INFORMATION_REQ. More...
 
class  AttFindInfoRsp
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.3.2 ATT_FIND_INFORMATION_RSP. More...
 
class  AttHandleValueCfm
 ATT Protocol PDUs Vol 3, Part F 3.4.7.3. More...
 
class  AttHandleValueRcv
 ATT Protocol PDUs Vol 3, Part F 3.4.7.1 and 3.4.7.2. More...
 
class  AttOpcodeException
 
class  AttPDUMsg
 Handles the Attribute Protocol (ATT) using Protocol Data Unit (PDU) encoded messages over L2CAP channel. More...
 
class  AttPDUUndefined
 Our own pseudo opcode, indicating no ATT PDU message. More...
 
class  AttPrepWrite
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.6.1 ATT_PREPARE_WRITE_REQ BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.6.2 ATT_PREPARE_WRITE_RSP. More...
 
class  AttReadBlobReq
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.4.5 ATT_BLOB_READ_REQ. More...
 
class  AttReadByGroupTypeRsp
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.4.10 ATT_READ_BY_GROUP_TYPE_RSP. More...
 
class  AttReadByNTypeReq
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.4.1 ATT_READ_BY_TYPE_REQ. More...
 
class  AttReadByTypeRsp
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.4.2 ATT_READ_BY_TYPE_RSP. More...
 
class  AttReadNRsp
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.4.4 ATT_READ_RSP BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.4.6 ATT_READ_BLOB_RSP. More...
 
class  AttReadReq
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.4.3 ATT_READ_REQ. More...
 
class  AttValueException
 
class  AttWriteCmd
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.5.3 ATT_WRITE_CMD. More...
 
class  AttWriteReq
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.5.1 ATT_WRITE_REQ. More...
 
class  AttWriteRsp
 BT Core Spec v5.2: Vol 3, Part F ATT: 3.4.5.2 ATT_WRITE_RSP. More...
 
class  BDAddressAndType
 Unique Bluetooth EUI48 address and BDAddressType tuple. More...
 
class  BTAdapter
 BTAdapter represents one local Bluetooth Controller. More...
 
class  BTDevice
 BTDevice represents one remote Bluetooth device. More...
 
class  BTException
 
class  BTGattChar
 Representing a Gatt Characteristic object from the GATTRole::Client perspective. More...
 
class  BTGattCharListener
 BTGattChar event listener for notification and indication events. More...
 
class  BTGattCmd
 Class maps a GATT command and optionally its asynchronous response to a synchronous atomic operation. More...
 
class  BTGattDesc
 Representing a Gatt Characteristic Descriptor object from the GATTRole::Client perspective. More...
 
class  BTGattEnv
 GATT Singleton runtime environment properties. More...
 
class  BTGattHandler
 A thread safe GATT handler associated to one device via one L2CAP connection. More...
 
class  BTGattService
 Representing a Gatt Service object from the GATTRole::Client perspective. More...
 
class  BTManager
 A thread safe singleton handler of the BTAdapter manager, e.g. More...
 
class  BTObject
 
class  ConnectionInfo
 mgmt_addr_info { EUI48, uint8_t type }, int8_t rssi, int8_t tx_power, int8_t max_tx_power; More...
 
class  DBGattChar
 Representing a Gatt Characteristic object from the GATTRole::Server perspective. More...
 
class  DBGattDesc
 Representing a Gatt Characteristic Descriptor object from the GATTRole::Server perspective. More...
 
class  DBGattServer
 Representing a complete list of Gatt Service objects from the GATTRole::Server perspective, i.e. More...
 
class  DBGattService
 Representing a Gatt Service object from the GATTRole::Server perspective. More...
 
class  EInfoReport
 Collection of 'Extended Advertising Data' (EAD), 'Advertising Data' (AD) or 'Extended Inquiry Response' (EIR) information. More...
 
class  GattBatteryServiceSvc
 https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Gatt/Xml/Services/org.bluetooth.service.battery_service.xml More...
 
struct  GattCharacteristicPropertySpec
 
struct  GattCharacteristicSpec
 
struct  GattClientCharacteristicConfigSpec
 
class  GattDeviceInformationSvc
 Device Information is a GATT service. More...
 
class  GattGenericAccessSvc
 Generic Access Service is a mandatory GATT service all peripherals are required to implement. More...
 
struct  GattPeriphalPreferredConnectionParameters
 Peripheral Preferred Connection Parameters is a GATT Characteristic. More...
 
struct  GattPnP_ID
 PnP ID is a GATT Characteristic. More...
 
struct  GattServiceCharacteristic
 
class  GattTemperatureMeasurement
 https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Gatt/Xml/Characteristics/org.bluetooth.characteristic.temperature_measurement.xml More...
 
class  HCIACLData
 BT Core Spec v5.2: Vol 4, Part E HCI: 5.4.2 HCI ACL Data packets. More...
 
class  HCIComm
 Read/Write HCI communication channel. More...
 
class  HCICommand
 BT Core Spec v5.2: Vol 4, Part E HCI: 5.4.1 HCI Command packet. More...
 
class  HCICommandCompleteEvent
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.7.14 Command Complete event. More...
 
class  HCICommandStatusEvent
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.7.15 Command Status event. More...
 
class  HCIDisconnectCmd
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.1.6 Disconnect command. More...
 
class  HCIDisconnectionCompleteEvent
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.7.5 Disconnection Complete event. More...
 
class  HCIEnv
 HCI Singleton runtime environment properties. More...
 
class  HCIEvent
 BT Core Spec v5.2: Vol 4, Part E HCI: 5.4.4 HCI Event packet. More...
 
class  HCIException
 
class  HCIHandler
 A thread safe singleton handler of the HCI control channel to one controller (BT adapter) More...
 
class  HCILEEnableEncryptionCmd
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.8.24 LE Enable Encryption command. More...
 
class  HCILELTKReplyAckCmd
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.8.25 LE Long Term Key Request Reply command. More...
 
class  HCILELTKReplyRejCmd
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.8.26 LE Long Term Key Request Negative Reply command. More...
 
class  HCILELTKReqEvent
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.7.65.5 LE Long Term Key Request event. More...
 
struct  HCILocalVersion
 
class  HCIMetaEvent
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.7.65 LE Meta event. More...
 
class  HCIOpcodeException
 
class  HCIPacket
 BT Core Spec v5.2: Vol 4, Part E HCI: 5.4 Exchange of HCI-specific information. More...
 
class  HCIPacketException
 
class  HCIStatusCodeCategory
 
class  HCIStructCmdCompleteEvtWrap
 Generic HCIEvent wrapper for any HCI IOCTL 'command complete' alike event struct having a HCIStatusCode uint8_t status field. More...
 
class  HCIStructCmdCompleteMetaEvtWrap
 Generic HCIMetaEvent wrapper for any HCI IOCTL 'command complete' alike meta event struct having a HCIStatusCode uint8_t status field. More...
 
class  HCIStructCommand
 Generic HCICommand wrapper for any HCI IOCTL structure. More...
 
struct  l2cap_hdr
 
class  L2CAPClient
 L2CAP read/write communication channel to remote device. More...
 
class  L2CAPComm
 L2CAP client/server socket abstract base class to listen for connecting remote devices. More...
 
class  L2CAPEnv
 L2CAP Singleton runtime environment properties. More...
 
class  L2CAPServer
 L2CAP server socket to listen for connecting remote devices. More...
 
class  ManufactureSpecificData
 
class  MgmtAdapterEventCallback
 
class  MgmtAddDeviceToWhitelistCmd
 mgmt_addr_info { EUI48, uint8_t type }, uint8_t action More...
 
class  MgmtCancelPairDevice
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtCmdAdressInfoMeta
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtCommand
 
struct  MgmtConnParam
 Used in MgmtLoadConnParamCmd and MgmtEvtNewConnectionParam. More...
 
struct  MgmtDefaultParam
 Used in MgmtReadDefaultSysParamCmd and MgmtSetDefaultConnParamCmd. More...
 
class  MgmtDisconnectCmd
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtEnv
 Managment Singleton runtime environment properties. More...
 
class  MgmtEvent
 uint16_t opcode, uint16_t dev-id, uint16_t param_size More...
 
class  MgmtEvtAdapterInfo
 
class  MgmtEvtAdressInfoMeta
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtEvtAuthFailed
 mgmt_addr_info { EUI48, uint8_t type }, uint8_t status More...
 
class  MgmtEvtCmdComplete
 
class  MgmtEvtCmdStatus
 
class  MgmtEvtControllerError
 
class  MgmtEvtDeviceBlocked
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtEvtDeviceConnected
 mgmt_addr_info { EUI48, uint8_t type }, uint32_t flags, uint16_t eir_len; uint8_t *eir More...
 
class  MgmtEvtDeviceConnectFailed
 mgmt_addr_info { EUI48, uint8_t type }, uint8_t status More...
 
class  MgmtEvtDeviceDisconnected
 mgmt_addr_info { EUI48, uint8_t type }, uint8_t reason More...
 
class  MgmtEvtDeviceFound
 mgmt_addr_info { EUI48, uint8_t type }, int8_t rssi, uint32_t flags, uint16_t eir_len; uint8_t *eir More...
 
class  MgmtEvtDeviceUnblocked
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtEvtDeviceUnpaired
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtEvtDeviceWhitelistAdded
 mgmt_addr_info { EUI48, uint8_t type }, uint8_t action More...
 
class  MgmtEvtDeviceWhitelistRemoved
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtEvtDiscovering
 
class  MgmtEvtHCIEncryptionChanged
 mgmt_addr_info { EUI48, uint8_t type }, HCIStatusCode status (1 Octet) uint8_t enc_enabled (1 Octet) More...
 
class  MgmtEvtHCIEncryptionKeyRefreshComplete
 mgmt_addr_info { EUI48, uint8_t type }, HCIStatusCode status (1 Octet) More...
 
class  MgmtEvtHCILEEnableEncryptionCmd
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.8.24 LE Enable Encryption command. More...
 
class  MgmtEvtHCILELTKReplyAckCmd
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.8.25 LE Long Term Key Request Reply command. More...
 
class  MgmtEvtHCILELTKReplyRejCmd
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.8.26 LE Long Term Key Request Negative Reply command. More...
 
class  MgmtEvtHCILELTKReq
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.7.65.5 LE Long Term Key Request event. More...
 
class  MgmtEvtHCILEPhyUpdateComplete
 mgmt_addr_info { EUI48, uint8_t type }, uint8_t Tx (8 Octets) uint8_t Rx (8 Octets) More...
 
class  MgmtEvtHCILERemoteFeatures
 mgmt_addr_info { EUI48, uint8_t type }, uint64_t features (8 Octets) More...
 
class  MgmtEvtLocalNameChanged
 uint8_t name[MGMT_MAX_NAME_LENGTH]; uint8_t short_name[MGMT_MAX_SHORT_NAME_LENGTH]; More...
 
class  MgmtEvtNewConnectionParam
 int8_t store_hint, MgmtConnParam connParam More...
 
class  MgmtEvtNewIdentityResolvingKey
 uint8_t store_hint, EUI48 random_address; MgmtIdentityResolvingKey key More...
 
class  MgmtEvtNewLinkKey
 uint8_t store_hint, MgmtLinkKey key More...
 
class  MgmtEvtNewLongTermKey
 uint8_t store_hint, MgmtLongTermKey key More...
 
class  MgmtEvtNewSettings
 uint32_t settings More...
 
class  MgmtEvtNewSignatureResolvingKey
 uint8_t store_hint, EUI48 random_address; MgmtSignatureResolvingKey key More...
 
class  MgmtEvtPairDeviceComplete
 mgmt_addr_info { EUI48, uint8_t type }, MgmtStatus (1 octet) More...
 
class  MgmtEvtPasskeyNotify
 mgmt_addr_info { EUI48, uint8_t type }, uint32_t passkey uint8_t entered More...
 
class  MgmtEvtPinCodeRequest
 mgmt_addr_info { EUI48, uint8_t type }, uint8_t secure More...
 
class  MgmtEvtUserConfirmRequest
 mgmt_addr_info { EUI48, uint8_t type }, uint8_t confirm_hint uint32_t value More...
 
class  MgmtEvtUserPasskeyRequest
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtException
 
class  MgmtGetConnectionInfoCmd
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtIdentityResolveKeyCmd
 uint16_t key_count MgmtLongTermKey keys[key_count] More...
 
struct  MgmtIdentityResolvingKey
 Used for MgmtLoadIdentityResolvingKeyCmd and MgmtEvtNewIdentityResolvingKey. More...
 
struct  MgmtLinkKeyInfo
 Used for MgmtLoadLinkKeyCmd and MgmtEvtNewLinkKey. More...
 
class  MgmtLoadConnParamCmd
 uint16_t param_count 2 MgmtConnParam param[] 15 = 1x More...
 
class  MgmtLoadIdentityResolvingKeyCmd
 uint16_t key_count MgmtIdentityResolvingKey keys[key_count] More...
 
class  MgmtLoadLinkKeyCmd
 uint8_t debug_keys, uint16_t key_count, MgmtLinkKey keys[key_count] More...
 
class  MgmtLoadLongTermKeyCmd
 uint16_t key_count MgmtLongTermKey keys[key_count] More...
 
struct  MgmtLongTermKey
 Used for MgmtLoadLongTermKeyCmd and MgmtEvtNewLongTermKey. More...
 
class  MgmtMsg
 
class  MgmtOpcodeException
 
class  MgmtPairDeviceCmd
 mgmt_addr_info { EUI48, uint8_t type }, SMPIOCapability io_cap (1 octet) More...
 
class  MgmtPinCodeNegativeReplyCmd
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtPinCodeReplyCmd
 mgmt_addr_info { EUI48, uint8_t type }, uint8_t pin_len, uint8_t pin_code[16] More...
 
class  MgmtReadDefaultSysParamCmd
 
class  MgmtRemoveDeviceFromWhitelistCmd
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtSetDefaultConnParamCmd
 MgmtDefaultParamU16 param1, MgmtDefaultParamU16 param2,. More...
 
class  MgmtSetDiscoverableCmd
 uint8_t discoverable uint16_t timeout More...
 
class  MgmtSetLocalNameCmd
 uint8_t name[MGMT_MAX_NAME_LENGTH]; uint8_t short_name[MGMT_MAX_SHORT_NAME_LENGTH]; More...
 
class  MgmtSetPrivacyCmd
 uint8_t privacy 0x00 disabled, 0x01 always on (discoverable + pairing), 0x02 limited (not when discoverable, bondable) jau::uint128_t irk Identity Resolving Key More...
 
struct  MgmtSignatureResolvingKey
 Used for MgmtEvtNewSignatureResolvingKey. More...
 
class  MgmtUint8Cmd
 
class  MgmtUnpairDeviceCmd
 mgmt_addr_info { EUI48, uint8_t type }, bool disconnect (1 octet) More...
 
class  MgmtUserConfirmNegativeReplyCmd
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtUserConfirmReplyCmd
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtUserPasskeyNegativeReplyCmd
 mgmt_addr_info { EUI48, uint8_t type }, More...
 
class  MgmtUserPasskeyReplyCmd
 mgmt_addr_info { EUI48, uint8_t type }, uint32_t passkey More...
 
class  NameAndShortName
 
class  SMPEncInfoMsg
 Vol 3, Part H: 3.6.2 Encryption Information message. More...
 
class  SMPEncKeyByteStream
 Tag type to group all SMP messages covering encryption keys, treated as byte stream (all of them). More...
 
class  SMPEnv
 SMP Singleton runtime environment properties. More...
 
class  SMPException
 
class  SMPHandler
 A thread safe SMP handler associated to one device via one L2CAP connection. More...
 
class  SMPIdentAddrInfoMsg
 Vol 3, Part H: 3.6.5 Identity Address Information message. More...
 
class  SMPIdentInfoMsg
 Vol 3, Part H: 3.6.4 Identify Information message. More...
 
struct  SMPIdentityResolvingKey
 SMP Identity Resolving Key, used for platform agnostic persistence. More...
 
class  SMPKeyBin
 Storage for SMP keys including required connection parameter per local adapter and remote device. More...
 
struct  SMPLinkKey
 Local SMP Link Key, used for platform agnostic persistence, mapping to platform specific MgmtLoadLinkKeyCmd and MgmtEvtNewLinkKey. More...
 
struct  SMPLongTermKey
 SMP Long Term Key, used for platform agnostic persistence. More...
 
class  SMPMasterIdentMsg
 Vol 3, Part H: 3.6.3 Master Identification message. More...
 
class  SMPOpcodeException
 
class  SMPPacketException
 
class  SMPPairConfirmMsg
 Vol 3, Part H: 3.5.3 Pairing Confirm message. More...
 
class  SMPPairDHKeyCheckMsg
 Vol 3, Part H: 3.5.7 Pairing DHKey Check message. More...
 
class  SMPPairFailedMsg
 Vol 3, Part H: 3.5.5 Pairing Failed message. More...
 
class  SMPPairingMsg
 Vol 3, Part H: 3.5.1 Pairing Request message. More...
 
class  SMPPairPubKeyMsg
 Vol 3, Part H: 3.5.6 Pairing Public Key message. More...
 
class  SMPPairRandMsg
 Vol 3, Part H: 3.5.4 Pairing Random message. More...
 
class  SMPPasskeyNotification
 Vol 3, Part H: 3.5.8 Passkey Entry: Keypress notification messages. More...
 
class  SMPPDUMsg
 Handles the Security Manager Protocol (SMP) using Protocol Data Unit (PDU) encoded messages over L2CAP channel. More...
 
class  SMPSecurityReqMsg
 Vol 3, Part H: 3.6.7 Security Request message. More...
 
struct  SMPSignatureResolvingKey
 SMP Signature Resolving Key, used for platform agnostic persistence. More...
 
class  SMPSignInfoMsg
 Vol 3, Part H: 3.6.6 Signing Information message. More...
 
class  SMPValueException
 

Typedefs

typedef std::shared_ptr< AdapterStatusListenerAdapterStatusListenerRef
 
typedef std::shared_ptr< BTAdapterBTAdapterRef
 
typedef std::shared_ptr< BTDeviceBTDeviceRef
 
typedef std::shared_ptr< BTGattCharListenerBTGattCharListenerRef
 
typedef std::shared_ptr< BTGattCharBTGattCharRef
 
typedef std::shared_ptr< BTGattDescBTGattDescRef
 
typedef std::shared_ptr< BTGattHandlerBTGattHandlerRef
 
typedef std::shared_ptr< BTGattServiceBTGattServiceRef
 
typedef std::shared_ptr< BTManagerBTManagerRef
 
typedef jau::function< void(bool, std::shared_ptr< BTAdapter > &)> ChangedAdapterSetCallback
 Callback jau::function to receive change events regarding the system's adapter set, e.g. More...
 
typedef jau::cow_darray< ChangedAdapterSetCallbackChangedAdapterSetCallbackList
 
typedef void(* ChangedAdapterSetFunc) (bool added, std::shared_ptr< BTAdapter > &adapter)
 Callback function to receive change events regarding the system's adapter set, e.g. More...
 
typedef std::shared_ptr< DBGattCharDBGattCharRef
 
typedef std::shared_ptr< DBGattDescDBGattDescRef
 
typedef std::shared_ptr< DBGattServerDBGattServerRef
 
typedef std::shared_ptr< DBGattServiceDBGattServiceRef
 
typedef std::shared_ptr< EInfoReportEInfoReportRef
 
typedef jau::function< void(const BDAddressAndType &, const SMPPDUMsg &, const HCIACLData::l2cap_frame &)> HCISMPMsgCallback
 
typedef jau::cow_darray< HCISMPMsgCallbackHCISMPMsgCallbackList
 
typedef jau::cow_darray< MgmtAdapterEventCallbackMgmtAdapterEventCallbackList
 
typedef jau::function< void(const MgmtEvent &)> MgmtEventCallback
 
typedef jau::cow_darray< MgmtEventCallbackMgmtEventCallbackList
 

Enumerations

enum class  AD_PDU_Type : uint8_t {
  AD_PDU_Type::ADV_IND = 0x00 , AD_PDU_Type::ADV_DIRECT_IND = 0x01 , AD_PDU_Type::ADV_SCAN_IND = 0x02 , AD_PDU_Type::ADV_NONCONN_IND = 0x03 ,
  AD_PDU_Type::SCAN_RSP = 0x04 , AD_PDU_Type::ADV_IND2 = 0b0010011 , AD_PDU_Type::DIRECT_IND2 = 0b0010101 , AD_PDU_Type::SCAN_IND2 = 0b0010010 ,
  AD_PDU_Type::NONCONN_IND2 = 0b0010000 , AD_PDU_Type::SCAN_RSP_to_ADV_IND = 0b0011011 , AD_PDU_Type::SCAN_RSP_to_ADV_SCAN_IND = 0b0011010 , AD_PDU_Type::UNDEFINED = 0xff
}
 LE Advertising (AD) Protocol Data Unit (PDU) Types. More...
 
enum class  AD_Type_Const : uint8_t { AD_Type_Const::AD_FLAGS_LIMITED_MODE_BIT = 0x01 , AD_Type_Const::AD_FLAGS_GENERAL_MODE_BIT = 0x02 }
 
enum class  AdapterSetting : uint32_t {
  AdapterSetting::NONE = 0 , AdapterSetting::POWERED = 0x00000001 , AdapterSetting::CONNECTABLE = 0x00000002 , AdapterSetting::FAST_CONNECTABLE = 0x00000004 ,
  AdapterSetting::DISCOVERABLE = 0x00000008 , AdapterSetting::BONDABLE = 0x00000010 , AdapterSetting::LINK_SECURITY = 0x00000020 , AdapterSetting::SSP = 0x00000040 ,
  AdapterSetting::BREDR = 0x00000080 , AdapterSetting::HS = 0x00000100 , AdapterSetting::LE = 0x00000200 , AdapterSetting::ADVERTISING = 0x00000400 ,
  AdapterSetting::SECURE_CONN = 0x00000800 , AdapterSetting::DEBUG_KEYS = 0x00001000 , AdapterSetting::PRIVACY = 0x00002000 , AdapterSetting::CONFIGURATION = 0x00004000 ,
  AdapterSetting::STATIC_ADDRESS = 0x00008000 , AdapterSetting::PHY_CONFIGURATION = 0x00010000
}
 Adapter Setting Bits. More...
 
enum class  AppearanceCat : uint16_t {
  AppearanceCat::UNKNOWN = 0 , AppearanceCat::GENERIC_PHONE = 64 , AppearanceCat::GENERIC_COMPUTER = 128 , AppearanceCat::GENERIC_WATCH = 192 ,
  AppearanceCat::SPORTS_WATCH = 193 , AppearanceCat::GENERIC_CLOCK = 256 , AppearanceCat::GENERIC_DISPLAY = 320 , AppearanceCat::GENERIC_REMOTE_CLOCK = 384 ,
  AppearanceCat::GENERIC_EYE_GLASSES = 448 , AppearanceCat::GENERIC_TAG = 512 , AppearanceCat::GENERIC_KEYRING = 576 , AppearanceCat::GENERIC_MEDIA_PLAYER = 640 ,
  AppearanceCat::GENERIC_BARCODE_SCANNER = 704 , AppearanceCat::GENERIC_THERMOMETER = 768 , AppearanceCat::GENERIC_THERMOMETER_EAR = 769 , AppearanceCat::GENERIC_HEART_RATE_SENSOR = 832 ,
  AppearanceCat::HEART_RATE_SENSOR_BELT = 833 , AppearanceCat::GENERIC_BLOD_PRESSURE = 896 , AppearanceCat::BLOD_PRESSURE_ARM = 897 , AppearanceCat::BLOD_PRESSURE_WRIST = 898 ,
  AppearanceCat::HID = 960 , AppearanceCat::HID_KEYBOARD = 961 , AppearanceCat::HID_MOUSE = 962 , AppearanceCat::HID_JOYSTICK = 963 ,
  AppearanceCat::HID_GAMEPAD = 964 , AppearanceCat::HID_DIGITIZER_TABLET = 965 , AppearanceCat::HID_CARD_READER = 966 , AppearanceCat::HID_DIGITAL_PEN = 967 ,
  AppearanceCat::HID_BARCODE_SCANNER = 968 , AppearanceCat::GENERIC_GLUCOSE_METER = 1024 , AppearanceCat::GENERIC_RUNNING_WALKING_SENSOR = 1088 , AppearanceCat::RUNNING_WALKING_SENSOR_IN_SHOE = 1089 ,
  AppearanceCat::RUNNING_WALKING_SENSOR_ON_SHOE = 1090 , AppearanceCat::RUNNING_WALKING_SENSOR_HIP = 1091 , AppearanceCat::GENERIC_CYCLING = 1152 , AppearanceCat::CYCLING_COMPUTER = 1153 ,
  AppearanceCat::CYCLING_SPEED_SENSOR = 1154 , AppearanceCat::CYCLING_CADENCE_SENSOR = 1155 , AppearanceCat::CYCLING_POWER_SENSOR = 1156 , AppearanceCat::CYCLING_SPEED_AND_CADENCE_SENSOR = 1157 ,
  AppearanceCat::GENERIC_PULSE_OXIMETER = 3136 , AppearanceCat::PULSE_OXIMETER_FINGERTIP = 3137 , AppearanceCat::PULSE_OXIMETER_WRIST = 3138 , AppearanceCat::GENERIC_WEIGHT_SCALE = 3200 ,
  AppearanceCat::GENERIC_PERSONAL_MOBILITY_DEVICE = 3264 , AppearanceCat::PERSONAL_MOBILITY_DEVICE_WHEELCHAIR = 3265 , AppearanceCat::PERSONAL_MOBILITY_DEVICE_SCOOTER = 3266 , AppearanceCat::GENERIC_CONTINUOUS_GLUCOSE_MONITOR = 3328 ,
  AppearanceCat::GENERIC_INSULIN_PUMP = 3392 , AppearanceCat::INSULIN_PUMP_DURABLE = 3393 , AppearanceCat::INSULIN_PUMP_PATCH = 3396 , AppearanceCat::INSULIN_PUMP_PEN = 3400 ,
  AppearanceCat::GENERIC_MEDICATION_DELIVERY = 3456 , AppearanceCat::GENERIC_OUTDOOR_SPORTS_ACTIVITY = 5184 , AppearanceCat::OUTDOOR_SPORTS_ACTIVITY_LOCATION_DISPLAY_DEVICE = 5185 , AppearanceCat::OUTDOOR_SPORTS_ACTIVITY_LOCATION_AND_NAVIGATION_DISPLAY_DEVICE = 5186 ,
  AppearanceCat::OUTDOOR_SPORTS_ACTIVITY_LOCATION_POD = 5187 , AppearanceCat::OUTDOOR_SPORTS_ACTIVITY_LOCATION_AND_NAVIGATION_POD = 5188
}
 
enum class  BDAddressType : uint8_t { BDAddressType::BDADDR_BREDR = 0x00 , BDAddressType::BDADDR_LE_PUBLIC = 0x01 , BDAddressType::BDADDR_LE_RANDOM = 0x02 , BDAddressType::BDADDR_UNDEFINED = 0xff }
 BT Core Spec v5.2: Vol 3, Part C Generic Access Profile (GAP): 15.1.1.1 Public Bluetooth address. More...
 
enum class  BLERandomAddressType : uint8_t {
  BLERandomAddressType::UNRESOLVABLE_PRIVAT = 0x00 , BLERandomAddressType::RESOLVABLE_PRIVAT = 0x01 , BLERandomAddressType::RESERVED = 0x02 , BLERandomAddressType::STATIC_PUBLIC = 0x03 ,
  BLERandomAddressType::UNDEFINED = 0xff
}
 BT Core Spec v5.2: Vol 6 LE, Part B Link Layer Specification: 1.3 Device Address. More...
 
enum class  BTMode : uint8_t { BTMode::NONE = 0 , BTMode::DUAL = 1 , BTMode::BREDR = 2 , BTMode::LE = 3 }
 Bluetooth adapter operating mode. More...
 
enum class  BTRole : uint8_t { BTRole::None = 0 , BTRole::Master = 1 , BTRole::Slave = 2 }
 Bluetooth roles from the perspective of the link layer (connection initiator). More...
 
enum class  BTSecurityLevel : uint8_t {
  BTSecurityLevel::UNSET = 0 , BTSecurityLevel::NONE = 1 , BTSecurityLevel::ENC_ONLY = 2 , BTSecurityLevel::ENC_AUTH = 3 ,
  BTSecurityLevel::ENC_AUTH_FIPS = 4
}
 Bluetooth Security Level. More...
 
enum class  DiscoveryPolicy : uint8_t {
  DiscoveryPolicy::AUTO_OFF = 0 , DiscoveryPolicy::PAUSE_CONNECTED_UNTIL_DISCONNECTED = 1 , DiscoveryPolicy::PAUSE_CONNECTED_UNTIL_READY = 2 , DiscoveryPolicy::PAUSE_CONNECTED_UNTIL_PAIRED = 3 ,
  DiscoveryPolicy::ALWAYS_ON = 4
}
 Discovery policy defines the BTAdapter discovery mode after connecting a remote BTDevice: More...
 
enum class  EAD_Event_Type : uint16_t {
  EAD_Event_Type::NONE = 0 , EAD_Event_Type::CONN_ADV = 0b00000001 , EAD_Event_Type::SCAN_ADV = 0b00000010 , EAD_Event_Type::DIR_ADV = 0b00000100 ,
  EAD_Event_Type::SCAN_RSP = 0b00001000 , EAD_Event_Type::LEGACY_PDU = 0b00010000 , EAD_Event_Type::DATA_B0 = 0b00100000 , EAD_Event_Type::DATA_B1 = 0b01000000
}
 LE Extended Advertising (EAD) Event Types. More...
 
enum class  EIRDataType : uint32_t {
  EIRDataType::NONE = 0 , EIRDataType::EVT_TYPE = (1 << 0) , EIRDataType::EXT_EVT_TYPE = (1 << 1) , EIRDataType::BDADDR_TYPE = (1 << 2) ,
  EIRDataType::BDADDR = (1 << 3) , EIRDataType::FLAGS = (1 << 4) , EIRDataType::NAME = (1 << 5) , EIRDataType::NAME_SHORT = (1 << 6) ,
  EIRDataType::RSSI = (1 << 7) , EIRDataType::TX_POWER = (1 << 8) , EIRDataType::MANUF_DATA = (1 << 9) , EIRDataType::DEVICE_CLASS = (1 << 10) ,
  EIRDataType::APPEARANCE = (1 << 11) , EIRDataType::HASH = (1 << 12) , EIRDataType::RANDOMIZER = (1 << 13) , EIRDataType::DEVICE_ID = (1 << 14) ,
  EIRDataType::CONN_IVAL = (1 << 15) , EIRDataType::SERVICE_UUID = (1 << 30) , EIRDataType::ALL = 0xffffffff
}
 Bit mask of 'Extended Inquiry Response' (EIR) data fields, indicating a set of related data. More...
 
enum class  GAP_T : uint8_t {
  GAP_T::NONE = 0x00 , GAP_T::FLAGS = 0x01 , GAP_T::UUID16_INCOMPLETE = 0x02 , GAP_T::UUID16_COMPLETE = 0x03 ,
  GAP_T::UUID32_INCOMPLETE = 0x04 , GAP_T::UUID32_COMPLETE = 0x05 , GAP_T::UUID128_INCOMPLETE = 0x06 , GAP_T::UUID128_COMPLETE = 0x07 ,
  GAP_T::NAME_LOCAL_SHORT = 0x08 , GAP_T::NAME_LOCAL_COMPLETE = 0x09 , GAP_T::TX_POWER_LEVEL = 0x0A , GAP_T::SSP_CLASS_OF_DEVICE = 0x0D ,
  GAP_T::SSP_HASH_C192 = 0x0E , GAP_T::SSP_RANDOMIZER_R192 = 0x0F , GAP_T::DEVICE_ID = 0x10 , GAP_T::SEC_MGR_TK_VALUE = 0x10 ,
  GAP_T::SEC_MGR_OOB_FLAGS = 0x11 , GAP_T::SLAVE_CONN_IVAL_RANGE = 0x12 , GAP_T::SOLICIT_UUID16 = 0x14 , GAP_T::SOLICIT_UUID128 = 0x15 ,
  GAP_T::SVC_DATA_UUID16 = 0x16 , GAP_T::PUB_TRGT_ADDR = 0x17 , GAP_T::RND_TRGT_ADDR = 0x18 , GAP_T::GAP_APPEARANCE = 0x19 ,
  GAP_T::ADV_INTERVAL = 0x1A , GAP_T::LE_BT_DEV_ADDRESS = 0x1B , GAP_T::LE_ROLE = 0x1C , GAP_T::SSP_HASH_C256 = 0x1D ,
  GAP_T::SSP_RANDOMIZER_R256 = 0x1E , GAP_T::SOLICIT_UUID32 = 0x1F , GAP_T::SVC_DATA_UUID32 = 0x20 , GAP_T::SVC_DATA_UUID128 = 0x21 ,
  GAP_T::SSP_LE_SEC_CONN_ACK_VALUE = 0x22 , GAP_T::SSP_LE_SEC_CONN_RND_VALUE = 0x23 , GAP_T::URI = 0x24 , GAP_T::INDOOR_POSITIONING = 0x25 ,
  GAP_T::TX_DISCOVERY_DATA = 0x26 , GAP_T::LE_SUPP_FEATURES = 0x27 , GAP_T::CH_MAP_UPDATE_IND = 0x28 , GAP_T::PB_ADV = 0x29 ,
  GAP_T::MESH_MESSAGE = 0x2A , GAP_T::MESH_BEACON = 0x2B , GAP_T::BIG_INFO = 0x2C , GAP_T::BROADCAST_CODE = 0x2D ,
  GAP_T::INFO_DATA_3D = 0x3D , GAP_T::MANUFACTURE_SPECIFIC = 0xFF
}
 ​​Assigned numbers are used in Generic Access Profile (GAP) for inquiry response, EIR data type values, manufacturer-specific data, advertising data, low energy UUIDs and appearance characteristics, and class of device. More...
 
enum class  GAPFlags : uint8_t {
  GAPFlags::NONE = 0 , GAPFlags::LE_Ltd_Disc = (1 << 0) , GAPFlags::LE_Gen_Disc = (1 << 1) , GAPFlags::BREDR_UNSUP = (1 << 2) ,
  GAPFlags::Dual_SameCtrl = (1 << 3) , GAPFlags::Dual_SameHost = (1 << 4) , GAPFlags::RESERVED1 = (1 << 5) , GAPFlags::RESERVED2 = (1 << 6) ,
  GAPFlags::RESERVED3 = (1 << 7)
}
 GAP Flags values, see Bluetooth Core Specification Supplement V9, Part A: 1.3, p 12 pp. More...
 
enum  GattAttributeType : uint16_t { PRIMARY_SERVICE = 0x2800 , SECONDARY_SERVICE = 0x2801 , INCLUDE_DECLARATION = 0x2802 , CHARACTERISTIC = 0x2803 }
 Following UUID16 GATT profile attribute types are listed under: BT Core Spec v5.2: Vol 3, Part G GATT: 3.4 Summary of GATT Profile Attribute Types. More...
 
enum  GattCharacteristicProperty : uint8_t {
  Broadcast = 0x01 , Read = 0x02 , WriteNoAck = 0x04 , WriteWithAck = 0x08 ,
  Notify = 0x10 , Indicate = 0x20 , AuthSignedWrite = 0x40 , ExtProps = 0x80 ,
  ReliableWriteExt = 0x81 , AuxWriteExt = 0x82
}
 
enum  GattCharacteristicType : uint16_t {
  DEVICE_NAME = 0x2A00 , APPEARANCE = 0x2A01 , PERIPHERAL_PRIVACY_FLAG = 0x2A02 , RECONNECTION_ADDRESS = 0x2A03 ,
  PERIPHERAL_PREFERRED_CONNECTION_PARAMETERS = 0x2A04 , SERVICE_CHANGED = 0x2a05 , TEMPERATURE = 0x2A6E , TEMPERATURE_CELSIUS = 0x2A1F ,
  TEMPERATURE_FAHRENHEIT = 0x2A20 , TEMPERATURE_MEASUREMENT = 0x2A1C , TEMPERATURE_TYPE = 0x2A1D , INTERMEDIATE_TEMPERATURE = 0x2A1E ,
  MEASUREMENT_INTERVAL = 0x2A21 , SYSTEM_ID = 0x2A23 , MODEL_NUMBER_STRING = 0x2A24 , SERIAL_NUMBER_STRING = 0x2A25 ,
  FIRMWARE_REVISION_STRING = 0x2A26 , HARDWARE_REVISION_STRING = 0x2A27 , SOFTWARE_REVISION_STRING = 0x2A28 , MANUFACTURER_NAME_STRING = 0x2A29 ,
  REGULATORY_CERT_DATA_LIST = 0x2A2A , PNP_ID = 0x2A50
}
 GATT Assigned Characteristic Attribute Type for single logical value. More...
 
enum  GattRequirementSpec : uint8_t {
  Excluded = 0x00 , Mandatory = 0x01 , Optional = 0x02 , Conditional = 0x03 ,
  if_characteristic_supported = 0x11 , if_notify_or_indicate_supported = 0x12 , C1 = 0x21
}
 
enum class  GATTRole : uint8_t { GATTRole::None = 0 , GATTRole::Server = 1 , GATTRole::Client = 2 }
 Bluetooth GATT roles. More...
 
enum  GattServiceType : uint16_t {
  GENERIC_ACCESS = 0x1800 , GENERIC_ATTRIBUTE = 0x1801 , IMMEDIATE_ALERT = 0x1802 , LINK_LOSS = 0x1803 ,
  HEALTH_THERMOMETER = 0x1809 , DEVICE_INFORMATION = 0x180A , BATTERY_SERVICE = 0x180F
}
 GATT Service Type, each encapsulating a set of Characteristics. More...
 
enum class  HCIConstInt : int32_t { HCIConstInt::LE_CONN_MIN_TIMEOUT_MS = 500 }
 
enum class  HCIConstSizeT : jau::nsize_t {
  HCIConstSizeT::COMMAND_HDR_SIZE = 1+3 , HCIConstSizeT::ACL_HDR_SIZE = 1+4 , HCIConstSizeT::SCO_HDR_SIZE = 1+3 , HCIConstSizeT::EVENT_HDR_SIZE = 1+2 ,
  HCIConstSizeT::PACKET_MAX_SIZE = 255
}
 
enum class  HCIConstU16 : uint16_t { HCIConstU16::INDEX_NONE = 0xFFFF , HCIConstU16::MAX_NAME_LENGTH = 248 , HCIConstU16::MAX_SHORT_NAME_LENGTH = 10 , HCIConstU16::MAX_AD_LENGTH = 31 }
 
enum class  HCIEventType : uint8_t {
  HCIEventType::INVALID = 0x00 , HCIEventType::INQUIRY_COMPLETE = 0x01 , HCIEventType::INQUIRY_RESULT = 0x02 , HCIEventType::CONN_COMPLETE = 0x03 ,
  HCIEventType::CONN_REQUEST = 0x04 , HCIEventType::DISCONN_COMPLETE = 0x05 , HCIEventType::AUTH_COMPLETE = 0x06 , HCIEventType::REMOTE_NAME = 0x07 ,
  HCIEventType::ENCRYPT_CHANGE = 0x08 , HCIEventType::CHANGE_LINK_KEY_COMPLETE = 0x09 , HCIEventType::REMOTE_FEATURES = 0x0b , HCIEventType::REMOTE_VERSION = 0x0c ,
  HCIEventType::QOS_SETUP_COMPLETE = 0x0d , HCIEventType::CMD_COMPLETE = 0x0e , HCIEventType::CMD_STATUS = 0x0f , HCIEventType::HARDWARE_ERROR = 0x10 ,
  HCIEventType::ROLE_CHANGE = 0x12 , HCIEventType::NUM_COMP_PKTS = 0x13 , HCIEventType::MODE_CHANGE = 0x14 , HCIEventType::PIN_CODE_REQ = 0x16 ,
  HCIEventType::LINK_KEY_REQ = 0x17 , HCIEventType::LINK_KEY_NOTIFY = 0x18 , HCIEventType::CLOCK_OFFSET = 0x1c , HCIEventType::PKT_TYPE_CHANGE = 0x1d ,
  HCIEventType::ENCRYPT_KEY_REFRESH_COMPLETE = 0x30 , HCIEventType::IO_CAPABILITY_REQUEST = 0x31 , HCIEventType::IO_CAPABILITY_RESPONSE = 0x32 , HCIEventType::LE_META = 0x3e ,
  HCIEventType::DISCONN_PHY_LINK_COMPLETE = 0x42 , HCIEventType::DISCONN_LOGICAL_LINK_COMPLETE = 0x46 , HCIEventType::AMP_Receiver_Report = 0x4b
}
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.7 Events. More...
 
enum class  HCILEOwnAddressType : uint8_t {
  HCILEOwnAddressType::PUBLIC = 0x00 , HCILEOwnAddressType::RANDOM = 0x01 , HCILEOwnAddressType::RESOLVABLE_OR_PUBLIC = 0x02 , HCILEOwnAddressType::RESOLVABLE_OR_RANDOM = 0x03 ,
  HCILEOwnAddressType::UNDEFINED = 0xff
}
 
enum class  HCILEPeerAddressType : uint8_t {
  HCILEPeerAddressType::PUBLIC = 0x00 , HCILEPeerAddressType::RANDOM = 0x01 , HCILEPeerAddressType::PUBLIC_IDENTITY = 0x02 , HCILEPeerAddressType::RANDOM_STATIC_IDENTITY = 0x03 ,
  HCILEPeerAddressType::UNDEFINED = 0xff
}
 HCI LE Address-Type is PUBLIC: 0x00, RANDOM: 0x01. More...
 
enum class  HCIMetaEventType : uint8_t {
  HCIMetaEventType::INVALID = 0x00 , HCIMetaEventType::LE_CONN_COMPLETE = 0x01 , HCIMetaEventType::LE_ADVERTISING_REPORT = 0x02 , HCIMetaEventType::LE_CONN_UPDATE_COMPLETE = 0x03 ,
  HCIMetaEventType::LE_REMOTE_FEAT_COMPLETE = 0x04 , HCIMetaEventType::LE_LTK_REQUEST = 0x05 , HCIMetaEventType::LE_REMOTE_CONN_PARAM_REQ = 0x06 , HCIMetaEventType::LE_DATA_LENGTH_CHANGE = 0x07 ,
  HCIMetaEventType::LE_READ_LOCAL_P256_PUBKEY_COMPLETE = 0x08 , HCIMetaEventType::LE_GENERATE_DHKEY_COMPLETE = 0x09 , HCIMetaEventType::LE_EXT_CONN_COMPLETE = 0x0A , HCIMetaEventType::LE_DIRECT_ADV_REPORT = 0x0B ,
  HCIMetaEventType::LE_PHY_UPDATE_COMPLETE = 0x0C , HCIMetaEventType::LE_EXT_ADV_REPORT = 0x0D , HCIMetaEventType::LE_PERIODIC_ADV_SYNC_ESTABLISHED = 0x0E , HCIMetaEventType::LE_PERIODIC_ADV_REPORT = 0x0F ,
  HCIMetaEventType::LE_PERIODIC_ADV_SYNC_LOST = 0x10 , HCIMetaEventType::LE_SCAN_TIMEOUT = 0x11 , HCIMetaEventType::LE_ADV_SET_TERMINATED = 0x12 , HCIMetaEventType::LE_SCAN_REQ_RECEIVED = 0x13 ,
  HCIMetaEventType::LE_CHANNEL_SEL_ALGO = 0x14 , HCIMetaEventType::LE_CONNLESS_IQ_REPORT = 0x15 , HCIMetaEventType::LE_CONN_IQ_REPORT = 0x16 , HCIMetaEventType::LE_CTE_REQ_FAILED = 0x17 ,
  HCIMetaEventType::LE_PERIODIC_ADV_SYNC_TRANSFER_RECV = 0x18 , HCIMetaEventType::LE_CIS_ESTABLISHED = 0x19 , HCIMetaEventType::LE_CIS_REQUEST = 0x1A , HCIMetaEventType::LE_CREATE_BIG_COMPLETE = 0x1B ,
  HCIMetaEventType::LE_TERMINATE_BIG_COMPLETE = 0x1C , HCIMetaEventType::LE_BIG_SYNC_ESTABLISHED = 0x1D , HCIMetaEventType::LE_BIG_SYNC_LOST = 0x1E , HCIMetaEventType::LE_REQUEST_PEER_SCA_COMPLETE = 0x1F ,
  HCIMetaEventType::LE_PATH_LOSS_THRESHOLD = 0x20 , HCIMetaEventType::LE_TRANSMIT_POWER_REPORTING = 0x21 , HCIMetaEventType::LE_BIGINFO_ADV_REPORT = 0x22
}
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.7.65 LE Meta event. More...
 
enum class  HCIOGF : uint8_t { HCIOGF::LINK_CTL = 0x01 , HCIOGF::LINK_POLICY = 0x02 , HCIOGF::BREDR_CTL = 0x03 , HCIOGF::LE_CTL = 0x08 }
 
enum class  HCIOpcode : uint16_t {
  HCIOpcode::SPECIAL = 0x0000 , HCIOpcode::CREATE_CONN = 0x0405 , HCIOpcode::DISCONNECT = 0x0406 , HCIOpcode::IO_CAPABILITY_REQ_REPLY = 0x042b ,
  HCIOpcode::IO_CAPABILITY_REQ_NEG_REPLY = 0x0434 , HCIOpcode::SET_EVENT_MASK = 0x0C01 , HCIOpcode::RESET = 0x0C03 , HCIOpcode::READ_LOCAL_VERSION = 0x1001 ,
  HCIOpcode::READ_LOCAL_COMMANDS = 0x1002 , HCIOpcode::LE_SET_EVENT_MASK = 0x2001 , HCIOpcode::LE_READ_BUFFER_SIZE = 0x2002 , HCIOpcode::LE_READ_LOCAL_FEATURES = 0x2003 ,
  HCIOpcode::LE_SET_RANDOM_ADDR = 0x2005 , HCIOpcode::LE_SET_ADV_PARAM = 0x2006 , HCIOpcode::LE_READ_ADV_TX_POWER = 0x2007 , HCIOpcode::LE_SET_ADV_DATA = 0x2008 ,
  HCIOpcode::LE_SET_SCAN_RSP_DATA = 0x2009 , HCIOpcode::LE_SET_ADV_ENABLE = 0x200a , HCIOpcode::LE_SET_SCAN_PARAM = 0x200b , HCIOpcode::LE_SET_SCAN_ENABLE = 0x200c ,
  HCIOpcode::LE_CREATE_CONN = 0x200d , HCIOpcode::LE_CREATE_CONN_CANCEL = 0x200e , HCIOpcode::LE_READ_WHITE_LIST_SIZE = 0x200f , HCIOpcode::LE_CLEAR_WHITE_LIST = 0x2010 ,
  HCIOpcode::LE_ADD_TO_WHITE_LIST = 0x2011 , HCIOpcode::LE_DEL_FROM_WHITE_LIST = 0x2012 , HCIOpcode::LE_CONN_UPDATE = 0x2013 , HCIOpcode::LE_READ_REMOTE_FEATURES = 0x2016 ,
  HCIOpcode::LE_ENABLE_ENC = 0x2019 , HCIOpcode::LE_LTK_REPLY_ACK = 0x201A , HCIOpcode::LE_LTK_REPLY_REJ = 0x201B , HCIOpcode::LE_ADD_TO_RESOLV_LIST = 0x2027 ,
  HCIOpcode::LE_DEL_FROM_RESOLV_LIST = 0x2028 , HCIOpcode::LE_CLEAR_RESOLV_LIST = 0x2029 , HCIOpcode::LE_READ_RESOLV_LIST_SIZE = 0x202A , HCIOpcode::LE_READ_PEER_RESOLV_ADDR = 0x202B ,
  HCIOpcode::LE_READ_LOCAL_RESOLV_ADDR = 0x202C , HCIOpcode::LE_SET_ADDR_RESOLV_ENABLE = 0x202D , HCIOpcode::LE_READ_PHY = 0x2030 , HCIOpcode::LE_SET_DEFAULT_PHY = 0x2031 ,
  HCIOpcode::LE_SET_PHY = 0x2032 , HCIOpcode::LE_SET_EXT_ADV_PARAMS = 0x2036 , HCIOpcode::LE_SET_EXT_ADV_DATA = 0x2037 , HCIOpcode::LE_SET_EXT_SCAN_RSP_DATA = 0x2038 ,
  HCIOpcode::LE_SET_EXT_ADV_ENABLE = 0x2039 , HCIOpcode::LE_SET_EXT_SCAN_PARAMS = 0x2041 , HCIOpcode::LE_SET_EXT_SCAN_ENABLE = 0x2042 , HCIOpcode::LE_EXT_CREATE_CONN = 0x2043
}
 BT Core Spec v5.2: Vol 4, Part E HCI: 7.1 Link Controller commands. More...
 
enum class  HCIOpcodeBit : uint8_t {
  HCIOpcodeBit::SPECIAL = 0 , HCIOpcodeBit::CREATE_CONN = 3 , HCIOpcodeBit::DISCONNECT = 4 , HCIOpcodeBit::IO_CAPABILITY_REQ_REPLY = 5 ,
  HCIOpcodeBit::IO_CAPABILITY_REQ_NEG_REPLY = 6 , HCIOpcodeBit::SET_EVENT_MASK = 7 , HCIOpcodeBit::RESET = 8 , HCIOpcodeBit::READ_LOCAL_VERSION = 10 ,
  HCIOpcodeBit::READ_LOCAL_COMMANDS = 11 , HCIOpcodeBit::LE_SET_EVENT_MASK = 20 , HCIOpcodeBit::LE_READ_BUFFER_SIZE = 21 , HCIOpcodeBit::LE_READ_LOCAL_FEATURES = 22 ,
  HCIOpcodeBit::LE_SET_RANDOM_ADDR = 23 , HCIOpcodeBit::LE_SET_ADV_PARAM = 24 , HCIOpcodeBit::LE_READ_ADV_TX_POWER = 25 , HCIOpcodeBit::LE_SET_ADV_DATA = 26 ,
  HCIOpcodeBit::LE_SET_SCAN_RSP_DATA = 27 , HCIOpcodeBit::LE_SET_ADV_ENABLE = 28 , HCIOpcodeBit::LE_SET_SCAN_PARAM = 29 , HCIOpcodeBit::LE_SET_SCAN_ENABLE = 30 ,
  HCIOpcodeBit::LE_CREATE_CONN = 31 , HCIOpcodeBit::LE_CREATE_CONN_CANCEL = 32 , HCIOpcodeBit::LE_READ_WHITE_LIST_SIZE = 33 , HCIOpcodeBit::LE_CLEAR_WHITE_LIST = 34 ,
  HCIOpcodeBit::LE_ADD_TO_WHITE_LIST = 35 , HCIOpcodeBit::LE_DEL_FROM_WHITE_LIST = 36 , HCIOpcodeBit::LE_CONN_UPDATE = 37 , HCIOpcodeBit::LE_READ_REMOTE_FEATURES = 38 ,
  HCIOpcodeBit::LE_ENABLE_ENC = 39 , HCIOpcodeBit::LE_LTK_REPLY_ACK = 40 , HCIOpcodeBit::LE_LTK_REPLY_REJ = 41 , HCIOpcodeBit::LE_ADD_TO_RESOLV_LIST = 42 ,
  HCIOpcodeBit::LE_DEL_FROM_RESOLV_LIST = 43 , HCIOpcodeBit::LE_CLEAR_RESOLV_LIST = 44 , HCIOpcodeBit::LE_READ_RESOLV_LIST_SIZE = 45 , HCIOpcodeBit::LE_READ_PEER_RESOLV_ADDR = 46 ,
  HCIOpcodeBit::LE_READ_LOCAL_RESOLV_ADDR = 47 , HCIOpcodeBit::LE_SET_ADDR_RESOLV_ENABLE = 48 , HCIOpcodeBit::LE_READ_PHY = 49 , HCIOpcodeBit::LE_SET_DEFAULT_PHY = 50 ,
  HCIOpcodeBit::LE_SET_PHY = 51 , HCIOpcodeBit::LE_SET_EXT_ADV_PARAMS = 52 , HCIOpcodeBit::LE_SET_EXT_ADV_DATA = 53 , HCIOpcodeBit::LE_SET_EXT_SCAN_RSP_DATA = 54 ,
  HCIOpcodeBit::LE_SET_EXT_ADV_ENABLE = 55 , HCIOpcodeBit::LE_SET_EXT_SCAN_PARAMS = 56 , HCIOpcodeBit::LE_SET_EXT_SCAN_ENABLE = 57 , HCIOpcodeBit::LE_EXT_CREATE_CONN = 58
}
 
enum class  HCIPacketType : uint8_t {
  HCIPacketType::COMMAND = 0x01 , HCIPacketType::ACLDATA = 0x02 , HCIPacketType::SCODATA = 0x03 , HCIPacketType::EVENT = 0x04 ,
  HCIPacketType::DIAG = 0xf0 , HCIPacketType::VENDOR = 0xff
}
 
enum class  HCIStatusCode : uint8_t {
  HCIStatusCode::SUCCESS = 0x00 , HCIStatusCode::UNKNOWN_COMMAND = 0x01 , HCIStatusCode::UNKNOWN_CONNECTION_IDENTIFIER = 0x02 , HCIStatusCode::HARDWARE_FAILURE = 0x03 ,
  HCIStatusCode::PAGE_TIMEOUT = 0x04 , HCIStatusCode::AUTHENTICATION_FAILURE = 0x05 , HCIStatusCode::PIN_OR_KEY_MISSING = 0x06 , HCIStatusCode::MEMORY_CAPACITY_EXCEEDED = 0x07 ,
  HCIStatusCode::CONNECTION_TIMEOUT = 0x08 , HCIStatusCode::CONNECTION_LIMIT_EXCEEDED = 0x09 , HCIStatusCode::SYNC_DEVICE_CONNECTION_LIMIT_EXCEEDED = 0x0a , HCIStatusCode::CONNECTION_ALREADY_EXISTS = 0x0b ,
  HCIStatusCode::COMMAND_DISALLOWED = 0x0c , HCIStatusCode::CONNECTION_REJECTED_LIMITED_RESOURCES = 0x0d , HCIStatusCode::CONNECTION_REJECTED_SECURITY = 0x0e , HCIStatusCode::CONNECTION_REJECTED_UNACCEPTABLE_BD_ADDR = 0x0f ,
  HCIStatusCode::CONNECTION_ACCEPT_TIMEOUT_EXCEEDED = 0x10 , HCIStatusCode::UNSUPPORTED_FEATURE_OR_PARAM_VALUE = 0x11 , HCIStatusCode::INVALID_HCI_COMMAND_PARAMETERS = 0x12 , HCIStatusCode::REMOTE_USER_TERMINATED_CONNECTION = 0x13 ,
  HCIStatusCode::REMOTE_DEVICE_TERMINATED_CONNECTION_LOW_RESOURCES = 0x14 , HCIStatusCode::REMOTE_DEVICE_TERMINATED_CONNECTION_POWER_OFF = 0x15 , HCIStatusCode::CONNECTION_TERMINATED_BY_LOCAL_HOST = 0x16 , HCIStatusCode::REPEATED_ATTEMPTS = 0x17 ,
  HCIStatusCode::PAIRING_NOT_ALLOWED = 0x18 , HCIStatusCode::UNKNOWN_LMP_PDU = 0x19 , HCIStatusCode::UNSUPPORTED_REMOTE_OR_LMP_FEATURE = 0x1a , HCIStatusCode::SCO_OFFSET_REJECTED = 0x1b ,
  HCIStatusCode::SCO_INTERVAL_REJECTED = 0x1c , HCIStatusCode::SCO_AIR_MODE_REJECTED = 0x1d , HCIStatusCode::INVALID_LMP_OR_LL_PARAMETERS = 0x1e , HCIStatusCode::UNSPECIFIED_ERROR = 0x1f ,
  HCIStatusCode::UNSUPPORTED_LMP_OR_LL_PARAMETER_VALUE = 0x20 , HCIStatusCode::ROLE_CHANGE_NOT_ALLOWED = 0x21 , HCIStatusCode::LMP_OR_LL_RESPONSE_TIMEOUT = 0x22 , HCIStatusCode::LMP_OR_LL_COLLISION = 0x23 ,
  HCIStatusCode::LMP_PDU_NOT_ALLOWED = 0x24 , HCIStatusCode::ENCRYPTION_MODE_NOT_ACCEPTED = 0x25 , HCIStatusCode::LINK_KEY_CANNOT_BE_CHANGED = 0x26 , HCIStatusCode::REQUESTED_QOS_NOT_SUPPORTED = 0x27 ,
  HCIStatusCode::INSTANT_PASSED = 0x28 , HCIStatusCode::PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED = 0x29 , HCIStatusCode::DIFFERENT_TRANSACTION_COLLISION = 0x2a , HCIStatusCode::QOS_UNACCEPTABLE_PARAMETER = 0x2c ,
  HCIStatusCode::QOS_REJECTED = 0x2d , HCIStatusCode::CHANNEL_ASSESSMENT_NOT_SUPPORTED = 0x2e , HCIStatusCode::INSUFFICIENT_SECURITY = 0x2f , HCIStatusCode::PARAMETER_OUT_OF_RANGE = 0x30 ,
  HCIStatusCode::ROLE_SWITCH_PENDING = 0x32 , HCIStatusCode::RESERVED_SLOT_VIOLATION = 0x34 , HCIStatusCode::ROLE_SWITCH_FAILED = 0x35 , HCIStatusCode::EIR_TOO_LARGE = 0x36 ,
  HCIStatusCode::SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST = 0x37 , HCIStatusCode::HOST_BUSY_PAIRING = 0x38 , HCIStatusCode::CONNECTION_REJECTED_NO_SUITABLE_CHANNEL = 0x39 , HCIStatusCode::CONTROLLER_BUSY = 0x3a ,
  HCIStatusCode::UNACCEPTABLE_CONNECTION_PARAM = 0x3b , HCIStatusCode::ADVERTISING_TIMEOUT = 0x3c , HCIStatusCode::CONNECTION_TERMINATED_MIC_FAILURE = 0x3d , HCIStatusCode::CONNECTION_EST_FAILED_OR_SYNC_TIMEOUT = 0x3e ,
  HCIStatusCode::MAX_CONNECTION_FAILED = 0x3f , HCIStatusCode::COARSE_CLOCK_ADJ_REJECTED = 0x40 , HCIStatusCode::TYPE0_SUBMAP_NOT_DEFINED = 0x41 , HCIStatusCode::UNKNOWN_ADVERTISING_IDENTIFIER = 0x42 ,
  HCIStatusCode::LIMIT_REACHED = 0x43 , HCIStatusCode::OPERATION_CANCELLED_BY_HOST = 0x44 , HCIStatusCode::PACKET_TOO_LONG = 0x45 , HCIStatusCode::FAILED = 0xc3 ,
  HCIStatusCode::CONNECT_FAILED = 0xc4 , HCIStatusCode::AUTH_FAILED = 0xc5 , HCIStatusCode::NOT_PAIRED = 0xc6 , HCIStatusCode::NO_RESOURCES = 0xc7 ,
  HCIStatusCode::TIMEOUT = 0xc8 , HCIStatusCode::ALREADY_CONNECTED = 0xc9 , HCIStatusCode::BUSY = 0xca , HCIStatusCode::REJECTED = 0xcb ,
  HCIStatusCode::NOT_SUPPORTED = 0xcc , HCIStatusCode::INVALID_PARAMS = 0xcd , HCIStatusCode::DISCONNECTED = 0xce , HCIStatusCode::NOT_POWERED = 0xcf ,
  HCIStatusCode::CANCELLED = 0xd0 , HCIStatusCode::INVALID_INDEX = 0xd1 , HCIStatusCode::RFKILLED = 0xd2 , HCIStatusCode::ALREADY_PAIRED = 0xd3 ,
  HCIStatusCode::PERMISSION_DENIED = 0xd4 , HCIStatusCode::INTERNAL_TIMEOUT = 0xfd , HCIStatusCode::INTERNAL_FAILURE = 0xfe , HCIStatusCode::UNKNOWN = 0xff
}
 BT Core Spec v5.2: Vol 1, Part F Controller Error Codes: 1.3 List of Error Codes. More...
 
enum class  HCIWhitelistConnectType : uint8_t { HCIWhitelistConnectType::HCI_AUTO_CONN_REPORT = 0x00 , HCIWhitelistConnectType::HCI_AUTO_CONN_DIRECT = 0x01 , HCIWhitelistConnectType::HCI_AUTO_CONN_ALWAYS = 0x02 }
 HCI Whitelist connection type. More...
 
enum class  L2CAP_CID : uint16_t {
  L2CAP_CID::UNDEFINED = 0x0000 , L2CAP_CID::SIGNALING = 0x0001 , L2CAP_CID::CONN_LESS = 0x0002 , L2CAP_CID::A2MP = 0x0003 ,
  L2CAP_CID::ATT = 0x0004 , L2CAP_CID::LE_SIGNALING = 0x0005 , L2CAP_CID::SMP = 0x0006 , L2CAP_CID::SMP_BREDR = 0x0007 ,
  L2CAP_CID::DYN_START = 0x0040 , L2CAP_CID::DYN_END = 0xffff , L2CAP_CID::LE_DYN_END = 0x007f
}
 
enum class  L2CAP_PSM : uint16_t {
  L2CAP_PSM::UNDEFINED = 0x0000 , L2CAP_PSM::SDP = 0x0001 , L2CAP_PSM::RFCOMM = 0x0003 , L2CAP_PSM::TCSBIN = 0x0005 ,
  L2CAP_PSM::TCSBIN_CORDLESS = 0x0007 , L2CAP_PSM::BNEP = 0x000F , L2CAP_PSM::HID_CONTROL = 0x0011 , L2CAP_PSM::HID_INTERRUPT = 0x0013 ,
  L2CAP_PSM::UPNP = 0x0015 , L2CAP_PSM::AVCTP = 0x0017 , L2CAP_PSM::AVDTP = 0x0019 , L2CAP_PSM::AVCTP_BROWSING = 0x001B ,
  L2CAP_PSM::UDI_C_PLANE = 0x001D , L2CAP_PSM::ATT = 0x001F , L2CAP_PSM::LE_DYN_START = 0x0080 , L2CAP_PSM::LE_DYN_END = 0x00FF ,
  L2CAP_PSM::DYN_START = 0x1001 , L2CAP_PSM::DYN_END = 0xffff , L2CAP_PSM::AUTO_END = 0x10ff
}
 Protocol Service Multiplexers (PSM) Assigned numbers https://www.bluetooth.com/specifications/assigned-numbers/logical-link-control/ More...
 
enum class  L2CAP_States : uint8_t {
  L2CAP_States::CLOSED , L2CAP_States::WAIT_CONNECTED , L2CAP_States::WAIT_CONNECTED_RSP , L2CAP_States::CONFIG ,
  L2CAP_States::OPEN , L2CAP_States::WAIT_DISCONNECTED , L2CAP_States::WAIT_CREATE , L2CAP_States::WAIT_CONNECT ,
  L2CAP_States::WAIT_CREATE_RSP , L2CAP_States::WAIT_MOVE , L2CAP_States::WAIT_MOVE_RSP , L2CAP_States::WAIT_MOVE_CONFIRM ,
  L2CAP_States::WAIT_CONFIRM_RSP
}
 BT Core Spec v5.2: Vol 3, Part A L2CAP Spec: 6 State Machine. More...
 
enum class  LE_Features : uint64_t {
  LE_Features::NONE = 0 , LE_Features::LE_Encryption = 0b0000000000000000000000000000000000000000000000000000000000000001 , LE_Features::Conn_Param_Req_Proc = 0b0000000000000000000000000000000000000000000000000000000000000010 , LE_Features::Ext_Rej_Ind = 0b0000000000000000000000000000000000000000000000000000000000000100 ,
  LE_Features::SlaveInit_Feat_Exchg = 0b0000000000000000000000000000000000000000000000000000000000001000 , LE_Features::LE_Ping = 0b0000000000000000000000000000000000000000000000000000000000010000 , LE_Features::LE_Data_Pkt_Len_Ext = 0b0000000000000000000000000000000000000000000000000000000000100000 , LE_Features::LL_Privacy = 0b0000000000000000000000000000000000000000000000000000000001000000 ,
  LE_Features::Ext_Scan_Filter_Pol = 0b0000000000000000000000000000000000000000000000000000000010000000 , LE_Features::LE_2M_PHY = 0b0000000000000000000000000000000000000000000000000000000100000000 , LE_Features::Stable_Mod_Idx_Tx = 0b0000000000000000000000000000000000000000000000000000001000000000 , LE_Features::Stable_Mod_Idx_Rx = 0b0000000000000000000000000000000000000000000000000000010000000000 ,
  LE_Features::LE_Coded_PHY = 0b0000000000000000000000000000000000000000000000000000100000000000 , LE_Features::LE_Ext_Adv = 0b0000000000000000000000000000000000000000000000000001000000000000 , LE_Features::LE_Per_Adv = 0b0000000000000000000000000000000000000000000000000010000000000000 , LE_Features::Chan_Sel_Algo_2 = 0b0000000000000000000000000000000000000000000000000100000000000000 ,
  LE_Features::LE_Pwr_Cls_1 = 0b0000000000000000000000000000000000000000000000001000000000000000 , LE_Features::Min_Num_Used_Chan_Proc = 0b0000000000000000000000000000000000000000000000010000000000000000 , LE_Features::Conn_CTE_Req = 0b0000000000000000000000000000000000000000000000100000000000000000 , LE_Features::Conn_CTE_Res = 0b0000000000000000000000000000000000000000000001000000000000000000 ,
  LE_Features::ConnLess_CTE_Tx = 0b0000000000000000000000000000000000000000000010000000000000000000 , LE_Features::ConnLess_CTE_Rx = 0b0000000000000000000000000000000000000000000100000000000000000000 , LE_Features::AoD = 0b0000000000000000000000000000000000000000001000000000000000000000 , LE_Features::AoA = 0b0000000000000000000000000000000000000000010000000000000000000000 ,
  LE_Features::Rx_Const_Tone_Ext = 0b0000000000000000000000000000000000000000100000000000000000000000 , LE_Features::Per_Adv_Sync_Tx_Sender = 0b0000000000000000000000000000000000000001000000000000000000000000 , LE_Features::Per_Adv_Sync_Tx_Rec = 0b0000000000000000000000000000000000000010000000000000000000000000 , LE_Features::Zzz_Clk_Acc_Upd = 0b0000000000000000000000000000000000000100000000000000000000000000 ,
  LE_Features::Rem_Pub_Key_Val = 0b0000000000000000000000000000000000001000000000000000000000000000 , LE_Features::Conn_Iso_Stream_Master = 0b0000000000000000000000000000000000010000000000000000000000000000 , LE_Features::Conn_Iso_Stream_Slave = 0b0000000000000000000000000000000000100000000000000000000000000000 , LE_Features::Iso_Brdcst = 0b0000000000000000000000000000000001000000000000000000000000000000 ,
  LE_Features::Sync_Rx = 0b0000000000000000000000000000000010000000000000000000000000000000 , LE_Features::Iso_Chan = 0b0000000000000000000000000000000100000000000000000000000000000000 , LE_Features::LE_Pwr_Ctrl_Req = 0b0000000000000000000000000000001000000000000000000000000000000000 , LE_Features::LE_Pwr_Chg_Ind = 0b0000000000000000000000000000010000000000000000000000000000000000 ,
  LE_Features::LE_Path_Loss_Mon = 0b0000000000000000000000000000100000000000000000000000000000000000
}
 HCI Supported Commands. More...
 
enum class  LE_PHYs : uint8_t { LE_PHYs::NONE = 0 , LE_PHYs::LE_1M = 0b00000001 , LE_PHYs::LE_2M = 0b00000010 , LE_PHYs::LE_CODED = 0b00000100 }
 LE Transport PHY bit values. More...
 
enum  MgmtConstU16 : uint16_t { MGMT_INDEX_NONE = 0xFFFF }
 
enum class  MgmtCSRKType : uint8_t {
  MgmtCSRKType::UNAUTHENTICATED_LOCAL = 0x00 , MgmtCSRKType::UNAUTHENTICATED_REMOTE = 0x01 , MgmtCSRKType::AUTHENTICATED_LOCAL = 0x02 , MgmtCSRKType::AUTHENTICATED_REMOTE = 0x03 ,
  MgmtCSRKType::NONE = 0xff
}
 Signature Resolving Key Types compatible with Mgmt's MgmtSignatureResolvingKey. More...
 
enum class  MgmtLinkKeyType : uint8_t {
  MgmtLinkKeyType::COMBI = 0x00 , MgmtLinkKeyType::LOCAL_UNIT = 0x01 , MgmtLinkKeyType::REMOTE_UNIT = 0x02 , MgmtLinkKeyType::DBG_COMBI = 0x03 ,
  MgmtLinkKeyType::UNAUTH_COMBI_P192 = 0x04 , MgmtLinkKeyType::AUTH_COMBI_P192 = 0x05 , MgmtLinkKeyType::CHANGED_COMBI = 0x06 , MgmtLinkKeyType::UNAUTH_COMBI_P256 = 0x07 ,
  MgmtLinkKeyType::AUTH_COMBI_P256 = 0x08 , MgmtLinkKeyType::NONE = 0xff
}
 Link Key Types compatible with Mgmt's MgmtLinkKeyInfo. More...
 
enum class  MgmtLTKType : uint8_t {
  MgmtLTKType::UNAUTHENTICATED = 0x00 , MgmtLTKType::AUTHENTICATED = 0x01 , MgmtLTKType::UNAUTHENTICATED_P256 = 0x02 , MgmtLTKType::AUTHENTICATED_P256 = 0x03 ,
  MgmtLTKType::DEBUG_P256 = 0x04 , MgmtLTKType::NONE = 0xff
}
 Long Term Key Types compatible with Mgmt's MgmtLongTermKey. More...
 
enum  MgmtOption : uint32_t { EXTERNAL_CONFIG = 0x00000001 , PUBLIC_ADDRESS = 0x00000002 }
 
enum  MgmtSizeConst : jau::nsize_t { MGMT_HEADER_SIZE = 6 , MGMT_MAX_NAME_LENGTH = 248+1 , MGMT_MAX_SHORT_NAME_LENGTH = 10+1 }
 
enum class  MgmtStatus : uint8_t {
  MgmtStatus::SUCCESS = 0x00 , MgmtStatus::UNKNOWN_COMMAND = 0x01 , MgmtStatus::NOT_CONNECTED = 0x02 , MgmtStatus::FAILED = 0x03 ,
  MgmtStatus::CONNECT_FAILED = 0x04 , MgmtStatus::AUTH_FAILED = 0x05 , MgmtStatus::NOT_PAIRED = 0x06 , MgmtStatus::NO_RESOURCES = 0x07 ,
  MgmtStatus::TIMEOUT = 0x08 , MgmtStatus::ALREADY_CONNECTED = 0x09 , MgmtStatus::BUSY = 0x0a , MgmtStatus::REJECTED = 0x0b ,
  MgmtStatus::NOT_SUPPORTED = 0x0c , MgmtStatus::INVALID_PARAMS = 0x0d , MgmtStatus::DISCONNECTED = 0x0e , MgmtStatus::NOT_POWERED = 0x0f ,
  MgmtStatus::CANCELLED = 0x10 , MgmtStatus::INVALID_INDEX = 0x11 , MgmtStatus::RFKILLED = 0x12 , MgmtStatus::ALREADY_PAIRED = 0x13 ,
  MgmtStatus::PERMISSION_DENIED = 0x14
}
 
enum class  PairingMode : uint8_t {
  PairingMode::NONE = 0 , PairingMode::NEGOTIATING = 1 , PairingMode::JUST_WORKS = 2 , PairingMode::PASSKEY_ENTRY_ini = 3 ,
  PairingMode::PASSKEY_ENTRY_res = 4 , PairingMode::NUMERIC_COMPARE_ini = 5 , PairingMode::NUMERIC_COMPARE_res = 6 , PairingMode::OUT_OF_BAND = 7 ,
  PairingMode::PRE_PAIRED = 8
}
 Bluetooth secure pairing mode. More...
 
enum class  ScanType : uint8_t { ScanType::NONE = 0 , ScanType::BREDR = 1 << number(BDAddressType::BDADDR_BREDR) , ScanType::LE = ( 1 << number(BDAddressType::BDADDR_LE_PUBLIC) ) | ( 1 << number(BDAddressType::BDADDR_LE_RANDOM) ) , ScanType::DUAL = BREDR | LE }
 Meta ScanType as derived from BTMode, with defined value mask consisting of BDAddressType bits. More...
 
enum class  SMPAuthReqs : uint8_t {
  SMPAuthReqs::NONE = 0 , SMPAuthReqs::BONDING = 0b00000001 , SMPAuthReqs::BONDING_RFU = 0b00000010 , SMPAuthReqs::MITM = 0b00000100 ,
  SMPAuthReqs::SECURE_CONNECTIONS = 0b00001000 , SMPAuthReqs::KEYPRESS = 0b00010000 , SMPAuthReqs::CT2_H7_FUNC_SUPPORT = 0b00100000 , SMPAuthReqs::RFU_1 = 0b01000000 ,
  SMPAuthReqs::RFU_2 = 0b10000000
}
 SMP Authentication Requirements Bits, denotes specific bits or whole protocol uint8_t bit-mask. More...
 
enum class  SMPConstInt : int32_t
 
enum class  SMPConstU16 : uint16_t { SMPConstU16::SMP_TIMEOUT_MS = 30000 }
 
enum class  SMPIOCapability : uint8_t {
  SMPIOCapability::DISPLAY_ONLY = 0x00 , SMPIOCapability::DISPLAY_YES_NO = 0x01 , SMPIOCapability::KEYBOARD_ONLY = 0x02 , SMPIOCapability::NO_INPUT_NO_OUTPUT = 0x03 ,
  SMPIOCapability::KEYBOARD_DISPLAY = 0x04 , SMPIOCapability::UNSET = 0xFF
}
 Vol 3, Part H, 2.3.2 IO capabilities. More...
 
enum class  SMPKeyType : uint8_t {
  SMPKeyType::NONE = 0 , SMPKeyType::ENC_KEY = 0b00000001 , SMPKeyType::ID_KEY = 0b00000010 , SMPKeyType::SIGN_KEY = 0b00000100 ,
  SMPKeyType::LINK_KEY = 0b00001000 , SMPKeyType::RFU_1 = 0b00010000 , SMPKeyType::RFU_2 = 0b00100000 , SMPKeyType::RFU_3 = 0b01000000 ,
  SMPKeyType::RFU_4 = 0b10000000
}
 SMP Key Type for Distribution, indicates keys distributed in the Transport Specific Key Distribution phase. More...
 
enum class  SMPOOBDataFlag : uint8_t { SMPOOBDataFlag::OOB_AUTH_DATA_NOT_PRESENT = 0x00 , SMPOOBDataFlag::OOB_AUTH_DATA_REMOTE_PRESENT = 0x01 }
 Vol 3, Part H, 2.3.3 OOB authentication data. More...
 
enum class  SMPPairingState : uint8_t {
  SMPPairingState::NONE = 0 , SMPPairingState::FAILED = 1 , SMPPairingState::REQUESTED_BY_RESPONDER = 2 , SMPPairingState::FEATURE_EXCHANGE_STARTED = 3 ,
  SMPPairingState::FEATURE_EXCHANGE_COMPLETED = 4 , SMPPairingState::PASSKEY_EXPECTED = 5 , SMPPairingState::NUMERIC_COMPARE_EXPECTED = 6 , SMPPairingState::PASSKEY_NOTIFY = 7 ,
  SMPPairingState::OOB_EXPECTED = 8 , SMPPairingState::KEY_DISTRIBUTION = 9 , SMPPairingState::COMPLETED = 10
}
 SMP Pairing Process state definition. More...
 

Functions

static int bt_encrypt_le (const uint8_t key[16], const uint8_t plaintext[16], uint8_t enc_data[16])
 
constexpr ScanType changeScanType (const ScanType current, const ScanType changeType, const bool changeEnable) noexcept
 
constexpr void clrAdapterSettingMaskBit (AdapterSetting &mask, const AdapterSetting bit) noexcept
 
std::string GattCharacteristicPropertyToString (const GattCharacteristicProperty v) noexcept
 
std::string GattCharacteristicTypeToString (const GattCharacteristicType v) noexcept
 
std::string GattNameToString (const jau::TROOctets &v) noexcept
 Converts a GATT Name (not null-terminated) UTF8 to a null-terminated C++ string. More...
 
std::string GattRequirementSpecToString (const GattRequirementSpec v) noexcept
 
std::string GattServiceTypeToString (const GattServiceType v) noexcept
 
constexpr AdapterSetting getAdapterSettingMaskDiff (const AdapterSetting setting_a, const AdapterSetting setting_b) noexcept
 
BTMode getAdapterSettingsBTMode (const AdapterSetting settingMask) noexcept
 Maps the given AdapterSetting to BTMode. More...
 
constexpr uint16_t getHCIConnSupervisorTimeout (const uint16_t conn_latency, const uint16_t conn_interval_max_ms, const uint16_t min_result_ms=number(HCIConstInt::LE_CONN_MIN_TIMEOUT_MS), const uint16_t multiplier=10) noexcept
 Defining the supervising timeout for LE connections to be a multiple of the maximum connection interval as follows: More...
 
constexpr int32_t getHCIMaxConnLatency (const int16_t supervision_timeout_ms, const int16_t conn_interval_max_ms)
 Supervisor timeout shall be in the range [0 - ((supervision_timeout_ms / (conn_interval_max_ms*2)) - 1)]. More...
 
PairingMode getPairingMode (const bool use_sc, const SMPAuthReqs authReqs_ini, const SMPIOCapability ioCap_ini, const SMPOOBDataFlag oobFlag_ini, const SMPAuthReqs authReqs_res, const SMPIOCapability ioCap_res, const SMPOOBDataFlag oobFlag_res) noexcept
 Returns the PairingMode derived from both devices' sets of SMPAuthReqs, SMPIOCapability and SMPOOBDataFlag. More...
 
PairingMode getPairingMode (const bool use_sc, const SMPIOCapability ioCap_ini, const SMPIOCapability ioCap_res) noexcept
 Returns the PairingMode derived from both devices' SMPIOCapability. More...
 
constexpr bool hasSMPIOCapabilityAnyIO (const SMPIOCapability ioc) noexcept
 
constexpr bool hasSMPIOCapabilityBinaryInput (const SMPIOCapability ioc) noexcept
 
constexpr bool hasSMPIOCapabilityFullInput (const SMPIOCapability ioc) noexcept
 
constexpr bool hasSMPPairingFinished (const SMPPairingState state) noexcept
 Returns true if the given SMPPairingState indicates a finished pairing process, i.e. More...
 
constexpr bool is_set (const EAD_Event_Type mask, const EAD_Event_Type bit) noexcept
 
constexpr bool is_set (const EIRDataType mask, const EIRDataType bit) noexcept
 
constexpr bool is_set (const LE_Features mask, const LE_Features bit) noexcept
 
constexpr bool is_set (const LE_PHYs mask, const LE_PHYs bit) noexcept
 
constexpr bool is_set (const ScanType current, const ScanType testType) noexcept
 
constexpr bool is_set (const SMPAuthReqs mask, const SMPAuthReqs bit) noexcept
 
constexpr bool is_set (const SMPKeyType mask, const SMPKeyType bit) noexcept
 
constexpr bool isAdapterSettingBitSet (const AdapterSetting mask, const AdapterSetting bit) noexcept
 
constexpr bool isSMPPairingActive (const SMPPairingState state) noexcept
 Returns true if the given SMPPairingState indicates an active pairing process, i.e. More...
 
constexpr bool isSMPPairingAllowingInput (const SMPPairingState state, const SMPPairingState inputSpec) noexcept
 Returns true if the given SMPPairingState indicates a pairing process waiting for user input, i.e. More...
 
constexpr bool isSMPPairingUserInteraction (const SMPPairingState state) noexcept
 Returns true if the given SMPPairingState indicates expected user interaction, i.e. More...
 
std::error_code make_error_code (HCIStatusCode e) noexcept
 
jau::POctets make_gvalue (const char *name)
 Convenience jau::POctets ctor function to create DBGattChar or DBGattDesc values. More...
 
jau::POctets make_gvalue (const char *name, const jau::nsize_t capacity)
 Convenience jau::POctets ctor function to create DBGattChar or DBGattDesc values. More...
 
jau::POctets make_gvalue (const jau::nsize_t capacity, const jau::nsize_t size)
 Convenience jau::POctets ctor function to create DBGattChar or DBGattDesc values. More...
 
jau::POctets make_gvalue (const jau::nsize_t capacity, const jau::nsize_t size, std::initializer_list< uint8_t > sourcelist)
 Convenience jau::POctets ctor function to create DBGattChar or DBGattDesc values. More...
 
jau::POctets make_gvalue (const uint16_t v)
 Convenience jau::POctets ctor function to create DBGattChar or DBGattDesc values. More...
 
jau::POctets make_gvalue (std::initializer_list< uint8_t > sourcelist)
 Convenience jau::POctets ctor function to create DBGattChar or DBGattDesc values. More...
 
constexpr uint8_t number (const AD_PDU_Type rhs) noexcept
 
constexpr uint16_t number (const AppearanceCat rhs) noexcept
 
constexpr uint8_t number (const BDAddressType rhs) noexcept
 
constexpr uint8_t number (const BLERandomAddressType rhs) noexcept
 
constexpr uint8_t number (const BTGattChar::PropertyBitVal rhs) noexcept
 
constexpr uint8_t number (const BTMode rhs) noexcept
 
constexpr uint8_t number (const BTRole rhs) noexcept
 
constexpr uint8_t number (const BTSecurityLevel rhs) noexcept
 
constexpr uint8_t number (const DiscoveryPolicy rhs) noexcept
 
constexpr uint16_t number (const EAD_Event_Type rhs) noexcept
 
constexpr uint32_t number (const EIRDataType rhs) noexcept
 
constexpr uint8_t number (const GAP_T rhs) noexcept
 
constexpr uint8_t number (const GAPFlags rhs) noexcept
 
constexpr uint8_t number (const GATTRole rhs) noexcept
 
constexpr int32_t number (const HCIConstInt rhs) noexcept
 
constexpr jau::nsize_t number (const HCIConstSizeT rhs) noexcept
 
constexpr uint16_t number (const HCIConstU16 rhs) noexcept
 
constexpr uint8_t number (const HCIEventType rhs) noexcept
 
constexpr uint8_t number (const HCILEOwnAddressType rhs) noexcept
 
constexpr uint8_t number (const HCILEPeerAddressType rhs) noexcept
 
constexpr uint8_t number (const HCIMetaEventType rhs) noexcept
 
constexpr uint8_t number (const HCIOGF rhs) noexcept
 
constexpr uint16_t number (const HCIOpcode rhs) noexcept
 
constexpr uint8_t number (const HCIOpcodeBit rhs) noexcept
 
constexpr uint8_t number (const HCIPacketType rhs) noexcept
 
constexpr uint8_t number (const HCIStatusCode rhs) noexcept
 
constexpr uint8_t number (const HCIWhitelistConnectType rhs) noexcept
 
constexpr uint16_t number (const L2CAP_CID rhs) noexcept
 
constexpr uint16_t number (const L2CAP_PSM rhs) noexcept
 
constexpr uint64_t number (const LE_Features rhs) noexcept
 
constexpr uint8_t number (const LE_PHYs rhs) noexcept
 
constexpr uint8_t number (const PairingMode rhs) noexcept
 
constexpr uint8_t number (const ScanType rhs) noexcept
 
constexpr uint8_t number (const SMPAuthReqs rhs) noexcept
 
constexpr int32_t number (const SMPConstInt rhs) noexcept
 
constexpr uint16_t number (const SMPConstU16 rhs) noexcept
 
constexpr uint8_t number (const SMPIOCapability rhs) noexcept
 
constexpr uint8_t number (const SMPKeyType rhs) noexcept
 
constexpr uint8_t number (const SMPOOBDataFlag rhs) noexcept
 
constexpr BTRole operator! (const BTRole rhs) noexcept
 
constexpr bool operator!= (const AdapterSetting lhs, const AdapterSetting rhs) noexcept
 
bool operator!= (const BDAddressAndType &lhs, const BDAddressAndType &rhs) noexcept
 
bool operator!= (const BTAdapter &lhs, const BTAdapter &rhs) noexcept
 
bool operator!= (const BTDevice &lhs, const BTDevice &rhs) noexcept
 
bool operator!= (const BTGattChar &lhs, const BTGattChar &rhs) noexcept
 
constexpr bool operator!= (const BTGattChar::PropertyBitVal lhs, const BTGattChar::PropertyBitVal rhs) noexcept
 
bool operator!= (const BTGattDesc &lhs, const BTGattDesc &rhs) noexcept
 
bool operator!= (const BTGattService &lhs, const BTGattService &rhs) noexcept
 
constexpr bool operator!= (const BTSecurityLevel lhs, const BTSecurityLevel rhs) noexcept
 
bool operator!= (const DBGattChar &lhs, const DBGattChar &rhs) noexcept
 
bool operator!= (const DBGattDesc &lhs, const DBGattDesc &rhs) noexcept
 
bool operator!= (const DBGattService &lhs, const DBGattService &rhs) noexcept
 
constexpr bool operator!= (const EAD_Event_Type lhs, const EAD_Event_Type rhs) noexcept
 
constexpr bool operator!= (const EIRDataType lhs, const EIRDataType rhs) noexcept
 
constexpr bool operator!= (const GAPFlags lhs, const GAPFlags rhs) noexcept
 
constexpr bool operator!= (const LE_Features lhs, const LE_Features rhs) noexcept
 
constexpr bool operator!= (const LE_PHYs lhs, const LE_PHYs rhs) noexcept
 
constexpr bool operator!= (const ManufactureSpecificData &lhs, const ManufactureSpecificData &rhs) noexcept
 
constexpr bool operator!= (const ScanType lhs, const ScanType rhs) noexcept
 
constexpr bool operator!= (const SMPAuthReqs lhs, const SMPAuthReqs rhs) noexcept
 
constexpr bool operator!= (const SMPIdentityResolvingKey::Property lhs, const SMPIdentityResolvingKey::Property rhs) noexcept
 
constexpr bool operator!= (const SMPKeyType lhs, const SMPKeyType rhs) noexcept
 
constexpr bool operator!= (const SMPLongTermKey::Property lhs, const SMPLongTermKey::Property rhs) noexcept
 
constexpr bool operator!= (const SMPSignatureResolvingKey::Property lhs, const SMPSignatureResolvingKey::Property rhs) noexcept
 
constexpr AdapterSetting operator& (const AdapterSetting lhs, const AdapterSetting rhs) noexcept
 
constexpr BTGattChar::PropertyBitVal operator& (const BTGattChar::PropertyBitVal lhs, const BTGattChar::PropertyBitVal rhs) noexcept
 
constexpr EAD_Event_Type operator& (const EAD_Event_Type lhs, const EAD_Event_Type rhs) noexcept
 
constexpr EIRDataType operator& (const EIRDataType lhs, const EIRDataType rhs) noexcept
 
constexpr GAPFlags operator& (const GAPFlags lhs, const GAPFlags rhs) noexcept
 
constexpr LE_Features operator& (const LE_Features lhs, const LE_Features rhs) noexcept
 
constexpr LE_PHYs operator& (const LE_PHYs lhs, const LE_PHYs rhs) noexcept
 
constexpr ScanType operator& (const ScanType lhs, const ScanType rhs) noexcept
 
constexpr SMPAuthReqs operator& (const SMPAuthReqs lhs, const SMPAuthReqs rhs) noexcept
 
constexpr SMPIdentityResolvingKey::Property operator& (const SMPIdentityResolvingKey::Property lhs, const SMPIdentityResolvingKey::Property rhs) noexcept
 
constexpr SMPKeyType operator& (const SMPKeyType lhs, const SMPKeyType rhs) noexcept
 
constexpr SMPLongTermKey::Property operator& (const SMPLongTermKey::Property lhs, const SMPLongTermKey::Property rhs) noexcept
 
constexpr SMPSignatureResolvingKey::Property operator& (const SMPSignatureResolvingKey::Property lhs, const SMPSignatureResolvingKey::Property rhs) noexcept
 
constexpr SMPIdentityResolvingKey::Propertyoperator&= (SMPIdentityResolvingKey::Property &store, const SMPIdentityResolvingKey::Property &rhs) noexcept
 
constexpr SMPKeyTypeoperator&= (SMPKeyType &store, const SMPKeyType &rhs) noexcept
 
constexpr SMPLongTermKey::Propertyoperator&= (SMPLongTermKey::Property &store, const SMPLongTermKey::Property &rhs) noexcept
 
constexpr SMPSignatureResolvingKey::Propertyoperator&= (SMPSignatureResolvingKey::Property &store, const SMPSignatureResolvingKey::Property &rhs) noexcept
 
constexpr bool operator< (const BTSecurityLevel lhs, const BTSecurityLevel rhs) noexcept
 
constexpr bool operator<= (const BTSecurityLevel lhs, const BTSecurityLevel rhs) noexcept
 
constexpr bool operator== (const AdapterSetting lhs, const AdapterSetting rhs) noexcept
 
bool operator== (const BDAddressAndType &lhs, const BDAddressAndType &rhs) noexcept
 
bool operator== (const BTAdapter &lhs, const BTAdapter &rhs) noexcept
 
bool operator== (const BTDevice &lhs, const BTDevice &rhs) noexcept
 
bool operator== (const BTGattChar &lhs, const BTGattChar &rhs) noexcept
 
constexpr bool operator== (const BTGattChar::PropertyBitVal lhs, const BTGattChar::PropertyBitVal rhs) noexcept
 
bool operator== (const BTGattDesc &lhs, const BTGattDesc &rhs) noexcept
 
bool operator== (const BTGattService &lhs, const BTGattService &rhs) noexcept
 
constexpr bool operator== (const BTSecurityLevel lhs, const BTSecurityLevel rhs) noexcept
 
bool operator== (const DBGattChar &lhs, const DBGattChar &rhs) noexcept
 
bool operator== (const DBGattDesc &lhs, const DBGattDesc &rhs) noexcept
 
bool operator== (const DBGattService &lhs, const DBGattService &rhs) noexcept
 
constexpr bool operator== (const EAD_Event_Type lhs, const EAD_Event_Type rhs) noexcept
 
constexpr bool operator== (const EIRDataType lhs, const EIRDataType rhs) noexcept
 
constexpr bool operator== (const GAPFlags lhs, const GAPFlags rhs) noexcept
 
constexpr bool operator== (const LE_Features lhs, const LE_Features rhs) noexcept
 
constexpr bool operator== (const LE_PHYs lhs, const LE_PHYs rhs) noexcept
 
constexpr bool operator== (const ManufactureSpecificData &lhs, const ManufactureSpecificData &rhs) noexcept
 
constexpr bool operator== (const ScanType lhs, const ScanType rhs) noexcept
 
constexpr bool operator== (const SMPAuthReqs lhs, const SMPAuthReqs rhs) noexcept
 
constexpr bool operator== (const SMPIdentityResolvingKey::Property lhs, const SMPIdentityResolvingKey::Property rhs) noexcept
 
constexpr bool operator== (const SMPKeyType lhs, const SMPKeyType rhs) noexcept
 
constexpr bool operator== (const SMPLongTermKey::Property lhs, const SMPLongTermKey::Property rhs) noexcept
 
constexpr bool operator== (const SMPSignatureResolvingKey::Property lhs, const SMPSignatureResolvingKey::Property rhs) noexcept
 
constexpr bool operator> (const BTSecurityLevel lhs, const BTSecurityLevel rhs) noexcept
 
constexpr bool operator>= (const BTSecurityLevel lhs, const BTSecurityLevel rhs) noexcept
 
constexpr AdapterSetting operator^ (const AdapterSetting lhs, const AdapterSetting rhs) noexcept
 
constexpr LE_Features operator^ (const LE_Features lhs, const LE_Features rhs) noexcept
 
constexpr LE_PHYs operator^ (const LE_PHYs lhs, const LE_PHYs rhs) noexcept
 
constexpr ScanType operator^ (const ScanType lhs, const ScanType rhs) noexcept
 
constexpr SMPAuthReqs operator^ (const SMPAuthReqs lhs, const SMPAuthReqs rhs) noexcept
 
constexpr SMPIdentityResolvingKey::Property operator^ (const SMPIdentityResolvingKey::Property lhs, const SMPIdentityResolvingKey::Property rhs) noexcept
 
constexpr SMPKeyType operator^ (const SMPKeyType lhs, const SMPKeyType rhs) noexcept
 
constexpr SMPLongTermKey::Property operator^ (const SMPLongTermKey::Property lhs, const SMPLongTermKey::Property rhs) noexcept
 
constexpr SMPSignatureResolvingKey::Property operator^ (const SMPSignatureResolvingKey::Property lhs, const SMPSignatureResolvingKey::Property rhs) noexcept
 
constexpr SMPIdentityResolvingKey::Propertyoperator^= (SMPIdentityResolvingKey::Property &store, const SMPIdentityResolvingKey::Property &rhs) noexcept
 
constexpr SMPKeyTypeoperator^= (SMPKeyType &store, const SMPKeyType &rhs) noexcept
 
constexpr SMPLongTermKey::Propertyoperator^= (SMPLongTermKey::Property &store, const SMPLongTermKey::Property &rhs) noexcept
 
constexpr SMPSignatureResolvingKey::Propertyoperator^= (SMPSignatureResolvingKey::Property &store, const SMPSignatureResolvingKey::Property &rhs) noexcept
 
constexpr AdapterSetting operator| (const AdapterSetting lhs, const AdapterSetting rhs) noexcept
 
constexpr BTGattChar::PropertyBitVal operator| (const BTGattChar::PropertyBitVal lhs, const BTGattChar::PropertyBitVal rhs) noexcept
 
constexpr EAD_Event_Type operator| (const EAD_Event_Type lhs, const EAD_Event_Type rhs) noexcept
 
constexpr EIRDataType operator| (const EIRDataType lhs, const EIRDataType rhs) noexcept
 
constexpr GAPFlags operator| (const GAPFlags lhs, const GAPFlags rhs) noexcept
 
constexpr LE_Features operator| (const LE_Features lhs, const LE_Features rhs) noexcept
 
constexpr LE_PHYs operator| (const LE_PHYs lhs, const LE_PHYs rhs) noexcept
 
constexpr ScanType operator| (const ScanType lhs, const ScanType rhs) noexcept
 
constexpr SMPAuthReqs operator| (const SMPAuthReqs lhs, const SMPAuthReqs rhs) noexcept
 
constexpr SMPIdentityResolvingKey::Property operator| (const SMPIdentityResolvingKey::Property lhs, const SMPIdentityResolvingKey::Property rhs) noexcept
 
constexpr SMPKeyType operator| (const SMPKeyType lhs, const SMPKeyType rhs) noexcept
 
constexpr SMPLongTermKey::Property operator| (const SMPLongTermKey::Property lhs, const SMPLongTermKey::Property rhs) noexcept
 
constexpr SMPSignatureResolvingKey::Property operator| (const SMPSignatureResolvingKey::Property lhs, const SMPSignatureResolvingKey::Property rhs) noexcept
 
constexpr SMPIdentityResolvingKey::Propertyoperator|= (SMPIdentityResolvingKey::Property &store, const SMPIdentityResolvingKey::Property &rhs) noexcept
 
constexpr SMPKeyTypeoperator|= (SMPKeyType &store, const SMPKeyType &rhs) noexcept
 
constexpr SMPLongTermKey::Propertyoperator|= (SMPLongTermKey::Property &store, const SMPLongTermKey::Property &rhs) noexcept
 
constexpr SMPSignatureResolvingKey::Propertyoperator|= (SMPSignatureResolvingKey::Property &store, const SMPSignatureResolvingKey::Property &rhs) noexcept
 
constexpr AdapterSetting operator~ (const AdapterSetting rhs) noexcept
 
constexpr EIRDataType operator~ (const EIRDataType rhs) noexcept
 
constexpr ScanType operator~ (const ScanType val) noexcept
 
constexpr SMPLongTermKey::Property operator~ (const SMPLongTermKey::Property rhs) noexcept
 
constexpr void set (EAD_Event_Type &mask, const EAD_Event_Type bit) noexcept
 
constexpr void set (EIRDataType &mask, const EIRDataType bit) noexcept
 
constexpr void setAdapterSettingMaskBit (AdapterSetting &mask, const AdapterSetting bit) noexcept
 
static int smp_crypto_ah (const uint8_t irk[16], const uint8_t r[3], uint8_t out[3])
 
bool smp_crypto_f5 (const jau::uint256_t w, const jau::uint128_t n1, const jau::uint128_t n2, const BDAddressAndType &a1, const BDAddressAndType &a2, jau::uint128_t &mackey, jau::uint128_t &ltk) noexcept
 
bool smp_crypto_rpa_irk_matches (const jau::uint128_t irk, const EUI48 &rpa) noexcept
 Returns true if the given IRK matches the given random private address (RPA). More...
 
static void sys_mem_swap (void *buf, size_t length)
 Swap buffer content. More...
 
static void sys_memcpy_swap (void *dst, const void *src, size_t length)
 Swap one buffer content into another. More...
 
BDAddressType to_BDAddressType (const HCILEOwnAddressType hciOwnAddrType) noexcept
 
BDAddressType to_BDAddressType (const HCILEPeerAddressType hciPeerAddrType) noexcept
 
constexpr BDAddressType to_BDAddressType (const uint8_t v) noexcept
 
BTMode to_BTMode (const std::string &value) noexcept
 Maps the specified name to a constant of BTMode. More...
 
constexpr BTSecurityLevel to_BTSecurityLevel (const uint8_t v) noexcept
 
constexpr DiscoveryPolicy to_DiscoveryPolicy (const uint8_t v) noexcept
 
HCILEOwnAddressType to_HCILEOwnAddressType (const BDAddressType addrType, bool resolvable) noexcept
 
HCIStatusCode to_HCIStatusCode (const MgmtStatus mstatus) noexcept
 
constexpr L2CAP_CID to_L2CAP_CID (const uint16_t v) noexcept
 
constexpr L2CAP_PSM to_L2CAP_PSM (const uint16_t v) noexcept
 
MgmtLTKType to_MgmtLTKType (const SMPLongTermKey::Property ltk_prop_mask) noexcept
 
ScanType to_ScanType (BTMode btMode)
 
constexpr SMPIOCapability to_SMPIOCapability (const uint8_t v) noexcept
 
std::string to_string (const AD_PDU_Type v) noexcept
 
std::string to_string (const AdapterInfo &a) noexcept
 
std::string to_string (const AdapterSetting settingBitMask) noexcept
 
std::string to_string (const AppearanceCat v) noexcept
 
std::string to_string (const BDAddressAndType &a) noexcept
 
std::string to_string (const BDAddressType type) noexcept
 
std::string to_string (const BLERandomAddressType type) noexcept
 
std::string to_string (const BTGattChar::PropertyBitVal mask) noexcept
 
std::string to_string (const BTMode v) noexcept
 
std::string to_string (const BTObject &o) noexcept
 
std::string to_string (const BTRole v) noexcept
 
std::string to_string (const BTSecurityLevel v) noexcept
 
std::string to_string (const DBGattServer::Mode m) noexcept
 
std::string to_string (const DiscoveryPolicy v) noexcept
 
std::string to_string (const EAD_Event_Type v) noexcept
 
std::string to_string (const EInfoReport &eir, const bool includeServices=true) noexcept
 
std::string to_string (const EIRDataType mask) noexcept
 
std::string to_string (const GAPFlags v) noexcept
 
std::string to_string (const GATTRole v) noexcept
 
std::string to_string (const HCIEventType op) noexcept
 
std::string to_string (const HCILEOwnAddressType type) noexcept
 
std::string to_string (const HCILEPeerAddressType type) noexcept
 
std::string to_string (const HCIMetaEventType op) noexcept
 
std::string to_string (const HCIOGF op) noexcept
 
std::string to_string (const HCIOpcode op) noexcept
 
std::string to_string (const HCIPacket &p) noexcept
 
std::string to_string (const HCIPacketType op) noexcept
 
std::string to_string (const HCIStatusCode ec) noexcept
 
std::string to_string (const L2CAP_CID v) noexcept
 
std::string to_string (const L2CAP_PSM v) noexcept
 
std::string to_string (const LE_Features mask) noexcept
 
std::string to_string (const LE_PHYs mask) noexcept
 
std::string to_string (const MgmtCSRKType type) noexcept
 
std::string to_string (const MgmtLinkKeyType type) noexcept
 
std::string to_string (const MgmtLTKType type) noexcept
 
std::string to_string (const MgmtStatus opc) noexcept
 
std::string to_string (const PairingMode v) noexcept
 
std::string to_string (const ScanType v) noexcept
 
std::string to_string (const SMPAuthReqs mask) noexcept
 
std::string to_String (const SMPIdentityResolvingKey &csrk) noexcept
 
std::string to_string (const SMPIOCapability ioc) noexcept
 
std::string to_string (const SMPKeyType mask) noexcept
 
std::string to_String (const SMPLongTermKey &ltk) noexcept
 
std::string to_string (const SMPOOBDataFlag v) noexcept
 
std::string to_string (const SMPPairingState state) noexcept
 
std::string to_String (const SMPPDUMsg &m) noexcept
 
std::string to_String (const SMPSignatureResolvingKey &csrk) noexcept
 
std::string to_string (EInfoReport::Source source) noexcept
 
std::string toPassKeyString (const std::uint32_t passKey) noexcept
 Returns given passKey ranging [0..999999] as a canonical string, e.g. More...
 

Variables

constexpr const bool CONSIDER_HCI_CMD_FOR_SMP_STATE = true
 
constexpr const EIRDataType EIR_DATA_TYPE_MASK
 Explicit mask to erase all implicit set EIRDataType fields: EVT_TYPE, EXT_EVT_TYPE, BDADDR_TYPE, BDADDR and RSSI. More...
 
constexpr const jau::fraction_i64 L2CAP_CLIENT_CONNECT_TIMEOUT_MS = 1_s
 Maximum time in fractions of seconds to wait for L2CAP client connection when adapter is in server mode. More...
 
constexpr const jau::nsize_t MAX_BACKGROUND_DISCOVERY_RETRY = 3
 Maximum number of enabling discovery in background in case of failure. More...
 
constexpr const bool SCAN_DISABLED_POST_CONNECT = false
 
constexpr const jau::fraction_i64 SMP_NEXT_EVENT_TIMEOUT_MS = 2_s
 Maximum time in fractions of seconds to wait for the next SMP event. More...
 
constexpr const bool SMP_SUPPORTED_BY_OS = true
 
constexpr const jau::fraction_i64 THREAD_SHUTDOWN_TIMEOUT_MS = 8_s
 Maximum time in fractions of seconds to wait for a thread shutdown. More...
 
constexpr const bool USE_LINUX_BT_SECURITY = false
 

Detailed Description


Direct-BT Overview

Direct-BT provides direct Bluetooth LE and BREDR programming, offering robust high-performance support for embedded & desktop with zero overhead via C++ and Java.

Direct-BT follows the official Bluetooth Specification and its C++ implementation contains detailed references.

Direct-BT supports a fully event driven workflow from adapter management via device discovery to GATT programming, using its platform agnostic HCI, GATT, SMP and L2CAP client-side protocol implementation.


Direct-BT Layers

BTManager utilizes the BlueZ Kernel Manager Control Channel for adapter configuration and adapter add/removal notifications (ChangedAdapterSetFunc()).

To support other platforms than Linux/BlueZ, we will have to


Direct-BT User Hierarchy

From a user central-client perspective the following hierarchy is provided, i.e. GATTRole::Client or BTAdapter in BTRole::Master:

From a user peripheral-server perspective the following hierarchy is provided, i.e. GATTRole::Server or BTAdapter in BTRole::Slave:


Direct-BT Object Lifecycle

Object lifecycle with all instances and marked weak back-references to their owner

User application instantiates for peripheral-server functionality:


Direct-BT Mapped Names C++ vs Java

Mapped names from C++ implementation to Java implementation and to Java interface:

C++
direct_bt
Java Implementation
jau.direct_bt
Java Interface
org.direct_bt
BTManager DBTManager BTManager
BTAdapter DBTAdapter BTAdapter
BTDevice DBTDevice BTDevice
BTGattService DBTGattService BTGattService
BTGattChar DBTGattChar BTGattChar
BTGattDesc DBTGattDesc BTGattDesc
DBGattService DBGattService
DBGattChar DBGattChar
DBGattDesc DBGattDesc
AdapterStatusListener AdapterStatusListener
BTGattCharListener BTGattCharListener
ChangedAdapterSetFunc() BTManager::ChangedAdapterSetListener

Direct-BT Event Driven Workflow

A fully event driven workflow from adapter management via device discovery to GATT programming is supported.

ChangedAdapterSetFunc() allows listening to added and removed BTAdapter via BTManager.

AdapterStatusListener allows listening to BTAdapter changes and BTDevice discovery.

BTGattCharListener allows listening to GATT indications and notifications.

Main event listener can be attached to these objects which maintain a set of unique listener instances without duplicates.

Other API attachment method exists for BTGattCharListener, however, they only exists for convenience and end up to be attached to BTGattHandler.


BT Core Spec v5.2: Vol 3, Part A L2CAP Spec: 7.9 PRIORITIZING DATA OVER HCI

‍In order for guaranteed channels to meet their guarantees, L2CAP should prioritize traffic over the HCI transport in devices that support HCI. Packets for Guaranteed channels should receive higher priority than packets for Best Effort channels.


ATTPDUTypes.hpp Module for ATTPDUMsg Types:


Module BTGattChar:


Module GATTDescriptor:


Module BTGattHandler:


Module GATTService:


Module DBGattServer covering the GattServer elements:


GattNumbers.hpp Module for Higher level GATT value and service types like GattServiceType, GattCharacteristicType, GattCharacteristicProperty, GattRequirementSpec .. and finally GattServiceCharacteristic.


Module HCIComm:


Module HCIHandler:


HCITypes.hpp Module for HCIPacket Types, HCIStatusCode etc:


Module L2CAPComm:


SMPHandler.hpp Module for SMPHandler using SMPPDUMsg types

Overall bookmark regarding BT Security


SMPTypes.hpp Module for SMPPDUMsg Types, SMPAuthReqs etc:

Function Documentation

◆ smp_crypto_rpa_irk_matches()

bool direct_bt::smp_crypto_rpa_irk_matches ( const jau::uint128_t  irk,
const EUI48 rpa 
)
noexcept

Returns true if the given IRK matches the given random private address (RPA).

Definition at line 167 of file SMPCrypto.cpp.

Here is the caller graph for this function:

◆ smp_crypto_f5()

bool direct_bt::smp_crypto_f5 ( const jau::uint256_t  w,
const jau::uint128_t  n1,
const jau::uint128_t  n2,
const BDAddressAndType a1,
const BDAddressAndType a2,
jau::uint128_t mackey,
jau::uint128_t ltk 
)
noexcept

◆ sys_memcpy_swap()

static void direct_bt::sys_memcpy_swap ( void *  dst,
const void *  src,
size_t  length 
)
inlinestatic

Swap one buffer content into another.

Copy the content of src buffer into dst buffer in reversed order, i.e.: src[n] will be put in dst[end-n] Where n is an index and 'end' the last index in both arrays. The 2 memory pointers must be pointing to different areas, and have a minimum size of given length.

Parameters
dstA valid pointer on a memory area where to copy the data in
srcA valid pointer on a memory area where to copy the data from
lengthSize of both dst and src memory areas

Definition at line 72 of file SMPCrypto.cpp.

Here is the caller graph for this function:

◆ sys_mem_swap()

static void direct_bt::sys_mem_swap ( void *  buf,
size_t  length 
)
inlinestatic

Swap buffer content.

In-place memory swap, where final content will be reversed. I.e.: buf[n] will be put in buf[end-n] Where n is an index and 'end' the last index of buf.

Parameters
bufA valid pointer on a memory area to swap
lengthSize of buf memory area

Definition at line 99 of file SMPCrypto.cpp.

Here is the caller graph for this function:

◆ bt_encrypt_le()

static int direct_bt::bt_encrypt_le ( const uint8_t  key[16],
const uint8_t  plaintext[16],
uint8_t  enc_data[16] 
)
static

Definition at line 111 of file SMPCrypto.cpp.

Here is the caller graph for this function:

◆ smp_crypto_ah()

static int direct_bt::smp_crypto_ah ( const uint8_t  irk[16],
const uint8_t  r[3],
uint8_t  out[3] 
)
static

Definition at line 139 of file SMPCrypto.cpp.

Here is the caller graph for this function: