29 constexpr static uint8_t AIOS_CFG0_SIZE_SHIFT = 0;
30 constexpr static uint8_t AIOS_CFG0_SIZE_MASK = 0b1111;
31 constexpr static uint8_t AIOS_CFG1_AGGREGATE_SHIFT = 0;
32 constexpr static uint8_t AIOS_CFG1_AGGREGATE_MASK = 0b1;
33 constexpr static uint8_t AIOS_OBJCFG_TYPE_SHIFT = 0;
34 constexpr static uint8_t AIOS_OBJCFG_TYPE_MASK = 0b11;
35 constexpr static uint8_t AIOS_EXTCFG_KIND_SHIFT = 0;
36 constexpr static uint8_t AIOS_EXTCFG_KIND_MASK = 0xff;
37 constexpr static uint8_t AIOS_EXTCFG_SIZE_SHIFT = 8;
38 constexpr static uint8_t AIOS_EXTCFG_SIZE_MASK = 0xff;
39 constexpr static uint8_t AIOS_DESC_USER_DESCRIPTION = 1 << 0;
40 constexpr static uint8_t AIOS_DESC_NUMBER_OF_DIGITALS = 1 << 1;
41 constexpr static uint8_t AIOS_DESC_VALUE_TRIGGER_SETTING = 1 << 2;
42 constexpr static uint8_t AIOS_DESC_TIME_TRIGGER_SETTING = 1 << 3;
43 constexpr static uint8_t AIOS_DESC_PRESENTATION_FORMAT = 1 << 4;
44 constexpr static uint8_t AIOS_DESC_EXTENDED_PROPERTIES = 1 << 5;
45 constexpr static uint8_t AIOS_USER_DESCRIPTION_MAX = 16;
46 constexpr static uint8_t AIOS_RAW_DESCRIPTOR_MAX = 16;
47 constexpr static uint8_t AIOS_PRESENTATION_FORMAT_SIZE = 7;
48 constexpr static uint8_t AIOS_EXTENDED_PROPERTIES_SIZE = 2;
50 constexpr static uint16_t UUID16_EXTENDED_PROPERTIES = 0x2900;
51 constexpr static uint16_t UUID16_PRESENTATION_FORMAT = 0x2904;
52 constexpr static uint16_t UUID16_CHR_USER_DESCRIPTION = 0x2901;
53 constexpr static uint16_t UUID16_NUMBER_OF_DIGITALS = 0x2909;
54 constexpr static uint16_t UUID16_VALUE_TRIGGER_SETTING = 0x290a;
55 constexpr static uint16_t UUID16_TIME_TRIGGER_SETTING = 0x290e;
78 }
typedef SProtoNimblePrphIOBindAiosObjid;
87 }
typedef SProtoNimblePrphIOBindAios;
89 CProtoNimblePrphAios(
const SObjectCfg::SObjectCfgItem *item, IProtoNimblePrphCb *cb_);
91 ~CProtoNimblePrphAios()
override;
98 static uint32_t cfgIdIOBindAiosCfgObj(uint8_t type)
100 return ((type & AIOS_OBJCFG_TYPE_MASK) << AIOS_OBJCFG_TYPE_SHIFT);
103 static uint8_t cfgIdIOBindAiosCfgObjTypeGet(uint32_t val)
105 return (val >> AIOS_OBJCFG_TYPE_SHIFT) & AIOS_OBJCFG_TYPE_MASK;
108 static uint32_t cfgIdIOBindAiosExt(uint8_t kind, uint8_t size)
110 return ((kind & AIOS_EXTCFG_KIND_MASK) << AIOS_EXTCFG_KIND_SHIFT) |
111 ((size & AIOS_EXTCFG_SIZE_MASK) << AIOS_EXTCFG_SIZE_SHIFT);
114 static uint8_t cfgIdIOBindAiosExtKindGet(uint32_t val)
116 return (val >> AIOS_EXTCFG_KIND_SHIFT) & AIOS_EXTCFG_KIND_MASK;
119 static uint8_t cfgIdIOBindAiosExtSizeGet(uint32_t val)
121 return (val >> AIOS_EXTCFG_SIZE_SHIFT) & AIOS_EXTCFG_SIZE_MASK;
124 static uint32_t cfgIdIOBindAiosCfg0(uint8_t size)
126 return ((size & AIOS_CFG0_SIZE_MASK) << AIOS_CFG0_SIZE_SHIFT);
129 static uint8_t cfgIdIOBindAiosCfg0SizeGet(uint32_t val)
131 return (val >> AIOS_CFG0_SIZE_SHIFT) & AIOS_CFG0_SIZE_MASK;
134 static uint32_t cfgIdIOBindAiosCfg1(uint8_t aggregate)
136 return ((aggregate & AIOS_CFG1_AGGREGATE_MASK) << AIOS_CFG1_AGGREGATE_SHIFT);
139 static bool cfgIdIOBindAiosCfg1AggregateGet(uint32_t val)
141 return ((val >> AIOS_CFG1_AGGREGATE_SHIFT) & AIOS_CFG1_AGGREGATE_MASK) != 0;
144 static uint32_t cfgIdIOBindAiosCfg2(uint8_t res)
152 bool aggregateEnabled;
154 struct ble_gatt_svc_def svc;
155 std::map<const SObjectId::ObjectId, uint8_t> ioTypeMap;
156 std::map<const SObjectId::ObjectId, SPrphNotiferCb *>
162 char userDescription[AIOS_USER_DESCRIPTION_MAX];
163 uint8_t numberOfDigitals;
166 uint8_t presentationFormat[AIOS_PRESENTATION_FORMAT_SIZE];
167 uint16_t extendedProperties;
180 uint8_t data[AIOS_RAW_DESCRIPTOR_MAX];
184 std::map<const SObjectId::ObjectId, SAiosMeta> ioMetaMap;
186#ifdef CONFIG_DAWN_IO_NOTIFY
187 static int notifierCb(
void *priv, io_ddata_t *data);
190 static int descriptorCb(uint16_t conn_handle,
191 uint16_t attr_handle,
192 struct ble_gatt_access_ctxt *ctxt,
195 static int callbackAnalog(uint16_t conn_handle,
196 uint16_t attr_handle,
197 struct ble_gatt_access_ctxt *ctxt,
200 static int callbackDigital(uint16_t conn_handle,
201 uint16_t attr_handle,
202 struct ble_gatt_access_ctxt *ctxt,
205 static int callbackAggregate(uint16_t conn_handle,
206 uint16_t attr_handle,
207 struct ble_gatt_access_ctxt *ctxt,
210 int appendAggregateValue(
struct os_mbuf *om);
214 void configureDesc(
const SObjectCfg::SObjectCfgItem *item);
215 void allocObject(
const SProtoNimblePrphIOBindAiosObjid &obj,
const uint32_t *ext);