15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 1999-2012 Broadcom Corporation 45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * you may not use this file except in compliance with the License. 75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * You may obtain a copy of the License at: 85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * See the License for the specific language governing permissions and 155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * limitations under the License. 165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * This file contains the SMP API function external definitions. 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef SMP_API_H 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_API_H 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h" 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_PIN_CODE_LEN_MAX PIN_CODE_LEN 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_PIN_CODE_LEN_MIN 6 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SMP event type */ 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_IO_CAP_REQ_EVT 1 /* IO capability request event */ 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_SEC_REQUEST_EVT 2 /* SMP pairing request */ 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_PASSKEY_NOTIF_EVT 3 /* passkey notification event */ 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_PASSKEY_REQ_EVT 4 /* passkey request event */ 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_OOB_REQ_EVT 5 /* OOB request event */ 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_COMPLT_EVT 6 /* SMP complete event */ 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tSMP_EVT; 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* pairing failure reason code */ 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_PASSKEY_ENTRY_FAIL 0x01 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_OOB_FAIL 0x02 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_PAIR_AUTH_FAIL 0x03 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_CONFIRM_VALUE_ERR 0x04 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_PAIR_NOT_SUPPORT 0x05 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_ENC_KEY_SIZE 0x06 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_INVALID_CMD 0x07 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_PAIR_FAIL_UNKNOWN 0x08 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_REPEATED_ATTEMPTS 0x09 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_PAIR_FAILURE_MAX SMP_REPEATED_ATTEMPTS 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* self defined error code */ 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_PAIR_INTERNAL_ERR 0x0A 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_UNKNOWN_IO_CAP 0x0B /* unknown IO capability, unable to decide associatino model */ 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_INIT_FAIL 0x0C 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_CONFIRM_FAIL 0x0D 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_BUSY 0x0E 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_ENC_FAIL 0x0F 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_STARTED 0x10 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_RSP_TIMEOUT 0x11 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_DIV_NOT_AVAIL 0x12 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_FAIL 0x13 /* unspecified failed reason */ 64ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define SMP_CONN_TOUT 0x14 /* unspecified failed reason */ 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_SUCCESS 0 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tSMP_STATUS; 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Device IO capability */ 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_IO_CAP_OUT BTM_IO_CAP_OUT /* DisplayOnly */ 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_IO_CAP_IO BTM_IO_CAP_IO /* DisplayYesNo */ 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_IO_CAP_IN BTM_IO_CAP_IN /* KeyboardOnly */ 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_IO_CAP_NONE BTM_IO_CAP_NONE /* NoInputNoOutput */ 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_IO_CAP_KBDISP BTM_IO_CAP_KBDISP /* Keyboard Display */ 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_IO_CAP_MAX BTM_IO_CAP_MAX 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tSMP_IO_CAP; 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef SMP_DEFAULT_IO_CAPS 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project #define SMP_DEFAULT_IO_CAPS SMP_IO_CAP_KBDISP 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* OOB data present or not */ 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_OOB_NONE, 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_OOB_PRESENT, 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_OOB_UNKNOWN 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tSMP_OOB_FLAG; 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_AUTH_NO_BOND 0x00 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_AUTH_GEN_BOND 0x01 //todo sdh change GEN_BOND to BOND 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SMP Authentication requirement */ 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_AUTH_YN_BIT (1 << 2) 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_AUTH_MASK (SMP_AUTH_GEN_BOND|SMP_AUTH_YN_BIT) 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_AUTH_BOND SMP_AUTH_GEN_BOND 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_AUTH_NB_ENC_ONLY 0x00 //(SMP_AUTH_MASK | BTM_AUTH_SP_NO) /* no MITM, No Bonding, Encryptino only */ 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_AUTH_NB_IOCAP (SMP_AUTH_NO_BOND | SMP_AUTH_YN_BIT) /* MITM, No Bonding, Use IO Capability 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project to detrermine authenticaion procedure */ 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_AUTH_GB_ENC_ONLY (SMP_AUTH_GEN_BOND ) /* no MITM, General Bonding, Encryptino only */ 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_AUTH_GB_IOCAP (SMP_AUTH_GEN_BOND | SMP_AUTH_YN_BIT) /* MITM, General Bonding, Use IO Capability 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project to detrermine authenticaion procedure */ 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tSMP_AUTH_REQ; 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_SEC_NONE 0 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_SEC_UNAUTHENTICATE (1 << 0) 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_SEC_AUTHENTICATED (1 << 2) 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tSMP_SEC_LEVEL; 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SMP key types */ 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_SEC_KEY_TYPE_ENC (1 << 0) /* encryption key */ 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_SEC_KEY_TYPE_ID (1 << 1) /* identity key */ 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_SEC_KEY_TYPE_CSRK (1 << 2) /* slave CSRK */ 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tSMP_KEYS; 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* default security key distribution value */ 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define SMP_SEC_DEFAULT_KEY (SMP_SEC_KEY_TYPE_ENC | SMP_SEC_KEY_TYPE_ID | SMP_SEC_KEY_TYPE_CSRK) 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* data type for BTM_SP_IO_REQ_EVT */ 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSMP_IO_CAP io_cap; /* local IO capabilities */ 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSMP_OOB_FLAG oob_data; /* OOB data present (locally) for the peer device */ 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSMP_AUTH_REQ auth_req; /* Authentication required (for local device) */ 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 max_key_size; /* max encryption key size */ 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSMP_KEYS init_keys; /* initiator keys to be distributed */ 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSMP_KEYS resp_keys; /* responder keys */ 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tSMP_IO_REQ; 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1377fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta tSMP_STATUS reason; 1387fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta tSMP_SEC_LEVEL sec_level; 1397fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta BOOLEAN is_pair_cancel; 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tSMP_CMPL; 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef union 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 passkey; 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSMP_IO_REQ io_req; /* IO request */ 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSMP_CMPL cmplt; 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tSMP_EVT_DATA; 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AES Encryption output */ 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 status; 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 param_len; 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 opcode; 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 param_buf[BT_OCTET16_LEN]; 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tSMP_ENC; 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Simple Pairing Events. Called by the stack when Simple Pairing related 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** events occur. 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 (tSMP_CALLBACK) (tSMP_EVT event, BD_ADDR bd_addr, tSMP_EVT_DATA *p_data); 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* callback function for CMAC algorithm 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef void (tCMAC_CMPL_CBACK)(UINT8 *p_mac, UINT16 tlen, UINT32 sign_counter); 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** External Function Declarations 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*****************************************************************************/ 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef __cplusplus 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern "C" 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* API of SMP */ 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function SMP_Init 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function initializes the SMP unit. 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_API extern void SMP_Init(void); 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function SMP_SetTraceLevel 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function sets the trace level for SMP. If called with 1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** a value of 0xFF, it simply returns the current trace level. 1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns The new or current trace level 1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_API extern UINT8 SMP_SetTraceLevel (UINT8 new_level); 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function SMP_Register 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function register for the SMP service callback. 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_API extern BOOLEAN SMP_Register (tSMP_CALLBACK *p_cback); 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function SMP_Pair 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to start a SMP pairing. 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns SMP_STARTED if bond started, else otherwise exception. 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_API extern tSMP_STATUS SMP_Pair (BD_ADDR bd_addr); 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function SMP_PairCancel 2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to cancel a SMP pairing. 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns TRUE - pairing cancelled 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_API extern BOOLEAN SMP_PairCancel (BD_ADDR bd_addr); 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function SMP_SecurityGrant 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to grant security process. 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters bd_addr - peer device bd address. 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** res - result of the operation SMP_SUCCESS if success. 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Otherwise, SMP_REPEATED_ATTEMPTS is too many attempts. 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns None 2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_API extern void SMP_SecurityGrant(BD_ADDR bd_addr, UINT8 res); 2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function SMP_PasskeyReply 2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called after Security Manager submitted 2535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Passkey request to the application. 2545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters: bd_addr - Address of the device for which PIN was requested 2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** res - result of the operation BTM_SUCCESS if success 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** passkey - numeric value in the range of 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** BTM_MIN_PASSKEY_VAL(0) - BTM_MAX_PASSKEY_VAL(999999(0xF423F)). 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_API extern void SMP_PasskeyReply (BD_ADDR bd_addr, UINT8 res, UINT32 passkey); 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function SMP_OobDataReply 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to provide the OOB data for 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Simple Pairing in response to BTM_SP_RMT_OOB_EVT 2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters: bd_addr - Address of the peer device 2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** res - result of the operation SMP_SUCCESS if success 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_data - simple pairing Randomizer C. 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_API extern void SMP_OobDataReply(BD_ADDR bd_addr, tSMP_STATUS res, UINT8 len, 2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_data); 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function SMP_Encrypt 2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function is called to encrypt the data with the specified 2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** key 2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters: key - Pointer to key key[0] conatins the MSB 2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** key_len - key length 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** plain_text - Pointer to data to be encrypted 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** plain_text[0] conatins the MSB 2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** pt_len - plain text length 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** p_out - pointer to the encrypted outputs 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns Boolean - TRUE: encryption is successful 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project SMP_API extern BOOLEAN SMP_Encrypt (UINT8 *key, UINT8 key_len, 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *plain_text, UINT8 pt_len, 2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSMP_ENC *p_out); 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef __cplusplus 2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* SMP_API_H */ 302