75 lines
2.3 KiB
C
75 lines
2.3 KiB
C
|
/*
|
||
|
* BLE2904.h
|
||
|
*
|
||
|
* Created on: Dec 23, 2017
|
||
|
* Author: kolban
|
||
|
*/
|
||
|
|
||
|
#ifndef COMPONENTS_CPP_UTILS_BLE2904_H_
|
||
|
#define COMPONENTS_CPP_UTILS_BLE2904_H_
|
||
|
#include "sdkconfig.h"
|
||
|
#if defined(CONFIG_BT_ENABLED)
|
||
|
|
||
|
#include "BLEDescriptor.h"
|
||
|
|
||
|
struct BLE2904_Data {
|
||
|
uint8_t m_format;
|
||
|
int8_t m_exponent;
|
||
|
uint16_t m_unit; // See https://www.bluetooth.com/specifications/assigned-numbers/units
|
||
|
uint8_t m_namespace;
|
||
|
uint16_t m_description;
|
||
|
|
||
|
} __attribute__((packed));
|
||
|
|
||
|
/**
|
||
|
* @brief Descriptor for Characteristic Presentation Format.
|
||
|
*
|
||
|
* This is a convenience descriptor for the Characteristic Presentation Format which has a UUID of 0x2904.
|
||
|
*
|
||
|
* See also:
|
||
|
* https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml
|
||
|
*/
|
||
|
class BLE2904: public BLEDescriptor {
|
||
|
public:
|
||
|
BLE2904();
|
||
|
static const uint8_t FORMAT_BOOLEAN = 1;
|
||
|
static const uint8_t FORMAT_UINT2 = 2;
|
||
|
static const uint8_t FORMAT_UINT4 = 3;
|
||
|
static const uint8_t FORMAT_UINT8 = 4;
|
||
|
static const uint8_t FORMAT_UINT12 = 5;
|
||
|
static const uint8_t FORMAT_UINT16 = 6;
|
||
|
static const uint8_t FORMAT_UINT24 = 7;
|
||
|
static const uint8_t FORMAT_UINT32 = 8;
|
||
|
static const uint8_t FORMAT_UINT48 = 9;
|
||
|
static const uint8_t FORMAT_UINT64 = 10;
|
||
|
static const uint8_t FORMAT_UINT128 = 11;
|
||
|
static const uint8_t FORMAT_SINT8 = 12;
|
||
|
static const uint8_t FORMAT_SINT12 = 13;
|
||
|
static const uint8_t FORMAT_SINT16 = 14;
|
||
|
static const uint8_t FORMAT_SINT24 = 15;
|
||
|
static const uint8_t FORMAT_SINT32 = 16;
|
||
|
static const uint8_t FORMAT_SINT48 = 17;
|
||
|
static const uint8_t FORMAT_SINT64 = 18;
|
||
|
static const uint8_t FORMAT_SINT128 = 19;
|
||
|
static const uint8_t FORMAT_FLOAT32 = 20;
|
||
|
static const uint8_t FORMAT_FLOAT64 = 21;
|
||
|
static const uint8_t FORMAT_SFLOAT16 = 22;
|
||
|
static const uint8_t FORMAT_SFLOAT32 = 23;
|
||
|
static const uint8_t FORMAT_IEEE20601 = 24;
|
||
|
static const uint8_t FORMAT_UTF8 = 25;
|
||
|
static const uint8_t FORMAT_UTF16 = 26;
|
||
|
static const uint8_t FORMAT_OPAQUE = 27;
|
||
|
|
||
|
void setDescription(uint16_t);
|
||
|
void setExponent(int8_t exponent);
|
||
|
void setFormat(uint8_t format);
|
||
|
void setNamespace(uint8_t namespace_value);
|
||
|
void setUnit(uint16_t unit);
|
||
|
|
||
|
private:
|
||
|
BLE2904_Data m_data;
|
||
|
}; // BLE2904
|
||
|
|
||
|
#endif /* CONFIG_BT_ENABLED */
|
||
|
#endif /* COMPONENTS_CPP_UTILS_BLE2904_H_ */
|