18#ifndef NIMBLE_CPP_2904_H_
19#define NIMBLE_CPP_2904_H_
21#include "syscfg/syscfg.h"
22#if CONFIG_BT_NIMBLE_ENABLED && MYNEWT_VAL(BLE_ROLE_PERIPHERAL)
24# include "NimBLEDescriptor.h"
26struct NimBLE2904Data {
29 uint16_t m_unit{0x2700};
30 uint8_t m_namespace{1};
31 uint16_t m_description{0};
32} __attribute__((packed));
39class NimBLE2904 :
public NimBLEDescriptor {
41 NimBLE2904(NimBLECharacteristic* pChr =
nullptr);
42 static const uint8_t FORMAT_BOOLEAN = 1;
43 static const uint8_t FORMAT_UINT2 = 2;
44 static const uint8_t FORMAT_UINT4 = 3;
45 static const uint8_t FORMAT_UINT8 = 4;
46 static const uint8_t FORMAT_UINT12 = 5;
47 static const uint8_t FORMAT_UINT16 = 6;
48 static const uint8_t FORMAT_UINT24 = 7;
49 static const uint8_t FORMAT_UINT32 = 8;
50 static const uint8_t FORMAT_UINT48 = 9;
51 static const uint8_t FORMAT_UINT64 = 10;
52 static const uint8_t FORMAT_UINT128 = 11;
53 static const uint8_t FORMAT_SINT8 = 12;
54 static const uint8_t FORMAT_SINT12 = 13;
55 static const uint8_t FORMAT_SINT16 = 14;
56 static const uint8_t FORMAT_SINT24 = 15;
57 static const uint8_t FORMAT_SINT32 = 16;
58 static const uint8_t FORMAT_SINT48 = 17;
59 static const uint8_t FORMAT_SINT64 = 18;
60 static const uint8_t FORMAT_SINT128 = 19;
61 static const uint8_t FORMAT_FLOAT32 = 20;
62 static const uint8_t FORMAT_FLOAT64 = 21;
63 static const uint8_t FORMAT_SFLOAT16 = 22;
64 static const uint8_t FORMAT_SFLOAT32 = 23;
65 static const uint8_t FORMAT_IEEE20601 = 24;
66 static const uint8_t FORMAT_UTF8 = 25;
67 static const uint8_t FORMAT_UTF16 = 26;
68 static const uint8_t FORMAT_OPAQUE = 27;
69 static const uint8_t FORMAT_MEDASN1 = 28;
71 void setDescription(uint16_t description);
72 void setExponent(int8_t exponent);
73 void setFormat(uint8_t format);
74 void setNamespace(uint8_t namespace_value);
75 void setUnit(uint16_t unit);
78 friend class NimBLECharacteristic;
79 NimBLE2904Data m_data{};