dragoon  4383
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
ble_gap.h
1 /*
2  * Copyright (c) 2011 - 2017, Nordic Semiconductor ASA
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice, this
9  * list of conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form, except as embedded into a Nordic
12  * Semiconductor ASA integrated circuit in a product or a software update for
13  * such product, must reproduce the above copyright notice, this list of
14  * conditions and the following disclaimer in the documentation and/or other
15  * materials provided with the distribution.
16  *
17  * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
18  * contributors may be used to endorse or promote products derived from this
19  * software without specific prior written permission.
20  *
21  * 4. This software, with or without modification, must only be used with a
22  * Nordic Semiconductor ASA integrated circuit.
23  *
24  * 5. Any software provided in binary form under this license must not be reverse
25  * engineered, decompiled, modified and/or disassembled.
26  *
27  * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
28  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
29  * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
30  * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
31  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
33  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
36  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37  */
38 
45 #ifndef BLE_GAP_H__
46 #define BLE_GAP_H__
47 
48 
49 #include "ble_types.h"
50 #include "ble_ranges.h"
51 #include "nrf_svc.h"
52 
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56 
63 {
101 };
102 
107 {
129 };
130 
135 {
144 };
145 
151 {
154 };
155 
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) /* 15 minutes. */
201 
202 #define BLE_GAP_MAX_PRIVATE_ADDR_CYCLE_INTERVAL_S (41400) /* 11 hours 30 minutes. */
203 
204 
206 #define BLE_GAP_ADDR_LEN (6)
207 
208 
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)
301 
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
422 
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)
438 
439 #define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr) do {(ptr)->sm = 1; (ptr)->lv = 1;} while(0)
440 
441 #define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 2;} while(0)
442 
443 #define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 3;} while(0)
444 
445 #define BLE_GAP_CONN_SEC_MODE_SET_LESC_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 4;} while(0)
446 
447 #define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 1;} while(0)
448 
449 #define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 2;} while(0)
450 
454 #define BLE_GAP_SEC_RAND_LEN 8
455 
458 #define BLE_GAP_SEC_KEY_LEN 16
459 
462 #define BLE_GAP_LESC_P256_PK_LEN 64
463 
466 #define BLE_GAP_LESC_DHKEY_LEN 32
467 
470 #define BLE_GAP_PASSKEY_LEN 6
471 
474 #define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8)
475 
478 #define BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT (8)
479 
482 #define BLE_GAP_CONN_COUNT_DEFAULT (1)
483 
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
503 
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
521 typedef struct
522 {
523  uint8_t addr_id_peer : 1;
525  uint8_t addr_type : 7;
526  uint8_t addr[BLE_GAP_ADDR_LEN];
529 
541 typedef struct
542 {
543  uint16_t min_conn_interval;
544  uint16_t max_conn_interval;
545  uint16_t slave_latency;
546  uint16_t conn_sup_timeout;
549 
560 typedef struct
561 {
562  uint8_t sm : 4;
563  uint8_t lv : 4;
566 
567 
569 typedef struct
570 {
572  uint8_t encr_key_size;
576 typedef struct
577 {
578  uint8_t irk[BLE_GAP_SEC_KEY_LEN];
579 } ble_gap_irk_t;
581 
583 typedef struct
584 {
585  uint8_t ch_37_off : 1;
586  uint8_t ch_38_off : 1;
587  uint8_t ch_39_off : 1;
590 
592 typedef struct
593 {
594  uint8_t type;
595  ble_gap_addr_t const *p_peer_addr;
600  uint8_t fp;
601  uint16_t interval;
604  uint16_t timeout;
605  ble_gap_adv_ch_mask_t channel_mask;
608 
610 typedef struct
611 {
612  uint8_t active : 1;
613  uint8_t use_whitelist : 1;
614  uint8_t adv_dir_report : 1;
617  uint16_t interval;
618  uint16_t window;
619  uint16_t timeout;
622 
640 typedef struct
641 {
642  uint8_t privacy_mode;
643  uint8_t private_addr_type;
644  uint16_t private_addr_cycle_s;
645  ble_gap_irk_t *p_device_irk;
649 
650 
659 typedef struct
660 {
661  uint8_t tx_phys;
662  uint8_t rx_phys;
666 typedef struct
667 {
668  uint8_t enc : 1;
669  uint8_t id : 1;
670  uint8_t sign : 1;
671  uint8_t link : 1;
674 
676 typedef struct
677 {
678  uint8_t bond : 1;
679  uint8_t mitm : 1;
680  uint8_t lesc : 1;
681  uint8_t keypress : 1;
682  uint8_t io_caps : 3;
683  uint8_t oob : 1;
688  uint8_t min_key_size;
689  uint8_t max_key_size;
691  ble_gap_sec_kdist_t kdist_peer;
694 
696 typedef struct
697 {
698  uint8_t ltk[BLE_GAP_SEC_KEY_LEN];
699  uint8_t lesc : 1;
700  uint8_t auth : 1;
701  uint8_t ltk_len : 6;
704 
706 typedef struct
707 {
708  uint16_t ediv;
709  uint8_t rand[BLE_GAP_SEC_RAND_LEN];
712 
714 typedef struct
715 {
716  uint8_t csrk[BLE_GAP_SEC_KEY_LEN];
719 
721 typedef struct
722 {
726 
728 typedef struct
729 {
730  uint8_t key[BLE_GAP_LESC_DHKEY_LEN];
733 
735 typedef struct
736 {
738  uint8_t r[BLE_GAP_SEC_KEY_LEN];
739  uint8_t c[BLE_GAP_SEC_KEY_LEN];
742 
744 typedef struct
745 {
746  ble_gap_addr_t peer_addr;
748  uint8_t role;
749  ble_gap_conn_params_t conn_params;
752 
754 typedef struct
755 {
756  uint8_t reason;
759 
761 typedef struct
762 {
763  ble_gap_conn_params_t conn_params;
767 typedef struct
768 {
769  ble_gap_phys_t peer_preferred_phys;
773 typedef struct
774 {
775  uint8_t status;
776  uint8_t tx_phy;
777  uint8_t rx_phy;
781 typedef struct
782 {
783  ble_gap_sec_params_t peer_params;
786 
788 typedef struct
789 {
790  ble_gap_addr_t peer_addr;
791  ble_gap_master_id_t master_id;
792  uint8_t enc_info : 1;
793  uint8_t id_info : 1;
794  uint8_t sign_info : 1;
797 
799 typedef struct
800 {
801  uint8_t passkey[BLE_GAP_PASSKEY_LEN];
802  uint8_t match_request : 1;
806 
808 typedef struct
809 {
810  uint8_t kp_not;
813 
815 typedef struct
816 {
817  uint8_t key_type;
821 typedef struct
822 {
825  uint8_t oobd_req :1;
828 
832 typedef struct
833 {
834  uint8_t lv1 : 1;
835  uint8_t lv2 : 1;
836  uint8_t lv3 : 1;
837  uint8_t lv4 : 1;
840 
842 typedef struct
843 {
845  ble_gap_master_id_t master_id;
848 
850 typedef struct
851 {
852  ble_gap_irk_t id_info;
853  ble_gap_addr_t id_addr_info;
856 
858 typedef struct
859 {
860  ble_gap_enc_key_t *p_enc_key;
861  ble_gap_id_key_t *p_id_key;
862  ble_gap_sign_info_t *p_sign_key;
866 
867 
869 typedef struct
870 {
872  ble_gap_sec_keys_t keys_peer;
875 
877 typedef struct
878 {
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;
885 
887 typedef struct
888 {
889  uint16_t tx_payload_limited_octets;
890  uint16_t rx_payload_limited_octets;
891  uint16_t tx_rx_time_limited_us;
894 
896 typedef struct
897 {
898  uint8_t auth_status;
899  uint8_t error_src : 2;
900  uint8_t bonded : 1;
901  ble_gap_sec_levels_t sm1_levels;
902  ble_gap_sec_levels_t sm2_levels;
904  ble_gap_sec_kdist_t kdist_peer;
907 
909 typedef struct
910 {
914 
916 typedef struct
917 {
918  uint8_t src;
921 
923 typedef struct
924 {
925  int8_t rssi;
928 
930 typedef struct
931 {
932  ble_gap_addr_t peer_addr;
934  ble_gap_addr_t direct_addr;
936  int8_t rssi;
937  uint8_t scan_rsp : 1;
938  uint8_t type : 2;
939  uint8_t dlen : 5;
940  uint8_t data[BLE_GAP_ADV_MAX_SIZE];
943 
945 typedef struct
946 {
947  uint8_t bond : 1;
948  uint8_t mitm : 1;
949  uint8_t lesc : 1;
950  uint8_t keypress : 1;
953 
955 typedef struct
956 {
957  ble_gap_conn_params_t conn_params;
960 
962 typedef struct
963 {
964  int8_t rssi;
965  ble_gap_addr_t peer_addr;
968 
970 typedef struct
971 {
976 typedef struct
977 {
978  ble_gap_data_length_params_t effective_params;
981 
983 typedef struct
984 {
985  uint16_t conn_handle;
986  union
987  {
988  ble_gap_evt_connected_t connected;
989  ble_gap_evt_disconnected_t disconnected;
991  ble_gap_evt_sec_params_request_t sec_params_request;
996  ble_gap_evt_lesc_dhkey_request_t lesc_dhkey_request;
1003  ble_gap_evt_conn_param_update_request_t conn_param_update_request;
1007  ble_gap_evt_data_length_update_request_t data_length_update_request;
1009  } params;
1011 
1012 
1021 typedef struct
1022 {
1023  uint8_t conn_count;
1025  uint16_t event_length;
1031 
1032 
1042 typedef struct
1043 {
1044  uint8_t periph_role_count;
1045  uint8_t central_role_count;
1046  uint8_t central_sec_count;
1049 
1078 typedef struct
1079 {
1081  uint8_t vloc:2;
1082  uint8_t *p_value;
1083  uint16_t current_len;
1084  uint16_t max_len;
1087 
1089 typedef union
1090 {
1091  ble_gap_cfg_role_count_t role_count_cfg;
1092  ble_gap_cfg_device_name_t device_name_cfg;
1095 
1117 typedef struct
1118 {
1119  uint16_t conn_handle;
1120  uint8_t ch_map[5];
1123 
1146 typedef struct
1147 {
1148  uint16_t conn_handle;
1149  uint16_t requested_latency;
1150  uint16_t * p_actual_latency;
1164 typedef struct
1165 {
1166  uint16_t conn_handle;
1167  uint8_t disable : 1;
1181 typedef struct
1182 {
1183  uint8_t const * p_passkey;
1186 
1200 typedef struct
1201 {
1202  uint8_t enable : 1;
1216 typedef struct
1217 {
1218  uint8_t enable : 1;
1233 typedef struct
1234 {
1235  uint8_t enable : 1;
1238 
1258 typedef struct
1259 {
1260  uint16_t conn_handle;
1261  uint16_t auth_payload_timeout;
1264 
1266 typedef union
1267 {
1269  ble_gap_opt_local_conn_latency_t local_conn_latency;
1274  ble_gap_opt_auth_payload_timeout_t auth_payload_timeout;
1275  ble_gap_opt_slave_latency_disable_t slave_latency_disable;
1311 SVCALL(SD_BLE_GAP_ADDR_SET, uint32_t, sd_ble_gap_addr_set(ble_gap_addr_t const *p_addr));
1312 
1313 
1324 SVCALL(SD_BLE_GAP_ADDR_GET, uint32_t, sd_ble_gap_addr_get(ble_gap_addr_t *p_addr));
1325 
1326 
1350 SVCALL(SD_BLE_GAP_WHITELIST_SET, uint32_t, sd_ble_gap_whitelist_set(ble_gap_addr_t const * const * pp_wl_addrs, uint8_t len));
1351 
1352 
1381 SVCALL(SD_BLE_GAP_DEVICE_IDENTITIES_SET, uint32_t, sd_ble_gap_device_identities_set(ble_gap_id_key_t const * const * pp_id_keys, ble_gap_irk_t const * const * pp_local_irks, uint8_t len));
1382 
1383 
1405 SVCALL(SD_BLE_GAP_PRIVACY_SET, uint32_t, sd_ble_gap_privacy_set(ble_gap_privacy_params_t const *p_privacy_params));
1406 
1407 
1419 SVCALL(SD_BLE_GAP_PRIVACY_GET, uint32_t, sd_ble_gap_privacy_get(ble_gap_privacy_params_t *p_privacy_params));
1420 
1421 
1452 SVCALL(SD_BLE_GAP_ADV_DATA_SET, uint32_t, sd_ble_gap_adv_data_set(uint8_t const *p_data, uint8_t dlen, uint8_t const *p_sr_data, uint8_t srdlen));
1453 
1454 
1487 SVCALL(SD_BLE_GAP_ADV_START, uint32_t, sd_ble_gap_adv_start(ble_gap_adv_params_t const *p_adv_params, uint8_t conn_cfg_tag));
1488 
1489 
1500 SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(void));
1501 
1502 
1503 
1538 SVCALL(SD_BLE_GAP_CONN_PARAM_UPDATE, uint32_t, sd_ble_gap_conn_param_update(uint16_t conn_handle, ble_gap_conn_params_t const *p_conn_params));
1539 
1540 
1562 SVCALL(SD_BLE_GAP_DISCONNECT, uint32_t, sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code));
1563 
1564 
1572 SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(int8_t tx_power));
1573 
1574 
1582 SVCALL(SD_BLE_GAP_APPEARANCE_SET, uint32_t, sd_ble_gap_appearance_set(uint16_t appearance));
1583 
1584 
1592 SVCALL(SD_BLE_GAP_APPEARANCE_GET, uint32_t, sd_ble_gap_appearance_get(uint16_t *p_appearance));
1593 
1594 
1603 SVCALL(SD_BLE_GAP_PPCP_SET, uint32_t, sd_ble_gap_ppcp_set(ble_gap_conn_params_t const *p_conn_params));
1604 
1605 
1613 SVCALL(SD_BLE_GAP_PPCP_GET, uint32_t, sd_ble_gap_ppcp_get(ble_gap_conn_params_t *p_conn_params));
1614 
1615 
1631 SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const *p_write_perm, uint8_t const *p_dev_name, uint16_t len));
1632 
1633 
1648 SVCALL(SD_BLE_GAP_DEVICE_NAME_GET, uint32_t, sd_ble_gap_device_name_get(uint8_t *p_dev_name, uint16_t *p_len));
1649 
1650 
1698 SVCALL(SD_BLE_GAP_AUTHENTICATE, uint32_t, sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const *p_sec_params));
1699 
1700 
1757 SVCALL(SD_BLE_GAP_SEC_PARAMS_REPLY, uint32_t, sd_ble_gap_sec_params_reply(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const *p_sec_params, ble_gap_sec_keyset_t const *p_sec_keyset));
1758 
1759 
1791 SVCALL(SD_BLE_GAP_AUTH_KEY_REPLY, uint32_t, sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const *p_key));
1792 
1824 SVCALL(SD_BLE_GAP_LESC_DHKEY_REPLY, uint32_t, sd_ble_gap_lesc_dhkey_reply(uint16_t conn_handle, ble_gap_lesc_dhkey_t const *p_dhkey));
1825 
1842 SVCALL(SD_BLE_GAP_KEYPRESS_NOTIFY, uint32_t, sd_ble_gap_keypress_notify(uint16_t conn_handle, uint8_t kp_not));
1843 
1862 SVCALL(SD_BLE_GAP_LESC_OOB_DATA_GET, uint32_t, sd_ble_gap_lesc_oob_data_get(uint16_t conn_handle, ble_gap_lesc_p256_pk_t const *p_pk_own, ble_gap_lesc_oob_data_t *p_oobd_own));
1863 
1890 SVCALL(SD_BLE_GAP_LESC_OOB_DATA_SET, uint32_t, sd_ble_gap_lesc_oob_data_set(uint16_t conn_handle, ble_gap_lesc_oob_data_t const *p_oobd_own, ble_gap_lesc_oob_data_t const *p_oobd_peer));
1891 
1918 SVCALL(SD_BLE_GAP_ENCRYPT, uint32_t, sd_ble_gap_encrypt(uint16_t conn_handle, ble_gap_master_id_t const *p_master_id, ble_gap_enc_info_t const *p_enc_info));
1919 
1920 
1941 SVCALL(SD_BLE_GAP_SEC_INFO_REPLY, uint32_t, sd_ble_gap_sec_info_reply(uint16_t conn_handle, ble_gap_enc_info_t const *p_enc_info, ble_gap_irk_t const *p_id_info, ble_gap_sign_info_t const *p_sign_info));
1942 
1943 
1953 SVCALL(SD_BLE_GAP_CONN_SEC_GET, uint32_t, sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t *p_conn_sec));
1954 
1955 
1979 SVCALL(SD_BLE_GAP_RSSI_START, uint32_t, sd_ble_gap_rssi_start(uint16_t conn_handle, uint8_t threshold_dbm, uint8_t skip_count));
1980 
1981 
1998 SVCALL(SD_BLE_GAP_RSSI_STOP, uint32_t, sd_ble_gap_rssi_stop(uint16_t conn_handle));
1999 
2000 
2019 SVCALL(SD_BLE_GAP_RSSI_GET, uint32_t, sd_ble_gap_rssi_get(uint16_t conn_handle, int8_t *p_rssi));
2020 
2021 
2043 SVCALL(SD_BLE_GAP_SCAN_START, uint32_t, sd_ble_gap_scan_start(ble_gap_scan_params_t const *p_scan_params));
2044 
2045 
2056 SVCALL(SD_BLE_GAP_SCAN_STOP, uint32_t, sd_ble_gap_scan_stop(void));
2057 
2058 
2089 SVCALL(SD_BLE_GAP_CONNECT, uint32_t, sd_ble_gap_connect(ble_gap_addr_t const *p_peer_addr, ble_gap_scan_params_t const *p_scan_params, ble_gap_conn_params_t const *p_conn_params, uint8_t conn_cfg_tag));
2090 
2091 
2101 SVCALL(SD_BLE_GAP_CONNECT_CANCEL, uint32_t, sd_ble_gap_connect_cancel(void));
2102 
2103 
2137 SVCALL(SD_BLE_GAP_PHY_UPDATE, uint32_t, sd_ble_gap_phy_update(uint16_t conn_handle, ble_gap_phys_t const *p_gap_phys));
2138 
2172 SVCALL(SD_BLE_GAP_DATA_LENGTH_UPDATE, uint32_t, sd_ble_gap_data_length_update(uint16_t conn_handle, ble_gap_data_length_params_t const *p_dl_params, ble_gap_data_length_limitation_t *p_dl_limitation));
2173 
2174 
2175 
2178 #ifdef __cplusplus
2179 }
2180 #endif
2181 #endif // BLE_GAP_H__
2182