forked from RIOT-OS/RIOT
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathble.h
500 lines (477 loc) · 25.1 KB
/
ble.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
/*
* Copyright (C) 2018 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @defgroup ble_defs Generic BLE defines
* @ingroup ble
* @brief General values defined by the BT standard
* @{
*
* @file
* @brief General BLE values as defined by the BT standard
*
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
*/
#ifndef NET_BLE_H
#define NET_BLE_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* @name BT version constants
* @{
*/
#define BLE_VERSION_40 (0x06)
#define BLE_VERSION_41 (0x07)
#define BLE_VERSION_42 (0x08)
#define BLE_VERSION_50 (0x09)
/** @} */
/**
* @name Collections of general BLE constants
* @{
*/
#define BLE_AA_LEN (4U) /**< access address length */
#define BLE_ADDR_LEN (6U) /**< link layer address length */
#define BLE_CRC_LEN (3U) /**< CRC length */
#define BLE_CHANMAP_LEN (5U) /**< channel map length */
#define BLE_CHAN_NUMOF (40U) /**< number of available channels */
#define BLE_CHAN_ADV_NUMOF (3U) /**< number of advertising channels */
#define BLE_CHAN_DAT_NUMOF (37U) /**< number of data channels */
#define BLE_ADV_PDU_LEN (31U) /**< max size of legacy ADV packets */
#define BLE_ADV_PDU_LEN_EXT (251U) /**< max size of extended ADV packets */
/** @} */
/**
* @name GATT Declaration UUIDs
*
* @see https://www.bluetooth.com/specifications/gatt/declarations
* @{
*/
#define BLE_DECL_PRI_SERVICE (0x2800)
#define BLE_DECL_SEC_SERVICE (0x2801)
#define BLE_DECL_INCLUDE (0x2802)
#define BLE_DECL_CHAR (0x2803)
/** @} */
/**
* @name GATT descriptor UUIDs
*
* @see https://www.bluetooth.com/specifications/gatt/descriptors
* @{
*/
#define BLE_DESC_AGGR_FMT (0x2905)
#define BLE_DESC_EXT_PROP (0x2900)
#define BLE_DESC_PRES_FMT (0x2904)
#define BLE_DESC_USER_DESC (0x2901)
#define BLE_DESC_CLIENT_CONFIG (0x2902)
#define BLE_DESC_ENV_CONFIG (0x290b)
#define BLE_DESC_ENV_MEASUREMENT (0x290c)
#define BLE_DESC_ENV_TRIGGER_SETTING (0x290d)
#define BLE_DESC_EXT_REPORT_REF (0x2907)
#define BLE_DESC_NUMOF_DIGITS (0x2909)
#define BLE_DESC_REPORT_REF (0x2908)
#define BLE_DESC_SERVER_CONFIG (0x2903)
#define BLE_DESC_TIME_TRIGGER_SETTING (0x290e)
#define BLE_DESC_VALID_RANGE (0x2906)
#define BLE_DESC_VALUE_TRIGGER_SETTING (0x290a)
/** @} */
/**
* @name Selected GATT service UUIDs (16-bit)
*
* @see https://www.bluetooth.com/specifications/gatt/services
* @{
*/
#define BLE_GATT_SVC_GAP (0x1800) /**< GAP service */
#define BLE_GATT_SVC_GATT (0x1801) /**< GATT service */
#define BLE_GATT_SVC_DEVINFO (0x180a) /**< device info */
#define BLE_GATT_SVC_HRS (0x180d) /**< heart rate service */
#define BLE_GATT_SVC_BAS (0x180f) /**< battery service */
#define BLE_GATT_SVC_IPSS (0x1820) /**< IP protocol support */
/* XXX: custom services not defined by the BT SIG (random values) */
#define BLE_GATT_SVC_NDNSS (0x7e5e) /**< NDN support service */
/* add more on demand */
/** @} */
/**
* @name Selected GATT characteristic UUIDs (16-bit)
*
* @see https://www.bluetooth.com/specifications/gatt/characteristics/
* @{
*/
#define BLE_GATT_CHAR_BATTERY_LEVEL (0x2a19) /**< battery level */
#define BLE_GATT_CHAR_SYSTEM_ID (0x2a23) /**< system ID */
#define BLE_GATT_CHAR_MODEL_NUMBER_STR (0x2a24) /**< model number */
#define BLE_GATT_CHAR_SERIAL_NUMBER_STR (0x2a25) /**< serial number */
#define BLE_GATT_CHAR_FW_REV_STR (0x2a26) /**< firmware revision */
#define BLE_GATT_CHAR_HW_REV_STR (0x2a27) /**< hardware revision */
#define BLE_GATT_CHAR_SW_REV_STR (0x2a28) /**< software revision */
#define BLE_GATT_CHAR_MANUFACTURER_NAME (0x2a29) /**< manufacturer name */
#define BLE_GATT_CHAR_HEART_RATE_MEASURE (0x2a37) /**< heart rate measurement */
#define BLE_GATT_CHAR_BODY_SENSE_LOC (0x2a38) /**< body sensor location */
/** @} */
/**
* @name Characteristic format types (8-bit)
*
* @see https://www.bluetooth.com/specifications/assigned-numbers/format-types
* @{
*/
#define BLE_UNIT_BLE_FMT_BOOL (0x01)
#define BLE_UNIT_BLE_FMT_2bit (0x02)
#define BLE_UNIT_BLE_FMT_NIBBLE (0x03)
#define BLE_UNIT_BLE_FMT_UINT8 (0x04)
#define BLE_UNIT_BLE_FMT_UINT12 (0x05)
#define BLE_UNIT_BLE_FMT_UINT16 (0x06)
#define BLE_UNIT_BLE_FMT_UINT24 (0x07)
#define BLE_UNIT_BLE_FMT_UINT32 (0x08)
#define BLE_UNIT_BLE_FMT_UINT48 (0x09)
#define BLE_UNIT_BLE_FMT_UINT64 (0x0A)
#define BLE_UNIT_BLE_FMT_UINT128 (0x0B)
#define BLE_UNIT_BLE_FMT_SINT8 (0x0C)
#define BLE_UNIT_BLE_FMT_SINT12 (0x0D)
#define BLE_UNIT_BLE_FMT_SINT16 (0x0E)
#define BLE_UNIT_BLE_FMT_SINT24 (0x0F)
#define BLE_UNIT_BLE_FMT_SINT32 (0x10)
#define BLE_UNIT_BLE_FMT_SINT48 (0x11)
#define BLE_UNIT_BLE_FMT_SINT64 (0x12)
#define BLE_UNIT_BLE_FMT_SINT128 (0x13)
#define BLE_UNIT_BLE_FMT_FLOAT32 (0x14)
#define BLE_UNIT_BLE_FMT_FLOAT64 (0x15)
#define BLE_UNIT_BLE_FMT_SFLOAT (0x16)
#define BLE_UNIT_BLE_FMT_FLOAT (0x17)
#define BLE_UNIT_BLE_FMT_DUINT16 (0x18)
#define BLE_UNIT_BLE_FMT_UTF8 (0x19)
#define BLE_UNIT_BLE_FMT_UTF16 (0x1A)
#define BLE_UNIT_BLE_FMT_STRUCT (0x1B)
/** @} */
/**
* @name Units (16-bit)
*
* @see https://www.bluetooth.com/specifications/assigned-numbers/units
* @{
*/
#define BLE_UNIT_NONE (0x2700) /**< no unit */
#define BLE_UNIT_BLE_UNIT_METRE (0x2701) /**< length [metre] */
#define BLE_UNIT_KILOGRAM (0x2702) /**< mass [kilogram] */
#define BLE_UNIT_SECOND (0x2703) /**< time [second] */
#define BLE_UNIT_AMPERE (0x2704) /**< electric_current [ampere] */
#define BLE_UNIT_KELVIN (0x2705) /**< thermodynamic_temperature [kelvin] */
#define BLE_UNIT_MOLE (0x2706) /**< amount_of_substance [mole] */
#define BLE_UNIT_CANDELA (0x2707) /**< luminous_intensity [candela] */
#define BLE_UNIT_SQUARE_METRES (0x2710) /**< area [square_metres] */
#define BLE_UNIT_CUBIC_METRES (0x2711) /**< volume [cubic_metres] */
#define BLE_UNIT_METRES_PER_SECOND (0x2712) /**< velocity [metres_per_second] */
#define BLE_UNIT_METRES_PER_SECOND_SQUARED (0x2713) /**< acceleration [metres_per_second_squared] */
#define BLE_UNIT_RECIPROCAL_METRE (0x2714) /**< wavenumber [reciprocal_metre] */
#define BLE_UNIT_KG_PER_CUBIC_METRE (0x2715) /**< density [kilogram_per_cubic_metre] */
#define BLE_UNIT_KG_PER_SQUARE_METRE (0x2716) /**< surface_density [kilogram_per_square_metre] */
#define BLE_UNIT_CUBIC_METRE_PER_KILOGRAM (0x2717) /**< specific_volume [cubic_metre_per_kilogram] */
#define BLE_UNIT_AMPERE_PER_SQUARE_METRE (0x2718) /**< current_density [ampere_per_square_metre] */
#define BLE_UNIT_AMPERE_PER_METRE (0x2719) /**< magnetic_field_strength [ampere_per_metre] */
#define BLE_UNIT_MOLE_PER_CUBIC_METRE (0x271a) /**< amount_concentration [mole_per_cubic_metre] */
#define BLE_UNIT_KILOGRAM_PER_CUBIC_METRE (0x271b) /**< mass_concentration [kilogram_per_cubic_metre] */
#define BLE_UNIT_CANDELA_PER_SQUARE_METRE (0x271c) /**< luminance [candela_per_square_metre] */
#define BLE_UNIT_REFRACTIVE_INDEX (0x271d) /**< refractive index */
#define BLE_UNIT_RELATIVE_PERMEABILITY (0x271e) /**< relative permeability */
#define BLE_UNIT_RADIAN (0x2720) /**< plane_angle [radian] */
#define BLE_UNIT_STERADIAN (0x2721) /**< solid_angle [steradian] */
#define BLE_UNIT_HERTZ (0x2722) /**< frequency [hertz] */
#define BLE_UNIT_NEWTON (0x2723) /**< force [newton] */
#define BLE_UNIT_PASCAL (0x2724) /**< pressure [pascal] */
#define BLE_UNIT_JOULE (0x2725) /**< energy [joule] */
#define BLE_UNIT_WATT (0x2726) /**< power [watt] */
#define BLE_UNIT_COULOMB (0x2727) /**< electric_charge [coulomb] */
#define BLE_UNIT_VOLT (0x2728) /**< electric_potential_difference [volt] */
#define BLE_UNIT_FARAD (0x2729) /**< capacitance [farad] */
#define BLE_UNIT_OHM (0x272a) /**< electric_resistance [ohm] */
#define BLE_UNIT_SIEMENS (0x272b) /**< electric_conductance [siemens] */
#define BLE_UNIT_WEBER (0x272c) /**< magnetic_flux [weber] */
#define BLE_UNIT_TESLA (0x272d) /**< magnetic_flux_density [tesla] */
#define BLE_UNIT_HENRY (0x272e) /**< inductance [henry] */
#define BLE_UNIT_DEGREE_CELSIUS (0x272f) /**< thermodynamic_temperature [degree_celsius] */
#define BLE_UNIT_LUMEN (0x2730) /**< luminous_flux [lumen] */
#define BLE_UNIT_LUX (0x2731) /**< illuminance [lux] */
#define BLE_UNIT_BECQUEREL (0x2732) /**< activity_referred_to_a_radionuclide [becquerel] */
#define BLE_UNIT_GRAY (0x2733) /**< absorbed_dose [gray] */
#define BLE_UNIT_SIEVERT (0x2734) /**< dose_equivalent [sievert] */
#define BLE_UNIT_KATAL (0x2735) /**< catalytic_activity [katal] */
#define BLE_UNIT_PASCAL_SECOND (0x2740) /**< dynamic_viscosity [pascal_second] */
#define BLE_UNIT_NEWTON_METRE (0x2741) /**< moment_of_force [newton_metre] */
#define BLE_UNIT_NEWTON_PER_METRE (0x2742) /**< surface_tension [newton_per_metre] */
#define BLE_UNIT_RADIAN_PER_SECOND (0x2743) /**< angular_velocity [radian_per_second] */
#define BLE_UNIT_RADIAN_PER_SECOND_SQUARED (0x2744) /**< angular_acceleration [radian_per_second_squared] */
#define BLE_UNIT_HEAT_FLUX_WATT_PER_M2 (0x2745) /**< heat_flux_density [watt_per_square_metre] */
#define BLE_UNIT_JOULE_PER_KELVIN (0x2746) /**< heat_capacity [joule_per_kelvin] */
#define BLE_UNIT_JOULE_PER_KG_KELVIN (0x2747) /**< specific_heat_capacity [joule_per_kilogram_kelvin] */
#define BLE_UNIT_JOULE_PER_KG (0x2748) /**< specific_energy [joule_per_kilogram] */
#define BLE_UNIT_WATT_PER_METRE_KELVIN (0x2749) /**< thermal_conductivity [watt_per_metre_kelvin] */
#define BLE_UNIT_JOULE_PER_CUBIC_METRE (0x274a) /**< energy_density [joule_per_cubic_metre] */
#define BLE_UNIT_VOLT_PER_METRE (0x274b) /**< electric_field_strength [volt_per_metre] */
#define BLE_UNIT_COULOMB_PER_CUBIC_METRE (0x274c) /**< electric_charge_density [coulomb_per_cubic_metre] */
#define BLE_UNIT_COULOMB_PER_M2 (0x274d) /**< surface_charge_density [coulomb_per_square_metre] */
#define BLE_UNIT_FLUX_COULOMB_PER_M2 (0x274e) /**< electric_flux_density [coulomb_per_square_metre] */
#define BLE_UNIT_FARAD_PER_METRE (0x274f) /**< permittivity [farad_per_metre] */
#define BLE_UNIT_HENRY_PER_METRE (0x2750) /**< permeability [henry_per_metre] */
#define BLE_UNIT_JOULE_PER_MOLE (0x2751) /**< molar_energy [joule_per_mole] */
#define BLE_UNIT_JOULE_PER_MOLE_KELVIN (0x2752) /**< molar_entropy [joule_per_mole_kelvin] */
#define BLE_UNIT_COULOMB_PER_KG (0x2753) /**< exposure [coulomb_per_kilogram] */
#define BLE_UNIT_GRAY_PER_SECOND (0x2754) /**< absorbed_dose_rate [gray_per_second] */
#define BLE_UNIT_WATT_PER_STERADIAN (0x2755) /**< radiant_intensity [watt_per_steradian] */
#define BLE_UNIT_WATT_PER_M2_STERADIAN (0x2756) /**< radiance [watt_per_square_metre_steradian] */
#define BLE_UNIT_KATAL_PER_CUBIC_METRE (0x2757) /**< catalytic_activity_concentration [katal_per_cubic_metre] */
#define BLE_UNIT_MINUTE (0x2760) /**< time [minute] */
#define BLE_UNIT_HOUR (0x2761) /**< time [hour] */
#define BLE_UNIT_DAY (0x2762) /**< time [day] */
#define BLE_UNIT_ANGLE_DEGREE (0x2763) /**< plane_angle [degree] */
#define BLE_UNIT_ANGLE_MINUTE (0x2764) /**< plane_angle [minute] */
#define BLE_UNIT_ANGLE_SECOND (0x2765) /**< plane_angle [second] */
#define BLE_UNIT_HECTARE (0x2766) /**< area [hectare] */
#define BLE_UNIT_LITRE (0x2767) /**< volume [litre] */
#define BLE_UNIT_TONNE (0x2768) /**< mass [tonne] */
#define BLE_UNIT_BAR (0x2780) /**< pressure [bar] */
#define BLE_UNIT_MILLIMETRE_OF_MERCURY (0x2781) /**< pressure [millimetre_of_mercury] */
#define BLE_UNIT_NGSTRM (0x2782) /**< length [ngstrm] */
#define BLE_UNIT_NAUTICAL_MILE (0x2783) /**< length [nautical_mile] */
#define BLE_UNIT_BARN (0x2784) /**< area [barn] */
#define BLE_UNIT_KNOT (0x2785) /**< velocity [knot] */
#define BLE_UNIT_NEPER (0x2786) /**< logarithmic_radio_quantity [neper] */
#define BLE_UNIT_BEL (0x2787) /**< logarithmic_radio_quantity [bel] */
#define BLE_UNIT_YARD (0x27a0) /**< length [yard] */
#define BLE_UNIT_PARSEC (0x27a1) /**< length [parsec] */
#define BLE_UNIT_INCH (0x27a2) /**< length [inch] */
#define BLE_UNIT_FOOT (0x27a3) /**< length [foot] */
#define BLE_UNIT_MILE (0x27a4) /**< length [mile] */
#define BLE_UNIT_POUND_FORCE_PER_SQU_INCH (0x27a5) /**< pressure [pound_force_per_square_inch] */
#define BLE_UNIT_KILOMETRE_PER_HOUR (0x27a6) /**< velocity [kilometre_per_hour] */
#define BLE_UNIT_MILE_PER_HOUR (0x27a7) /**< velocity [mile_per_hour] */
#define BLE_UNIT_REVOLUTION_PER_MINUTE (0x27a8) /**< angular_velocity [revolution_per_minute] */
#define BLE_UNIT_GRAM_CALORIE (0x27a9) /**< energy [gram_calorie] */
#define BLE_UNIT_KG_CALORIE (0x27aa) /**< energy [kilogram_calorie] */
#define BLE_UNIT_KILOWATT_HOUR (0x27ab) /**< energy [kilowatt_hour] */
#define BLE_UNIT_DEGREE_FAHRENHEIT (0x27ac) /**< thermodynamic_temperature [degree_fahrenheit] */
#define BLE_UNIT_PERCENTAGE (0x27ad) /**< percentage */
#define BLE_UNIT_PER_MILLE (0x27ae) /**< per mille */
#define BLE_UNIT_BEATS_PER_MINUTE (0x27af) /**< period [beats_per_minute] */
#define BLE_UNIT_AMPERE_HOURS (0x27b0) /**< electric_charge [ampere_hours] */
#define BLE_UNIT_MILLIGRAM_PER_DECILITRE (0x27b1) /**< mass_density [milligram_per_decilitre] */
#define BLE_UNIT_MILLIMOLE_PER_LITRE (0x27b2) /**< mass_density [millimole_per_litre] */
#define BLE_UNIT_YEAR (0x27b3) /**< time [year] */
#define BLE_UNIT_MONTH (0x27b4) /**< time [month] */
#define BLE_UNIT_COUNT_PER_CUBIC_METRE (0x27b5) /**< concentration [count_per_cubic_metre] */
#define BLE_UNIT_WATT_PER_SQUARE_METRE (0x27b6) /**< irradiance [watt_per_square_metre] */
#define BLE_UNIT_MLIT_PER_KG_PER_MINUTE (0x27b7) /**< transfer_rate [milliliter_per_kilogram_per_minute] */
#define BLE_UNIT_POUND (0x27b8) /**< mass [pound] */
#define BLE_UNIT_METABOLIC_EQU (0x27b9) /**< metabolic equivalent */
#define BLE_UNIT_STEP_PER_MINUTE (0x27ba) /**< steps per minute */
#define BLE_UNIT_STROKE_PER_MINUTE (0x27bc) /**< strokes per minute */
#define BLE_UNIT_KILOMETER_PER_MINUTE (0x27bd) /**< velocity [kilometer_per_minute] */
#define BLE_UNIT_LUMEN_PER_WATT (0x27be) /**< luminous_efficacy [lumen_per_watt] */
#define BLE_UNIT_LUMEN_HOUR (0x27bf) /**< luminous_energy [lumen_hour] */
#define BLE_UNIT_LUX_HOUR (0x27c0) /**< luminous_exposure [lux_hour] */
#define BLE_UNIT_GRAM_PER_SECOND (0x27c1) /**< mass_flow [gram_per_second] */
#define BLE_UNIT_LITRE_PER_SECOND (0x27c2) /**< volume_flow [litre_per_second] */
/** @} */
/**
* @brief Channel identifiers defined for L2CAP LE-U link layers
* @{
*/
#define BLE_L2CAP_CID_IPSP (0x0023)
#define BLE_L2CAP_CID_CB_MIN (0x0040)
#define BLE_L2CAP_CID_CB_MAX (0x007f)
/** @} */
/**
* @name ATT protocol opcodes
* @{
*/
#define BLE_ATT_ERROR_RESP (0x01)
#define BLE_ATT_MTU_REQ (0x02)
#define BLE_ATT_MTU_RESP (0x03)
#define BLE_ATT_FIND_INFO_REQ (0x04)
#define BLE_ATT_FIND_INFO_RESP (0x05)
#define BLE_ATT_FIND_BY_VAL_REQ (0x06)
#define BLE_ATT_FIND_BY_VAL_RESP (0x07)
#define BLE_ATT_READ_BY_TYPE_REQ (0x08)
#define BLE_ATT_READ_BY_TYPE_RESP (0x09)
#define BLE_ATT_READ_REQ (0x0a)
#define BLE_ATT_READ_RESP (0x0b)
#define BLE_ATT_READ_BLOB_REQ (0x0c)
#define BLE_ATT_READ_BLOB_RESP (0x0d)
#define BLE_ATT_READ_MUL_REQ (0x0e)
#define BLE_ATT_READ_MUL_RESP (0x0f)
#define BLE_ATT_READ_BY_GROUP_TYPE_REQ (0x10)
#define BLE_ATT_READ_BY_GROUP_TYPE_RESP (0x11)
#define BLE_ATT_WRITE_REQ (0x12)
#define BLE_ATT_WRITE_RESP (0x13)
#define BLE_ATT_WRITE_COMMAND (0x52)
#define BLE_ATT_PREP_WRITE_REQ (0x16)
#define BLE_ATT_PREP_WRITE_RESP (0x17)
#define BLE_ATT_EXEC_WRITE_REQ (0x18)
#define BLE_ATT_EXEC_WRITE_RESP (0x19)
#define BLE_ATT_VAL_NOTIFICATION (0x1b)
#define BLE_ATT_VAL_INDICATION (0x1d)
#define BLE_ATT_VAL_CONFIRMATION (0x1e)
#define BLE_ATT_SIGNED_WRITE_CMD (0xd2)
/** @} */
/**
* @name ATT protocol error codes
* @{
*/
#define BLE_ATT_INVALID_HANDLE (0x01)
#define BLE_ATT_READ_NOT_PERMITTED (0x02)
#define BLE_ATT_WRITE_NOT_PERMITTED (0x03)
#define BLE_ATT_INVALID_PDU (0x04)
#define BLE_ATT_INSUFFICIENT_AUTHEN (0x05)
#define BLE_ATT_REQUEST_NOT_SUP (0x06)
#define BLE_ATT_INVALID_OFFSET (0x07)
#define BLE_ATT_INSUFFICIENT_AUTHOR (0x08)
#define BLE_ATT_PREPARE_QUEUE_FULL (0x09)
#define BLE_ATT_ATTRIBUTE_NOT_FOUND (0x0a)
#define BLE_ATT_ATTRIBUTE_NOT_LONG (0x0b)
#define BLE_ATT_INSUFFICENT_KEY_SIZE (0x0c)
#define BLE_ATT_INVALID_ATTR_VAL_LEN (0x0d)
#define BLE_ATT_ULIKELY_ERROR (0x0e)
#define BLE_ATT_INSUFFICIENT_ENCRYPTION (0x0f)
#define BLE_ATT_UNSUPPORTED_GROUP_TYPE (0x10)
#define BLE_ATT_INSUFFICIENT_RESSOURCES (0x11)
/** @} */
/**
* @name ATT property flags
* @{
*/
#define BLE_ATT_BROADCAST (0x01)
#define BLE_ATT_READ (0x02)
#define BLE_ATT_WRITE_WO_RESP (0x04)
#define BLE_ATT_WRITE (0x08)
#define BLE_ATT_NOTIFY (0x10)
#define BLE_ATT_INDICATE (0x20)
#define BLE_ATT_AUTH_SIGNED_WRITES (0x40)
#define BLE_ATT_EXT_PROPERTIES (0x80)
/** @} */
/**
* @name Flags used in certain types of ATT PDUs
* @{
*/
#define BLE_ATT_FORMAT_U16 (0x01) /**< used in FIND_INFO_RESP */
#define BLE_ATT_FORMAT_U128 (0x02) /**< used in FIND_INFO_RESP */
/** @} */
/**
* @name GAP advertisement data type values
*
* @see https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile
* @{
*/
#define BLE_GAP_AD_FLAGS (0x01)
#define BLE_GAP_AD_UUID16_INCOMP (0x02)
#define BLE_GAP_AD_UUID16_COMP (0x03)
#define BLE_GAP_AD_UUID32_INCOMP (0x04)
#define BLE_GAP_AD_UUID32_COMP (0x05)
#define BLE_GAP_AD_UUID128_INCOMP (0x06)
#define BLE_GAP_AD_UUID128_COMP (0x07)
#define BLE_GAP_AD_NAME_SHORT (0x08)
#define BLE_GAP_AD_NAME (0x09)
#define BLE_GAP_AD_TX_POWER_LEVEL (0x0a)
#define BLE_GAP_AD_CLASS_OF_DEVICE (0x0d)
#define BLE_GAP_AD_PAIRING_HASH_192 (0x0e)
#define BLE_GAP_AD_PAIRING_RAND_192 (0x0f)
#define BLE_GAP_AD_DEVICE_ID (0x10)
#define BLE_GAP_AD_SEC_MANAGER_TK_VAL (0x10)
#define BLE_GAP_AD_SEC_MANAGER_OOB_FLAGS (0x11)
#define BLE_GAP_AD_SLAVE_CON_INTERVAL (0x12)
#define BLE_GAP_AD_LIST_SOL_UUID_16 (0x14)
#define BLE_GAP_AD_LIST_SOL_UUID_128 (0x15)
#define BLE_GAP_AD_SERVICE_DATA (0x16)
#define BLE_GAP_AD_SERVICE_DATA_UUID16 (0x16)
#define BLE_GAP_AD_ADDR_PUBLIC (0x17)
#define BLE_GAP_AD_ADDR_RANDOM (0x18)
#define BLE_GAP_AD_APPEARANCE (0x19)
#define BLE_GAP_AD_ADV_INTERVAL (0x1a)
#define BLE_GAP_AD_LE_DEVICE_ADDR (0x1b)
#define BLE_GAP_AD_LE_ROLE (0x1c)
#define BLE_GAP_AD_PAIRING_HASH_256 (0x1d)
#define BLE_GAP_AD_PAIRING_RAND_256 (0x1e)
#define BLE_GAP_AD_LIST_SOL_UUID_32 (0x1f)
#define BLE_GAP_AD_SERVICE_DATA_32 (0x20)
#define BLE_GAP_AD_SERVICE_DATA_128 (0x21)
#define BLE_GAP_AD_LE_SEC_CON_CONF_VAL (0x22)
#define BLE_GAP_AD_LE_SEC_CON_RAND_VAL (0x23)
#define BLE_GAP_AD_URI (0x24)
#define BLE_GAP_AD_INDOOR_POSITIONING (0x25)
#define BLE_GAP_AD_TRANSPORT_DISC_DATA (0x26)
#define BLE_GAP_AD_LE_SUP_FEATURES (0x27)
#define BLE_GAP_AD_CHAN_MAP_UPDATE_IND (0x28)
#define BLE_GAP_AD_3D_INFO_DATA (0x3d)
#define BLE_GAP_AD_VENDOR (0xff)
/** @} */
/**
* @name Flags used in GAP advertisement packets
* @{
*/
#define BLE_GAP_DISCOVER_LIM (0x01)
#define BLE_GAP_DISCOVERABLE (0x02)
#define BLE_GAP_FLAG_BREDR_NOTSUP (0x04)
/** @} */
/**
* @name BLE advertising packet types
* @{
*/
#define BLE_PDU_MASK (0x0f)
#define BLE_ADV_IND (0x00)
#define BLE_DIRECT_IND (0x01)
#define BLE_ADV_NONCON_IND (0x02)
#define BLE_SCAN_REQ (0x03)
#define BLE_AUX_SCAN_REQ (0x03)
#define BLE_SCAN_RESP (0x04)
#define BLE_CONNECT_IND (0x05)
#define BLE_AUX_CONNECT_REQ (0x05)
#define BLE_ADV_SCAN_IND (0x06)
#define BLE_ADV_EXT_IND (0x07)
#define BLE_AUX_ADV_IND (0x07)
#define BLE_AUX_SCAN_RSP (0x07)
#define BLE_AUX_SYNC_IND (0x07)
#define BLE_AUX_CHAIN_IND (0x07)
#define BLE_CONNECT_RESP (0x08)
/** @} */
/**
* @name Advertising packet flags
* @{
*/
#define BLE_LL_FLAG_CHSEL (0x20)
#define BLE_LL_FLAG_TXADD (0x40)
#define BLE_LL_FLAG_RXADD (0x80)
/** @} */
/**
* @name Link layer control message opcodes
* @{
*/
#define BLE_LL_CONN_UPDATE_IND (0x00)
#define BLE_LL_CHANNEL_MAP_IND (0x01)
#define BLE_LL_TERMINATE_IND (0x02)
#define BLE_LL_ENC_REQ (0x03)
#define BLE_LL_ENC_RSP (0x04)
#define BLE_LL_START_ENC_REQ (0x05)
#define BLE_LL_START_ENC_RSP (0x06)
#define BLE_LL_UNKNOWN_RSP (0x07)
#define BLE_LL_FEATURE_REQ (0x08)
#define BLE_LL_FEATURE_RSP (0x09)
#define BLE_LL_PAUSE_ENC_REQ (0x0a)
#define BLE_LL_PAUSE_ENC_RSP (0x0b)
#define BLE_LL_VERSION_IND (0x0c)
#define BLE_LL_REJECT_IND (0x0d)
#define BLE_LL_SLAVE_FEATURE_REQ (0x0e)
#define BLE_LL_CONN_PARAM_REQ (0x0f)
#define BLE_LL_CONN_PARAM_RSP (0x10)
#define BLE_LL_REJECT_EXT_IND (0x11)
#define BLE_LL_PING_REQ (0x12)
#define BLE_LL_PING_RSP (0x13)
#define BLE_LL_LENGTH_REQ (0x14)
#define BLE_LL_LENGTH_RSP (0x15)
#define BLE_LL_PHY_REQ (0x16)
#define BLE_LL_PHY_RSP (0x17)
#define BLE_LL_PHY_UPDATE_IND (0x18)
#define BLE_LL_MIN_USED_CHAN_IND (0x19)
/** @} */
#ifdef __cplusplus
}
#endif
#endif /* NET_BLE_H */
/** @} */