Zephyr Project API  3.3.0
A Scalable Open Source RTOS
gap.h
Go to the documentation of this file.
1
5/*
6 * Copyright (c) 2019 Nordic Semiconductor ASA
7 *
8 * SPDX-License-Identifier: Apache-2.0
9 */
10
11#ifndef ZEPHYR_INCLUDE_BLUETOOTH_GAP_H_
12#define ZEPHYR_INCLUDE_BLUETOOTH_GAP_H_
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
26#define BT_COMP_ID_LF 0x05f1 /* The Linux Foundation */
27
29#define BT_DATA_FLAGS 0x01 /* AD flags */
30#define BT_DATA_UUID16_SOME 0x02 /* 16-bit UUID, more available */
31#define BT_DATA_UUID16_ALL 0x03 /* 16-bit UUID, all listed */
32#define BT_DATA_UUID32_SOME 0x04 /* 32-bit UUID, more available */
33#define BT_DATA_UUID32_ALL 0x05 /* 32-bit UUID, all listed */
34#define BT_DATA_UUID128_SOME 0x06 /* 128-bit UUID, more available */
35#define BT_DATA_UUID128_ALL 0x07 /* 128-bit UUID, all listed */
36#define BT_DATA_NAME_SHORTENED 0x08 /* Shortened name */
37#define BT_DATA_NAME_COMPLETE 0x09 /* Complete name */
38#define BT_DATA_TX_POWER 0x0a /* Tx Power */
39#define BT_DATA_SM_TK_VALUE 0x10 /* Security Manager TK Value */
40#define BT_DATA_SM_OOB_FLAGS 0x11 /* Security Manager OOB Flags */
41#define BT_DATA_PERIPHERAL_INT_RANGE 0x12 /* Peripheral Connection Interval Range */
42#define BT_DATA_SOLICIT16 0x14 /* Solicit UUIDs, 16-bit */
43#define BT_DATA_SOLICIT128 0x15 /* Solicit UUIDs, 128-bit */
44#define BT_DATA_SVC_DATA16 0x16 /* Service data, 16-bit UUID */
45#define BT_DATA_PUB_TARGET_ADDR 0x17 /* Public Target Address */
46#define BT_DATA_RAND_TARGET_ADDR 0x18 /* Random Target Address */
47#define BT_DATA_GAP_APPEARANCE 0x19 /* GAP appearance */
48#define BT_DATA_ADV_INT 0x1a /* Advertising Interval */
49#define BT_DATA_LE_BT_DEVICE_ADDRESS 0x1b /* LE Bluetooth Device Address */
50#define BT_DATA_LE_ROLE 0x1c /* LE Role */
51#define BT_DATA_SIMPLE_PAIRING_HASH 0x1d /* Simple Pairing Hash C256 */
52#define BT_DATA_SIMPLE_PAIRING_RAND 0x1e /* Simple Pairing Randomizer R256 */
53#define BT_DATA_SOLICIT32 0x1f /* Solicit UUIDs, 32-bit */
54#define BT_DATA_SVC_DATA32 0x20 /* Service data, 32-bit UUID */
55#define BT_DATA_SVC_DATA128 0x21 /* Service data, 128-bit UUID */
56#define BT_DATA_LE_SC_CONFIRM_VALUE 0x22 /* LE SC Confirmation Value */
57#define BT_DATA_LE_SC_RANDOM_VALUE 0x23 /* LE SC Random Value */
58#define BT_DATA_URI 0x24 /* URI */
59#define BT_DATA_INDOOR_POS 0x25 /* Indoor Positioning */
60#define BT_DATA_TRANS_DISCOVER_DATA 0x26 /* Transport Discovery Data */
61#define BT_DATA_LE_SUPPORTED_FEATURES 0x27 /* LE Supported Features */
62#define BT_DATA_CHANNEL_MAP_UPDATE_IND 0x28 /* Channel Map Update Indication */
63#define BT_DATA_MESH_PROV 0x29 /* Mesh Provisioning PDU */
64#define BT_DATA_MESH_MESSAGE 0x2a /* Mesh Networking PDU */
65#define BT_DATA_MESH_BEACON 0x2b /* Mesh Beacon */
66#define BT_DATA_BIG_INFO 0x2c /* BIGInfo */
67#define BT_DATA_BROADCAST_CODE 0x2d /* Broadcast Code */
68#define BT_DATA_CSIS_RSI 0x2e /* CSIS Random Set ID type */
69#define BT_DATA_ADV_INT_LONG 0x2f /* Advertising Interval long */
70#define BT_DATA_BROADCAST_NAME 0x30 /* Broadcast Name */
71#define BT_DATA_3D_INFO 0x3D /* 3D Information Data */
72
73#define BT_DATA_MANUFACTURER_DATA 0xff /* Manufacturer Specific Data */
74
75#define BT_LE_AD_LIMITED 0x01 /* Limited Discoverable */
76#define BT_LE_AD_GENERAL 0x02 /* General Discoverable */
77#define BT_LE_AD_NO_BREDR 0x04 /* BR/EDR not supported */
78
79/* Defined GAP timers */
80#define BT_GAP_SCAN_FAST_INTERVAL 0x0060 /* 60 ms */
81#define BT_GAP_SCAN_FAST_WINDOW 0x0030 /* 30 ms */
82#define BT_GAP_SCAN_SLOW_INTERVAL_1 0x0800 /* 1.28 s */
83#define BT_GAP_SCAN_SLOW_WINDOW_1 0x0012 /* 11.25 ms */
84#define BT_GAP_SCAN_SLOW_INTERVAL_2 0x1000 /* 2.56 s */
85#define BT_GAP_SCAN_SLOW_WINDOW_2 0x0012 /* 11.25 ms */
86#define BT_GAP_ADV_FAST_INT_MIN_1 0x0030 /* 30 ms */
87#define BT_GAP_ADV_FAST_INT_MAX_1 0x0060 /* 60 ms */
88#define BT_GAP_ADV_FAST_INT_MIN_2 0x00a0 /* 100 ms */
89#define BT_GAP_ADV_FAST_INT_MAX_2 0x00f0 /* 150 ms */
90#define BT_GAP_ADV_SLOW_INT_MIN 0x0640 /* 1 s */
91#define BT_GAP_ADV_SLOW_INT_MAX 0x0780 /* 1.2 s */
92#define BT_GAP_PER_ADV_FAST_INT_MIN_1 0x0018 /* 30 ms */
93#define BT_GAP_PER_ADV_FAST_INT_MAX_1 0x0030 /* 60 ms */
94#define BT_GAP_PER_ADV_FAST_INT_MIN_2 0x0050 /* 100 ms */
95#define BT_GAP_PER_ADV_FAST_INT_MAX_2 0x0078 /* 150 ms */
96#define BT_GAP_PER_ADV_SLOW_INT_MIN 0x0320 /* 1 s */
97#define BT_GAP_PER_ADV_SLOW_INT_MAX 0x03C0 /* 1.2 s */
98#define BT_GAP_INIT_CONN_INT_MIN 0x0018 /* 30 ms */
99#define BT_GAP_INIT_CONN_INT_MAX 0x0028 /* 50 ms */
100
102enum {
111};
112
114enum {
127};
128
130enum {
141};
142
144#define BT_GAP_ADV_MAX_ADV_DATA_LEN 31
150#define BT_GAP_ADV_MAX_EXT_ADV_DATA_LEN 1650
151
152#define BT_GAP_TX_POWER_INVALID 0x7f
153#define BT_GAP_RSSI_INVALID 0x7f
154#define BT_GAP_SID_INVALID 0xff
155#define BT_GAP_NO_TIMEOUT 0x0000
156
157/* The maximum allowed high duty cycle directed advertising timeout, 1.28
158 * seconds in 10 ms unit.
159 */
160#define BT_GAP_ADV_HIGH_DUTY_CYCLE_MAX_TIMEOUT 128
161
162#define BT_GAP_DATA_LEN_DEFAULT 0x001b /* 27 bytes */
163#define BT_GAP_DATA_LEN_MAX 0x00fb /* 251 bytes */
164
165#define BT_GAP_DATA_TIME_DEFAULT 0x0148 /* 328 us */
166#define BT_GAP_DATA_TIME_MAX 0x4290 /* 17040 us */
167
168#define BT_GAP_SID_MAX 0x0F
169#define BT_GAP_PER_ADV_MAX_SKIP 0x01F3
170#define BT_GAP_PER_ADV_MIN_TIMEOUT 0x000A
171#define BT_GAP_PER_ADV_MAX_TIMEOUT 0x4000
173#define BT_GAP_PER_ADV_MIN_INTERVAL 0x0006
175#define BT_GAP_PER_ADV_MAX_INTERVAL 0xFFFF
176
182#define BT_GAP_PER_ADV_INTERVAL_TO_MS(interval) ((interval) * 5 / 4)
183
185enum {
194};
195
197enum {
207};
208
228#define BT_LE_SUPP_FEAT_40_ENCODE(w64) \
229 (((w64) >> 0) & 0xFF), \
230 (((w64) >> 8) & 0xFF), \
231 (((w64) >> 16) & 0xFF), \
232 (((w64) >> 24) & 0xFF), \
233 (((w64) >> 32) & 0xFF)
234
253#define BT_LE_SUPP_FEAT_32_ENCODE(w64) \
254 (((w64) >> 0) & 0xFF), \
255 (((w64) >> 8) & 0xFF), \
256 (((w64) >> 16) & 0xFF), \
257 (((w64) >> 24) & 0xFF)
258
278#define BT_LE_SUPP_FEAT_24_ENCODE(w64) \
279 (((w64) >> 0) & 0xFF), \
280 (((w64) >> 8) & 0xFF), \
281 (((w64) >> 16) & 0xFF),
282
302#define BT_LE_SUPP_FEAT_16_ENCODE(w64) \
303 (((w64) >> 0) & 0xFF), \
304 (((w64) >> 8) & 0xFF),
305
325#define BT_LE_SUPP_FEAT_8_ENCODE(w64) \
326 (((w64) >> 0) & 0xFF)
327
336#define BT_LE_SUPP_FEAT_VALIDATE(w64) \
337 BUILD_ASSERT(!((w64) & (~BIT64_MASK(40))), \
338 "RFU bit in LE Supported Features are not zeros.")
339
344#ifdef __cplusplus
345}
346#endif
347
348#endif /* ZEPHYR_INCLUDE_BLUETOOTH_GAP_H_ */
@ BT_GAP_LE_PHY_1M
Definition: gap.h:106
@ BT_GAP_LE_PHY_2M
Definition: gap.h:108
@ BT_GAP_LE_PHY_CODED
Definition: gap.h:110
@ BT_GAP_LE_PHY_NONE
Definition: gap.h:104
@ BT_GAP_ADV_PROP_DIRECTED
Definition: gap.h:136
@ BT_GAP_ADV_PROP_SCAN_RESPONSE
Definition: gap.h:138
@ BT_GAP_ADV_PROP_SCANNABLE
Definition: gap.h:134
@ BT_GAP_ADV_PROP_EXT_ADV
Definition: gap.h:140
@ BT_GAP_ADV_PROP_CONNECTABLE
Definition: gap.h:132
@ BT_GAP_ADV_TYPE_ADV_DIRECT_IND
Definition: gap.h:118
@ BT_GAP_ADV_TYPE_EXT_ADV
Definition: gap.h:126
@ BT_GAP_ADV_TYPE_SCAN_RSP
Definition: gap.h:124
@ BT_GAP_ADV_TYPE_ADV_NONCONN_IND
Definition: gap.h:122
@ BT_GAP_ADV_TYPE_ADV_SCAN_IND
Definition: gap.h:120
@ BT_GAP_ADV_TYPE_ADV_IND
Definition: gap.h:116
@ BT_GAP_SCA_21_30
Definition: gap.h:205
@ BT_GAP_SCA_31_50
Definition: gap.h:204
@ BT_GAP_SCA_101_150
Definition: gap.h:201
@ BT_GAP_SCA_251_500
Definition: gap.h:199
@ BT_GAP_SCA_51_75
Definition: gap.h:203
@ BT_GAP_SCA_76_100
Definition: gap.h:202
@ BT_GAP_SCA_151_250
Definition: gap.h:200
@ BT_GAP_SCA_0_20
Definition: gap.h:206
@ BT_GAP_SCA_UNKNOWN
Definition: gap.h:198
@ BT_GAP_CTE_AOD_2US
Definition: gap.h:191
@ BT_GAP_CTE_AOA
Definition: gap.h:187
@ BT_GAP_CTE_AOD_1US
Definition: gap.h:189
@ BT_GAP_CTE_NONE
Definition: gap.h:193
#define BIT(n)
Unsigned integer with bit position n set (signed in assembly language).
Definition: util_macro.h:44