30 constexpr static uint8_t ESS_CFG0_SIZE_SHIFT = 0;
31 constexpr static uint8_t ESS_CFG0_SIZE_MASK = 0b1111;
32 constexpr static uint8_t ESS_OBJCFG_TYPE_SHIFT = 0;
33 constexpr static uint8_t ESS_OBJCFG_TYPE_MASK = 0b1111;
34 constexpr static uint8_t ESS_EXTCFG_KIND_SHIFT = 0;
35 constexpr static uint8_t ESS_EXTCFG_KIND_MASK = 0xff;
36 constexpr static uint8_t ESS_EXTCFG_SIZE_SHIFT = 8;
37 constexpr static uint8_t ESS_EXTCFG_SIZE_MASK = 0xff;
38 constexpr static uint8_t ESS_DESC_USER_DESCRIPTION = 1 << 0;
39 constexpr static uint8_t ESS_DESC_VALID_RANGE = 1 << 1;
40 constexpr static uint8_t ESS_DESC_MEASUREMENT = 1 << 2;
41 constexpr static uint8_t ESS_DESC_CONFIGURATION = 1 << 3;
42 constexpr static uint8_t ESS_DESC_TRIGGER_SETTING = 1 << 4;
43 constexpr static uint8_t ESS_USER_DESCRIPTION_MAX = 16;
44 constexpr static uint8_t ESS_RAW_DESCRIPTOR_MAX = 16;
46 constexpr static uint16_t UUID16_CHR_USER_DESCRIPTION = 0x2901;
47 constexpr static uint16_t UUID16_VALID_RANGE = 0x2906;
48 constexpr static uint16_t UUID16_ES_CONFIGURATION = 0x290b;
49 constexpr static uint16_t UUID16_ES_MEASUREMENT = 0x290c;
50 constexpr static uint16_t UUID16_ES_TRIGGER_SETTING = 0x290d;
78 }
typedef SProtoNimblePrphIOBindEssObjid;
87 }
typedef SProtoNimblePrphIOBindEss;
89 CProtoNimblePrphEss(
const SObjectCfg::SObjectCfgItem *item, IProtoNimblePrphCb *cb_);
91 ~CProtoNimblePrphEss()
override;
98 static uint32_t cfgIdIOBindEssCfgObj(uint8_t type)
100 return ((type & ESS_OBJCFG_TYPE_MASK) << ESS_OBJCFG_TYPE_SHIFT);
103 static uint8_t cfgIdIOBindEssCfgObjTypeGet(uint32_t val)
105 return (val >> ESS_OBJCFG_TYPE_SHIFT) & ESS_OBJCFG_TYPE_MASK;
108 static uint32_t cfgIdIOBindEssExt(uint8_t kind, uint8_t size)
110 return ((kind & ESS_EXTCFG_KIND_MASK) << ESS_EXTCFG_KIND_SHIFT) |
111 ((size & ESS_EXTCFG_SIZE_MASK) << ESS_EXTCFG_SIZE_SHIFT);
114 static uint8_t cfgIdIOBindEssExtKindGet(uint32_t val)
116 return (val >> ESS_EXTCFG_KIND_SHIFT) & ESS_EXTCFG_KIND_MASK;
119 static uint8_t cfgIdIOBindEssExtSizeGet(uint32_t val)
121 return (val >> ESS_EXTCFG_SIZE_SHIFT) & ESS_EXTCFG_SIZE_MASK;
124 static uint32_t cfgIdIOBindEssCfg0(uint8_t size)
126 return ((size & ESS_CFG0_SIZE_MASK) << ESS_CFG0_SIZE_SHIFT);
129 static uint8_t cfgIdIOBindEssCfg0SizeGet(uint32_t val)
131 return (val >> ESS_CFG0_SIZE_SHIFT) & ESS_CFG0_SIZE_MASK;
134 static uint32_t cfgIdIOBindEssCfg1(uint8_t res)
139 static uint32_t cfgIdIOBindEssCfg2(uint8_t res)
148 struct ble_gatt_svc_def svc;
149 std::map<const SObjectId::ObjectId, uint8_t> ioTypeMap;
164 char userDescription[ESS_USER_DESCRIPTION_MAX];
177 uint8_t data[ESS_RAW_DESCRIPTOR_MAX];
179 SEssDscField measurement[6];
182 std::map<const SObjectId::ObjectId, SEssMeta> ioMetaMap;
184#ifdef CONFIG_DAWN_IO_NOTIFY
185 static int notifierCb(
void *priv, io_ddata_t *data);
188 template<
typename T,
size_t WriteBytes = sizeof(T)>
189 static int callback(uint16_t conn_handle,
190 uint16_t attr_handle,
191 struct ble_gatt_access_ctxt *ctxt,
194 static int descriptorCb(uint16_t conn_handle,
195 uint16_t attr_handle,
196 struct ble_gatt_access_ctxt *ctxt,
202 void configureDesc(
const SObjectCfg::SObjectCfgItem *item);
203 void allocObject(
const SProtoNimblePrphIOBindEssObjid &obj,
const uint32_t *ext);
204 int configureDescriptors(
struct ble_gatt_chr_def *chr,
SObjectId::ObjectId objid, uint8_t type);