BLE-Stack APIs  3.00.01
gapbondmgr.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  Group: WCS, BTS
4  $Target Device: DEVICES $
5 
6  ******************************************************************************
7  $License: BSD3 2010 $
8  ******************************************************************************
9  $Release Name: PACKAGE NAME $
10  $Release Date: PACKAGE RELEASE DATE $
11  *****************************************************************************/
12 
21 #ifndef GAPBONDMGR_H
22 #define GAPBONDMGR_H
23 
24 #ifdef __cplusplus
25 extern "C"
26 {
27 #endif
28 
29 /*-------------------------------------------------------------------
30  * INCLUDES
31  */
32 #include "gap.h"
33 
34 /*-------------------------------------------------------------------
35  * CONSTANTS
36  */
37 
41 #if !defined ( GAP_BONDINGS_MAX )
42  #define GAP_BONDINGS_MAX 10
43 #endif
44 
45 #if !defined ( GAP_CHAR_CFG_MAX )
46  #define GAP_CHAR_CFG_MAX 4
47 #endif
48 
63 #define GAPBOND_PAIRING_MODE 0x400
64 
75 #define GAPBOND_INITIATE_WAIT 0x401
76 
86 #define GAPBOND_MITM_PROTECTION 0x402
87 
97 #define GAPBOND_IO_CAPABILITIES 0x403
98 
108 #define GAPBOND_OOB_ENABLED 0x404
109 
119 #define GAPBOND_OOB_DATA 0x405
120 
130 #define GAPBOND_BONDING_ENABLED 0x406
131 
144 #define GAPBOND_KEY_DIST_LIST 0x407
145 
157 #define GAPBOND_DEFAULT_PASSCODE 0x408
158 
164 #define GAPBOND_ERASE_ALLBONDS 0x409
165 
167 #define GAPBOND_AUTO_FAIL_PAIRING 0x40A
168 #define GAPBOND_AUTO_FAIL_REASON 0x40B
169 
180 #define GAPBOND_KEYSIZE 0x40C
181 
194 #define GAPBOND_AUTO_SYNC_WL 0x40D
195 
203 #define GAPBOND_BOND_COUNT 0x40E
204 
214 #define GAPBOND_BOND_FAIL_ACTION 0x40F
215 
226 #define GAPBOND_ERASE_SINGLEBOND 0x410
227 
237 #define GAPBOND_SECURE_CONNECTION 0x411
238 
257 #define GAPBOND_ECCKEY_REGEN_POLICY 0x412
258 
276 #define GAPBOND_ECC_KEYS 0x413
277 
291 #define GAPBOND_REMOTE_OOB_SC_ENABLED 0x414
292 
308 #define GAPBOND_REMOTE_OOB_SC_DATA 0x415
309 
325 #define GAPBOND_LOCAL_OOB_SC_ENABLED 0x416
326 
339 #define GAPBOND_LOCAL_OOB_SC_DATA 0x417
340 
353 #define GAPBOND_LRU_BOND_REPLACEMENT 0x418
354 
360 #define GAPBOND_PAIRING_MODE_NO_PAIRING 0x00
361 #define GAPBOND_PAIRING_MODE_WAIT_FOR_REQ 0x01
362 #define GAPBOND_PAIRING_MODE_INITIATE 0x02
363 
368 #define GAPBOND_IO_CAP_DISPLAY_ONLY 0x00
369 #define GAPBOND_IO_CAP_DISPLAY_YES_NO 0x01
370 #define GAPBOND_IO_CAP_KEYBOARD_ONLY 0x02
371 #define GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT 0x03
372 #define GAPBOND_IO_CAP_KEYBOARD_DISPLAY 0x04
373 
378 #define GAPBOND_KEYDIST_SENCKEY 0x01
379 #define GAPBOND_KEYDIST_SIDKEY 0x02
380 #define GAPBOND_KEYDIST_SSIGN 0x04
381 #define GAPBOND_KEYDIST_SLINK 0x08
382 #define GAPBOND_KEYDIST_MENCKEY 0x10
383 #define GAPBOND_KEYDIST_MIDKEY 0x20
384 #define GAPBOND_KEYDIST_MSIGN 0x40
385 #define GAPBOND_KEYDIST_MLINK 0x80
386 
401 #define GAPBOND_PAIRING_STATE_STARTED 0x00
402 
422 #define GAPBOND_PAIRING_STATE_COMPLETE 0x01
423 
435 #define GAPBOND_PAIRING_STATE_BONDED 0x02
436 #define GAPBOND_PAIRING_STATE_BOND_SAVED 0x03
437 #define GAPBOND_PAIRING_STATE_CAR_READ 0x04
438 
443 #define SMP_PAIRING_FAILED_PASSKEY_ENTRY_FAILED 0x01
444 #define SMP_PAIRING_FAILED_OOB_NOT_AVAIL 0x02
445 #define SMP_PAIRING_FAILED_AUTH_REQ 0x03
446 #define SMP_PAIRING_FAILED_CONFIRM_VALUE 0x04
447 #define SMP_PAIRING_FAILED_NOT_SUPPORTED 0x05
448 #define SMP_PAIRING_FAILED_ENC_KEY_SIZE 0x06
449 #define SMP_PAIRING_FAILED_CMD_NOT_SUPPORTED 0x07
450 #define SMP_PAIRING_FAILED_UNSPECIFIED 0x08
451 #define SMP_PAIRING_FAILED_REPEATED_ATTEMPTS 0x09
452 #define SMP_PAIRING_FAILED_INVALID_PARAMETERS 0x0A
453 #define SMP_PAIRING_FAILED_DHKEY_CHECK_FAILED 0x0B
454 #define SMP_PAIRING_FAILED_NUM_COMPARISON_FAILED 0x0C
455 
460 #define GAPBOND_FAIL_NO_ACTION 0x00
461 #define GAPBOND_FAIL_INITIATE_PAIRING 0x01
462 #define GAPBOND_FAIL_TERMINATE_LINK 0x02
463 #define GAPBOND_FAIL_TERMINATE_ERASE_BONDS 0x03
464 
469 #define GAPBOND_SECURE_CONNECTION_NONE 0x00
470 #define GAPBOND_SECURE_CONNECTION_ALLOW 0x01
471 #define GAPBOND_SECURE_CONNECTION_ONLY 0x02
472 
478 #define GAPBOND_REGENERATE_ALWAYS 0x00
479 #define GAPBOND_REGENERATE_NEVER 0xFF
480 
482 // ECC Key Length
483 #define ECC_KEYLEN 32
484 
485 
487 /*-------------------------------------------------------------------
488  * TYPEDEFS
489  */
490 
510 typedef void (*pfnPasscodeCB_t)
511 (
512  uint8 *deviceAddr,
513  uint16 connectionHandle,
514  uint8 uiInputs,
515  uint8 uiOutputs,
516  uint32 numComparison
517  );
518 
529 typedef void (*pfnPairStateCB_t)
530 (
531  uint16 connectionHandle,
532  uint8 state,
533  uint8 status
534 );
535 
536 /*
537  * @brief GAPBondMgr Callback Structure
538  *
539  * This must be setup by the application and passed to the GAPRole when
540  * @ref GAPBondMgr_Register is called.
541  */
542 typedef struct
543 {
544  pfnPasscodeCB_t passcodeCB;
545  pfnPairStateCB_t pairStateCB;
546 } gapBondCBs_t;
547 
554 typedef struct
556 {
557  uint8 privateKey[ECC_KEYLEN];
558  uint8 publicKeyX[ECC_KEYLEN];
559  uint8 publicKeyY[ECC_KEYLEN];
561 
563 typedef struct
564 {
565  uint8 addr[B_ADDR_LEN];
566  uint8 confirm[KEYLEN];
567  uint8 oob[KEYLEN];
569 
572 /*-------------------------------------------------------------------
573  * MACROS
574  */
575 
576 /*-------------------------------------------------------------------
577  * API FUNCTIONS
578  */
579 
597 extern bStatus_t GAPBondMgr_SetParameter( uint16 param, uint8 len, void *pValue );
598 
614 extern bStatus_t GAPBondMgr_GetParameter( uint16 param, void *pValue );
615 
630 extern bStatus_t GAPBondMgr_LinkEst( uint8 addrType, uint8 *pDevAddr, uint16 connHandle, uint8 role );
631 
640 extern void GAPBondMgr_LinkTerm(uint16 connHandle);
641 
651 extern void GAPBondMgr_SlaveReqSecurity(uint16 connHandle, uint8 authReq);
652 
663 extern uint8 GAPBondMgr_ResolveAddr( uint8 addrType, uint8 *pDevAddr, uint8 *pResolvedAddr );
664 
676 extern bStatus_t GAPBondMgr_ServiceChangeInd( uint16 connectionHandle, uint8 setParam );
677 
690 extern bStatus_t GAPBondMgr_UpdateCharCfg( uint16 connectionHandle, uint16 attrHandle, uint16 value );
691 
701 extern void GAPBondMgr_Register( gapBondCBs_t *pCB );
702 
716 extern bStatus_t GAPBondMgr_PasscodeRsp( uint16 connectionHandle, uint8 status, uint32 passcode );
717 
736 extern bStatus_t GAPBondMgr_ReadCentAddrResChar( uint16 connectionHandle );
737 
748 extern uint8 GAPBondMgr_SupportsEnhancedPriv( uint8 *pPeerIdAddr );
749 
762 extern uint8 GAPBondMgr_ProcessGAPMsg( gapEventHdr_t *pMsg );
763 
773 extern uint8 GAPBondMgr_CheckNVLen( uint8 id, uint8 len );
774 
783 
785 
786 /*-------------------------------------------------------------------
787  * TASK FUNCTIONS - Don't call these. These are system functions.
788  */
789 
802 extern void GAPBondMgr_Init( uint8 task_id );
803 
818 extern uint16 GAPBondMgr_ProcessEvent( uint8 task_id, uint16 events );
819 
821 
822 /*-------------------------------------------------------------------
823 -------------------------------------------------------------------*/
824 
825 #ifdef __cplusplus
826 }
827 #endif
828 
829 #endif /* GAPBONDMGR_H */
830 
bStatus_t GAPBondMgr_PasscodeRsp(uint16 connectionHandle, uint8 status, uint32 passcode)
Respond to a passcode request.
Public and Private ECC Keys.
Definition: gapbondmgr.h:555
bStatus_t GAPBondMgr_UpdateCharCfg(uint16 connectionHandle, uint16 attrHandle, uint16 value)
Update the Characteristic Configuration in a bond record.
GAP event header format.
Definition: gap.h:683
bStatus_t GAPBondMgr_LinkEst(uint8 addrType, uint8 *pDevAddr, uint16 connHandle, uint8 role)
Notify the Bond Manager that a connection has been made.
uint8 GAPBondMgr_ProcessGAPMsg(gapEventHdr_t *pMsg)
This is a bypass mechanism to allow the bond manager to process GAP messages.
Secure Connections Out of Band.
Definition: gapbondmgr.h:563
uint8 GAPBondMgr_ResolveAddr(uint8 addrType, uint8 *pDevAddr, uint8 *pResolvedAddr)
Resolve an address from bonding information.
void GAPBondMgr_Register(gapBondCBs_t *pCB)
Register callback functions with the bond manager.
bStatus_t GAPBondMgr_ServiceChangeInd(uint16 connectionHandle, uint8 setParam)
Set/clear the service change indication in a bond record.
uint8 GAPBondMgr_SupportsEnhancedPriv(uint8 *pPeerIdAddr)
Determine if peer device supports enhanced privacy by checking the Enhanced Privacy state flag of the...
void(* pfnPasscodeCB_t)(uint8 *deviceAddr, uint16 connectionHandle, uint8 uiInputs, uint8 uiOutputs, uint32 numComparison)
Passcode and Numeric Comparison Callback Function.
Definition: gapbondmgr.h:511
void(* pfnPairStateCB_t)(uint16 connectionHandle, uint8 state, uint8 status)
Pairing State Callback Function.
Definition: gapbondmgr.h:530
bStatus_t GAPBondMgr_syncResolvingList(void)
This function will add all device address and IRK pairs from bond records to the Controller. Used with PRIVACY_1_2_CFG.
void GAPBondMgr_LinkTerm(uint16 connHandle)
Notify the Bond Manager that a connection has been terminated.
GAP layer interface.
uint8 GAPBondMgr_CheckNVLen(uint8 id, uint8 len)
This function will check the length of a Bond Manager NV Item.
bStatus_t GAPBondMgr_GetParameter(uint16 param, void *pValue)
Get a GAP Bond Manager parameter.
#define B_ADDR_LEN
Default Public and Random Address Length.
Definition: bcomdef.h:112
bStatus_t GAPBondMgr_SetParameter(uint16 param, uint8 len, void *pValue)
Set a GAP Bond Manager parameter.
Status_t bStatus_t
BLE Generic Status return.
Definition: bcomdef.h:224
#define ECC_KEYLEN
256 bit keys
Definition: gapbondmgr.h:483
bStatus_t GAPBondMgr_ReadCentAddrResChar(uint16 connectionHandle)
Read Central Address Resolution Characteristic.
void GAPBondMgr_SlaveReqSecurity(uint16 connHandle, uint8 authReq)
Notify the Bond Manager that a Slave Security Request is received.
#define KEYLEN
Default key length.
Definition: bcomdef.h:115
Copyright 2017, Texas Instruments Incorporated