26#ifndef GATT_NUMBERS_HPP_
27#define GATT_NUMBERS_HPP_
187 std::string
toString() const noexcept;
195 std::string
toString() const noexcept;
218 std::string
toString() const noexcept;
225 std::string
toString() const noexcept;
229#if defined(DIRECTBT_BUILDIN_GATT_SERVICE_CHARACTERISTIC_SPEC)
281 static std::shared_ptr<GattPeriphalPreferredConnectionParameters>
get(
const jau::TROOctets &source)
noexcept;
285 std::string
toString() const noexcept;
305 const std::shared_ptr<GattPeriphalPreferredConnectionParameters>
prefConnParam;
308 std::shared_ptr<GattPeriphalPreferredConnectionParameters> prefConnParam_) noexcept
309 : deviceName(std::move(deviceName_)), appearance(appearance_), prefConnParam(std::move(prefConnParam_)) {}
311 std::string
toString() const noexcept;
329 : vendor_id_source(0), vendor_id(0), product_id(0), product_version(0) {}
333 GattPnP_ID(
const uint8_t vendor_id_source_,
const uint16_t vendor_id_,
const uint16_t product_id_,
const uint16_t product_version_) noexcept
334 : vendor_id_source(vendor_id_source_), vendor_id(vendor_id_), product_id(product_id_), product_version(product_version_) {}
336 std::string
toString() const noexcept;
364 const std::shared_ptr<GattPnP_ID>
pnpID;
367 std::string firmwareRevision_, std::string hardwareRevision_, std::string softwareRevision_,
368 std::string manufacturer_,
jau::POctets regulatoryCertDataList_, std::shared_ptr<GattPnP_ID> pnpID_) noexcept
369 : systemID( std::move(systemID_) ), modelNumber( std::move(modelNumber_) ), serialNumber( std::move(serialNumber_) ),
370 firmwareRevision( std::move(firmwareRevision_) ), hardwareRevision( std::move(hardwareRevision_) ),
371 softwareRevision( std::move(softwareRevision_) ), manufacturer( std::move(manufacturer_) ),
372 regulatoryCertDataList( std::move(regulatoryCertDataList_) ), pnpID( std::move(pnpID_) ) {}
374 std::string
toString() const noexcept;
387 IS_TEMP_FAHRENHEIT = 1,
405 static std::shared_ptr<GattTemperatureMeasurement>
get(
const jau::TROOctets &source)
noexcept;
414 : flags(flags_), temperatureValue(temperatureValue_), timestamp(timestamp_), temperature_type(temperature_type_) {}
416 bool isFahrenheit() const noexcept {
return 0 != ( flags & Bits::IS_TEMP_FAHRENHEIT ); }
417 bool hasTimestamp() const noexcept {
return 0 != ( flags & Bits::HAS_TIMESTAMP ); }
420 std::string
toString() const noexcept;
https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Gatt/Xml/Services/org....
Generic Access Service is a mandatory GATT service all peripherals are required to implement.
const AppearanceCat appearance
Characteristic: Mandatory [Read: Mandatory; Write: Excluded; ...].
const std::string deviceName
Characteristic: Mandatory [Read: Mandatory; Write: Optional; ...].
const std::shared_ptr< GattPeriphalPreferredConnectionParameters > prefConnParam
Characteristic: Optional [Read: Mandatory; Write: Excluded; ...].
const std::string peripheralPrivacyFlag
Characteristic: Optional [Read: Mandatory; Write: Conditional; ...].
GattGenericAccessSvc(std::string deviceName_, const AppearanceCat appearance_, std::shared_ptr< GattPeriphalPreferredConnectionParameters > prefConnParam_) noexcept
const std::string reconnectionAdress
Characteristic: Conditional [Read: Excluded; Write: Mandatory; ...].
https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Gatt/Xml/Characteristics/org....
static std::shared_ptr< GattTemperatureMeasurement > get(const jau::TOctetSlice &source) noexcept
const uint8_t flags
Bitfields of Bits.
const ieee11073::AbsoluteTime timestamp
Timestamp, if HAS_TIMESTAMP is set.
GattTemperatureMeasurement(const uint8_t flags_, const float temperatureValue_, const ieee11073::AbsoluteTime ×tamp_, const uint8_t temperature_type_) noexcept
const uint8_t temperature_type
Temperature Type, if HAS_TEMP_TYPE is set: Format ????.
bool isFahrenheit() const noexcept
bool hasTimestamp() const noexcept
bool hasTemperatureType() const noexcept
const float temperatureValue
In Celsius if IS_TEMP_FAHRENHEIT is set, otherwise Fahrenheit.
Persistent endian aware octet data, i.e.
Transient endian aware octet data slice, i.e.
Transient read only and endian aware octet data, i.e.
@ little
Identifier for little endian, equivalent to endian::little.
std::string GattRequirementSpecToString(const GattRequirementSpec v) noexcept
std::string GattNameToString(const jau::TROOctets &v) noexcept
Converts a GATT Name (not null-terminated) UTF8 to a null-terminated C++ string.
GattAttributeType
Following UUID16 GATT profile attribute types are listed under: BT Core Spec v5.2: Vol 3,...
GattCharacteristicProperty
Entry * get(const EUI48 &addr, const std::string &name, AddressNameEntryMatchFunc m) noexcept
Returns a matching BTSecurityRegistry::Entry with the given addr and/or name.
std::string GattCharacteristicTypeToString(const GattCharacteristicType v) noexcept
std::string GattCharacteristicPropertyToString(const GattCharacteristicProperty v) noexcept
std::string GattServiceTypeToString(const GattServiceType v) noexcept
GattServiceType
GATT Service Type, each encapsulating a set of Characteristics.
GattCharacteristicType
GATT Assigned Characteristic Attribute Type for single logical value.
@ AuxWriteExt
FIXME: extension?
@ ReliableWriteExt
FIXME: extension?
@ LINK_LOSS
The service defines behavior on the device when a link is lost between two devices.
@ BATTERY_SERVICE
This service exposes the state of a battery within a device.
@ HEALTH_THERMOMETER
This service exposes temperature and other data from a thermometer intended for healthcare and fitnes...
@ DEVICE_INFORMATION
This service exposes manufacturer and/or vendor information about a device.
@ GENERIC_ACCESS
This service contains generic information about the device.
@ GENERIC_ATTRIBUTE
The service allows receiving indications of changed services.
@ IMMEDIATE_ALERT
This service exposes a control point to change the peripheral alert behavior.
@ if_characteristic_supported
@ if_notify_or_indicate_supported
@ TEMPERATURE_CELSIUS
Mandatory: sint16 10^-1: Celsius.
@ TEMPERATURE
Mandatory: sint16 10^-2: Celsius.
@ INTERMEDIATE_TEMPERATURE
@ TEMPERATURE_TYPE
Mandatory: 8bit: 1 armpit, 2 body (general), 3(ear), 4 (finger), ...
@ SYSTEM_ID
Mandatory: uint40.
@ PERIPHERAL_PREFERRED_CONNECTION_PARAMETERS
@ MANUFACTURER_NAME_STRING
@ REGULATORY_CERT_DATA_LIST
@ TEMPERATURE_MEASUREMENT
@ SOFTWARE_REVISION_STRING
@ PERIPHERAL_PRIVACY_FLAG
@ HARDWARE_REVISION_STRING
@ FIRMWARE_REVISION_STRING
GattCharacteristicProperty property
std::string toString() const noexcept
GattRequirementSpec requirement
jau::darray< GattCharacteristicPropertySpec > propertySpec
Aggregated in PropertySpecIdx order.
GattClientCharacteristicConfigSpec clientConfig
GattCharacteristicType characteristic
GattRequirementSpec requirement
GattCharacteristicPropertySpec writeWithAck
GattCharacteristicPropertySpec read
GattRequirementSpec requirement
Peripheral Preferred Connection Parameters is a GATT Characteristic.
const uint16_t connectionSupervisionTimeoutMultiplier
mandatory [10..3200]
const uint16_t minConnectionInterval
mandatory [6..3200] x 1.25ms
const uint16_t maxConnectionInterval
mandatory [6..3200] x 1.25ms and >= minConnectionInterval
const uint16_t slaveLatency
mandatory [1..1000]
PnP ID is a GATT Characteristic.
const uint16_t product_version
const uint8_t vendor_id_source
const uint16_t product_id
GattPnP_ID(const uint8_t vendor_id_source_, const uint16_t vendor_id_, const uint16_t product_id_, const uint16_t product_version_) noexcept
jau::darray< GattCharacteristicSpec > characteristics
const jau::darray< const GattServiceCharacteristic * > GATT_SERVICES
GattCharacteristicProperty
const GattServiceCharacteristic GATT_HEALTH_THERMOMETER_SRVC
https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Gatt/Xml/Services/org....
const GattServiceCharacteristic GATT_DEVICE_INFORMATION_SRVC
const GattServiceCharacteristic GATT_GENERIC_ACCESS_SRVC