49 #include "ble_types.h"
50 #include "ble_ranges.h"
163 #define BLE_ERROR_GAP_UUID_LIST_MISMATCH (NRF_GAP_ERR_BASE + 0x000)
164 #define BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST (NRF_GAP_ERR_BASE + 0x001)
165 #define BLE_ERROR_GAP_INVALID_BLE_ADDR (NRF_GAP_ERR_BASE + 0x002)
166 #define BLE_ERROR_GAP_WHITELIST_IN_USE (NRF_GAP_ERR_BASE + 0x003)
167 #define BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE (NRF_GAP_ERR_BASE + 0x004)
168 #define BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE (NRF_GAP_ERR_BASE + 0x005)
175 #define BLE_GAP_ROLE_INVALID 0x0
176 #define BLE_GAP_ROLE_PERIPH 0x1
177 #define BLE_GAP_ROLE_CENTRAL 0x2
183 #define BLE_GAP_TIMEOUT_SRC_ADVERTISING 0x00
184 #define BLE_GAP_TIMEOUT_SRC_SCAN 0x01
185 #define BLE_GAP_TIMEOUT_SRC_CONN 0x02
186 #define BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD 0x03
192 #define BLE_GAP_ADDR_TYPE_PUBLIC 0x00
193 #define BLE_GAP_ADDR_TYPE_RANDOM_STATIC 0x01
194 #define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE 0x02
195 #define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE 0x03
200 #define BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S (900)
202 #define BLE_GAP_MAX_PRIVATE_ADDR_CYCLE_INTERVAL_S (41400)
206 #define BLE_GAP_ADDR_LEN (6)
211 #define BLE_GAP_PRIVACY_MODE_OFF 0x00
212 #define BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY 0x01
213 #define BLE_GAP_PRIVACY_MODE_NETWORK_PRIVACY 0x02
222 #define BLE_GAP_AD_TYPE_FLAGS 0x01
223 #define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02
224 #define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03
225 #define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04
226 #define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05
227 #define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06
228 #define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07
229 #define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08
230 #define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09
231 #define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A
232 #define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D
233 #define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E
234 #define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F
235 #define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10
236 #define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11
237 #define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12
238 #define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14
239 #define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15
240 #define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16
241 #define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17
242 #define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18
243 #define BLE_GAP_AD_TYPE_APPEARANCE 0x19
244 #define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL 0x1A
245 #define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS 0x1B
246 #define BLE_GAP_AD_TYPE_LE_ROLE 0x1C
247 #define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256 0x1D
248 #define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256 0x1E
249 #define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID 0x20
250 #define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID 0x21
251 #define BLE_GAP_AD_TYPE_LESC_CONFIRMATION_VALUE 0x22
252 #define BLE_GAP_AD_TYPE_LESC_RANDOM_VALUE 0x23
253 #define BLE_GAP_AD_TYPE_URI 0x24
254 #define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA 0x3D
255 #define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF
261 #define BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE (0x01)
262 #define BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE (0x02)
263 #define BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED (0x04)
264 #define BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER (0x08)
265 #define BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST (0x10)
266 #define BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED)
267 #define BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED)
273 #define BLE_GAP_ADV_INTERVAL_MIN 0x0020
274 #define BLE_GAP_ADV_INTERVAL_MAX 0x4000
280 #define BLE_GAP_SCAN_INTERVAL_MIN 0x0004
281 #define BLE_GAP_SCAN_INTERVAL_MAX 0x4000
287 #define BLE_GAP_SCAN_WINDOW_MIN 0x0004
288 #define BLE_GAP_SCAN_WINDOW_MAX 0x4000
294 #define BLE_GAP_SCAN_TIMEOUT_MIN 0x0001
295 #define BLE_GAP_SCAN_TIMEOUT_MAX 0xFFFF
300 #define BLE_GAP_ADV_MAX_SIZE (31)
305 #define BLE_GAP_ADV_TYPE_ADV_IND 0x00
306 #define BLE_GAP_ADV_TYPE_ADV_DIRECT_IND 0x01
307 #define BLE_GAP_ADV_TYPE_ADV_SCAN_IND 0x02
308 #define BLE_GAP_ADV_TYPE_ADV_NONCONN_IND 0x03
314 #define BLE_GAP_ADV_FP_ANY 0x00
315 #define BLE_GAP_ADV_FP_FILTER_SCANREQ 0x01
316 #define BLE_GAP_ADV_FP_FILTER_CONNREQ 0x02
317 #define BLE_GAP_ADV_FP_FILTER_BOTH 0x03
323 #define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX (180)
324 #define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED (0)
330 #define BLE_GAP_DISC_MODE_NOT_DISCOVERABLE 0x00
331 #define BLE_GAP_DISC_MODE_LIMITED 0x01
332 #define BLE_GAP_DISC_MODE_GENERAL 0x02
338 #define BLE_GAP_IO_CAPS_DISPLAY_ONLY 0x00
339 #define BLE_GAP_IO_CAPS_DISPLAY_YESNO 0x01
340 #define BLE_GAP_IO_CAPS_KEYBOARD_ONLY 0x02
341 #define BLE_GAP_IO_CAPS_NONE 0x03
342 #define BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY 0x04
348 #define BLE_GAP_AUTH_KEY_TYPE_NONE 0x00
349 #define BLE_GAP_AUTH_KEY_TYPE_PASSKEY 0x01
350 #define BLE_GAP_AUTH_KEY_TYPE_OOB 0x02
356 #define BLE_GAP_KP_NOT_TYPE_PASSKEY_START 0x00
357 #define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_IN 0x01
358 #define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_OUT 0x02
359 #define BLE_GAP_KP_NOT_TYPE_PASSKEY_CLEAR 0x03
360 #define BLE_GAP_KP_NOT_TYPE_PASSKEY_END 0x04
366 #define BLE_GAP_SEC_STATUS_SUCCESS 0x00
367 #define BLE_GAP_SEC_STATUS_TIMEOUT 0x01
368 #define BLE_GAP_SEC_STATUS_PDU_INVALID 0x02
369 #define BLE_GAP_SEC_STATUS_RFU_RANGE1_BEGIN 0x03
370 #define BLE_GAP_SEC_STATUS_RFU_RANGE1_END 0x80
371 #define BLE_GAP_SEC_STATUS_PASSKEY_ENTRY_FAILED 0x81
372 #define BLE_GAP_SEC_STATUS_OOB_NOT_AVAILABLE 0x82
373 #define BLE_GAP_SEC_STATUS_AUTH_REQ 0x83
374 #define BLE_GAP_SEC_STATUS_CONFIRM_VALUE 0x84
375 #define BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP 0x85
376 #define BLE_GAP_SEC_STATUS_ENC_KEY_SIZE 0x86
377 #define BLE_GAP_SEC_STATUS_SMP_CMD_UNSUPPORTED 0x87
378 #define BLE_GAP_SEC_STATUS_UNSPECIFIED 0x88
379 #define BLE_GAP_SEC_STATUS_REPEATED_ATTEMPTS 0x89
380 #define BLE_GAP_SEC_STATUS_INVALID_PARAMS 0x8A
381 #define BLE_GAP_SEC_STATUS_DHKEY_FAILURE 0x8B
382 #define BLE_GAP_SEC_STATUS_NUM_COMP_FAILURE 0x8C
383 #define BLE_GAP_SEC_STATUS_BR_EDR_IN_PROG 0x8D
384 #define BLE_GAP_SEC_STATUS_X_TRANS_KEY_DISALLOWED 0x8E
385 #define BLE_GAP_SEC_STATUS_RFU_RANGE2_BEGIN 0x8F
386 #define BLE_GAP_SEC_STATUS_RFU_RANGE2_END 0xFF
392 #define BLE_GAP_SEC_STATUS_SOURCE_LOCAL 0x00
393 #define BLE_GAP_SEC_STATUS_SOURCE_REMOTE 0x01
399 #define BLE_GAP_CP_MIN_CONN_INTVL_NONE 0xFFFF
400 #define BLE_GAP_CP_MIN_CONN_INTVL_MIN 0x0006
401 #define BLE_GAP_CP_MIN_CONN_INTVL_MAX 0x0C80
402 #define BLE_GAP_CP_MAX_CONN_INTVL_NONE 0xFFFF
403 #define BLE_GAP_CP_MAX_CONN_INTVL_MIN 0x0006
404 #define BLE_GAP_CP_MAX_CONN_INTVL_MAX 0x0C80
405 #define BLE_GAP_CP_SLAVE_LATENCY_MAX 0x01F3
406 #define BLE_GAP_CP_CONN_SUP_TIMEOUT_NONE 0xFFFF
407 #define BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN 0x000A
408 #define BLE_GAP_CP_CONN_SUP_TIMEOUT_MAX 0x0C80
414 #define BLE_GAP_DEVNAME_DEFAULT "nRF5x"
415 #define BLE_GAP_DEVNAME_DEFAULT_LEN 31
416 #define BLE_GAP_DEVNAME_MAX_LEN 248
421 #define BLE_GAP_RSSI_THRESHOLD_INVALID 0xFF
425 #define BLE_GAP_PHY_AUTO 0x00
426 #define BLE_GAP_PHY_1MBPS 0x01
427 #define BLE_GAP_PHY_2MBPS 0x02
428 #define BLE_GAP_PHY_CODED 0x04
437 #define BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(ptr) do {(ptr)->sm = 0; (ptr)->lv = 0;} while(0)
439 #define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr) do {(ptr)->sm = 1; (ptr)->lv = 1;} while(0)
441 #define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 2;} while(0)
443 #define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 3;} while(0)
445 #define BLE_GAP_CONN_SEC_MODE_SET_LESC_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 4;} while(0)
447 #define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 1;} while(0)
449 #define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 2;} while(0)
454 #define BLE_GAP_SEC_RAND_LEN 8
458 #define BLE_GAP_SEC_KEY_LEN 16
462 #define BLE_GAP_LESC_P256_PK_LEN 64
466 #define BLE_GAP_LESC_DHKEY_LEN 32
470 #define BLE_GAP_PASSKEY_LEN 6
474 #define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8)
478 #define BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT (8)
482 #define BLE_GAP_CONN_COUNT_DEFAULT (1)
487 #define BLE_GAP_EVENT_LENGTH_MIN (2)
488 #define BLE_GAP_EVENT_LENGTH_DEFAULT (3)
494 #define BLE_GAP_ROLE_COUNT_PERIPH_DEFAULT (1)
495 #define BLE_GAP_ROLE_COUNT_CENTRAL_DEFAULT (3)
496 #define BLE_GAP_ROLE_COUNT_CENTRAL_SEC_DEFAULT (1)
497 #define BLE_GAP_ROLE_COUNT_COMBINED_MAX (20)
502 #define BLE_GAP_DATA_LENGTH_AUTO 0
506 #define BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MAX (48000)
507 #define BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MIN (1)
512 #define BLE_GAP_SEC_MODE 0x00
523 uint8_t addr_id_peer : 1;
525 uint8_t addr_type : 7;
543 uint16_t min_conn_interval;
544 uint16_t max_conn_interval;
545 uint16_t slave_latency;
546 uint16_t conn_sup_timeout;
572 uint8_t encr_key_size;
585 uint8_t ch_37_off : 1;
586 uint8_t ch_38_off : 1;
587 uint8_t ch_39_off : 1;
613 uint8_t use_whitelist : 1;
614 uint8_t adv_dir_report : 1;
642 uint8_t privacy_mode;
643 uint8_t private_addr_type;
644 uint16_t private_addr_cycle_s;
681 uint8_t keypress : 1;
688 uint8_t min_key_size;
689 uint8_t max_key_size;
792 uint8_t enc_info : 1;
794 uint8_t sign_info : 1;
802 uint8_t match_request : 1;
879 uint16_t max_tx_octets;
880 uint16_t max_rx_octets;
881 uint16_t max_tx_time_us;
882 uint16_t max_rx_time_us;
889 uint16_t tx_payload_limited_octets;
890 uint16_t rx_payload_limited_octets;
891 uint16_t tx_rx_time_limited_us;
899 uint8_t error_src : 2;
937 uint8_t scan_rsp : 1;
950 uint8_t keypress : 1;
985 uint16_t conn_handle;
1025 uint16_t event_length;
1044 uint8_t periph_role_count;
1045 uint8_t central_role_count;
1046 uint8_t central_sec_count;
1083 uint16_t current_len;
1119 uint16_t conn_handle;
1148 uint16_t conn_handle;
1149 uint16_t requested_latency;
1150 uint16_t * p_actual_latency;
1166 uint16_t conn_handle;
1167 uint8_t disable : 1;
1183 uint8_t
const * p_passkey;
1260 uint16_t conn_handle;
1261 uint16_t auth_payload_timeout;
2181 #endif // BLE_GAP_H__