29#define SMP_PIN_CODE_LEN_MAX PIN_CODE_LEN
30#define SMP_PIN_CODE_LEN_MIN 6
33#define SMP_IO_CAP_REQ_EVT 1
34#define SMP_SEC_REQUEST_EVT 2
35#define SMP_PASSKEY_NOTIF_EVT 3
36#define SMP_PASSKEY_REQ_EVT 4
37#define SMP_OOB_REQ_EVT 5
38#define SMP_COMPLT_EVT 6
39typedef UINT8 tSMP_EVT;
43#define SMP_PASSKEY_ENTRY_FAIL 0x01
44#define SMP_OOB_FAIL 0x02
45#define SMP_PAIR_AUTH_FAIL 0x03
46#define SMP_CONFIRM_VALUE_ERR 0x04
47#define SMP_PAIR_NOT_SUPPORT 0x05
48#define SMP_ENC_KEY_SIZE 0x06
49#define SMP_INVALID_CMD 0x07
50#define SMP_PAIR_FAIL_UNKNOWN 0x08
51#define SMP_REPEATED_ATTEMPTS 0x09
52#define SMP_PAIR_FAILURE_MAX SMP_REPEATED_ATTEMPTS
54#define SMP_PAIR_INTERNAL_ERR 0x0A
55#define SMP_UNKNOWN_IO_CAP 0x0B
56#define SMP_INIT_FAIL 0x0C
57#define SMP_CONFIRM_FAIL 0x0D
59#define SMP_ENC_FAIL 0x0F
60#define SMP_STARTED 0x10
61#define SMP_RSP_TIMEOUT 0x11
62#define SMP_DIV_NOT_AVAIL 0x12
66typedef UINT8 tSMP_STATUS;
70#define SMP_IO_CAP_OUT BTM_IO_CAP_OUT
71#define SMP_IO_CAP_IO BTM_IO_CAP_IO
72#define SMP_IO_CAP_IN BTM_IO_CAP_IN
73#define SMP_IO_CAP_NONE BTM_IO_CAP_NONE
74#define SMP_IO_CAP_KBDISP BTM_IO_CAP_KBDISP
75#define SMP_IO_CAP_MAX BTM_IO_CAP_MAX
76typedef UINT8 tSMP_IO_CAP;
78#ifndef SMP_DEFAULT_IO_CAPS
79 #define SMP_DEFAULT_IO_CAPS SMP_IO_CAP_KBDISP
89typedef UINT8 tSMP_OOB_FLAG;
91#define SMP_AUTH_NO_BOND 0x00
92#define SMP_AUTH_GEN_BOND 0x01
95#define SMP_AUTH_YN_BIT (1 << 2)
96#define SMP_AUTH_MASK (SMP_AUTH_GEN_BOND|SMP_AUTH_YN_BIT)
99#define SMP_AUTH_BOND SMP_AUTH_GEN_BOND
101#define SMP_AUTH_NB_ENC_ONLY 0x00
102#define SMP_AUTH_NB_IOCAP (SMP_AUTH_NO_BOND | SMP_AUTH_YN_BIT)
104#define SMP_AUTH_GB_ENC_ONLY (SMP_AUTH_GEN_BOND )
105#define SMP_AUTH_GB_IOCAP (SMP_AUTH_GEN_BOND | SMP_AUTH_YN_BIT)
107typedef UINT8 tSMP_AUTH_REQ;
109#define SMP_SEC_NONE 0
110#define SMP_SEC_UNAUTHENTICATE (1 << 0)
111#define SMP_SEC_AUTHENTICATED (1 << 2)
112typedef UINT8 tSMP_SEC_LEVEL;
115#define SMP_SEC_KEY_TYPE_ENC (1 << 0)
116#define SMP_SEC_KEY_TYPE_ID (1 << 1)
117#define SMP_SEC_KEY_TYPE_CSRK (1 << 2)
118typedef UINT8 tSMP_KEYS;
121#define SMP_SEC_DEFAULT_KEY (SMP_SEC_KEY_TYPE_ENC | SMP_SEC_KEY_TYPE_ID | SMP_SEC_KEY_TYPE_CSRK)
127 tSMP_OOB_FLAG oob_data;
128 tSMP_AUTH_REQ auth_req;
138 BOOLEAN is_pair_cancel;
156 UINT8 param_buf[BT_OCTET16_LEN];
162typedef UINT8 (tSMP_CALLBACK) (tSMP_EVT event, BD_ADDR bd_addr,
tSMP_EVT_DATA *p_data);
166typedef void (tCMAC_CMPL_CBACK)(UINT8 *p_mac, UINT16 tlen, UINT32 sign_counter);
186 SMP_API
extern void SMP_Init(
void);
198 SMP_API
extern UINT8 SMP_SetTraceLevel (UINT8 new_level);
209 SMP_API
extern BOOLEAN SMP_Register (tSMP_CALLBACK *p_cback);
220 SMP_API
extern tSMP_STATUS SMP_Pair (BD_ADDR bd_addr);
230 SMP_API
extern BOOLEAN SMP_PairCancel (BD_ADDR bd_addr);
245 SMP_API
extern void SMP_SecurityGrant(BD_ADDR bd_addr, UINT8 res);
260 SMP_API
extern void SMP_PasskeyReply (BD_ADDR bd_addr, UINT8 res, UINT32 passkey);
274 SMP_API
extern void SMP_OobDataReply(BD_ADDR bd_addr, tSMP_STATUS res, UINT8 len,
293 SMP_API
extern BOOLEAN SMP_Encrypt (UINT8 *key, UINT8 key_len,
294 UINT8 *plain_text, UINT8 pt_len,