16ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/****************************************************************************** 26ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 36ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * Copyright (C) 1999-2012 Broadcom Corporation 46ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 56ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * Licensed under the Apache License, Version 2.0 (the "License"); 66ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * you may not use this file except in compliance with the License. 76ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * You may obtain a copy of the License at: 86ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 96ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * http://www.apache.org/licenses/LICENSE-2.0 106ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 116ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * Unless required by applicable law or agreed to in writing, software 126ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * distributed under the License is distributed on an "AS IS" BASIS, 136ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 146ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * See the License for the specific language governing permissions and 156ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * limitations under the License. 166ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 176ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach ******************************************************************************/ 18e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef GATT_API_H 19e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_API_H 20e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 21e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#include "bt_target.h" 226ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#include "gattdefs.h" 23e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 24e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************************************************************** 25e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Constants 26e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/ 27e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Success code and error codes */ 28e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_SUCCESS 0x0000 29e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INVALID_HANDLE 0x0001 30e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_READ_NOT_PERMIT 0x0002 31e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_WRITE_NOT_PERMIT 0x0003 32e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INVALID_PDU 0x0004 33e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INSUF_AUTHENTICATION 0x0005 346ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_REQ_NOT_SUPPORTED 0x0006 35e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INVALID_OFFSET 0x0007 36e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INSUF_AUTHORIZATION 0x0008 37e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_PREPARE_Q_FULL 0x0009 38e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_NOT_FOUND 0x000a 39e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_NOT_LONG 0x000b 40e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INSUF_KEY_SIZE 0x000c 41e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INVALID_ATTR_LEN 0x000d 42e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_ERR_UNLIKELY 0x000e 43e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INSUF_ENCRYPTION 0x000f 44e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_UNSUPPORT_GRP_TYPE 0x0010 45e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INSUF_RESOURCE 0x0011 46e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 47e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 48e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_ILLEGAL_PARAMETER 0x0087 49e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_NO_RESOURCES 0x0080 50e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INTERNAL_ERROR 0x0081 51e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_WRONG_STATE 0x0082 52e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_DB_FULL 0x0083 53e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_BUSY 0x0084 54e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_ERROR 0x0085 55e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CMD_STARTED 0x0086 56e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_PENDING 0x0088 57e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_AUTH_FAIL 0x0089 58e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_MORE 0x008a 59e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INVALID_CFG 0x008b 60e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_SERVICE_STARTED 0x008c 616ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_ENCRYPED_MITM GATT_SUCCESS 62e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_ENCRYPED_NO_MITM 0x008d 63e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_NOT_ENCRYPTED 0x008e 64e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 65e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 66e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATT_STATUS; 67e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 68e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 69e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_RSP_ERROR 0x01 70e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_REQ_MTU 0x02 71e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_RSP_MTU 0x03 726ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_REQ_FIND_INFO 0x04 736ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_RSP_FIND_INFO 0x05 74e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_REQ_FIND_TYPE_VALUE 0x06 75e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_RSP_FIND_TYPE_VALUE 0x07 766ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_REQ_READ_BY_TYPE 0x08 776ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_RSP_READ_BY_TYPE 0x09 786ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_REQ_READ 0x0A 796ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_RSP_READ 0x0B 806ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_REQ_READ_BLOB 0x0C 816ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_RSP_READ_BLOB 0x0D 826ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_REQ_READ_MULTI 0x0E 836ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_RSP_READ_MULTI 0x0F 846ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_REQ_READ_BY_GRP_TYPE 0x10 856ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_RSP_READ_BY_GRP_TYPE 0x11 86e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_REQ_WRITE 0x12 /* 0001-0010 (write)*/ 876ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_RSP_WRITE 0x13 886ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_CMD_WRITE 0x52 /* changed in V4.0 01001-0010(write cmd)*/ 896ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_REQ_PREPARE_WRITE 0x16 906ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_RSP_PREPARE_WRITE 0x17 916ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_REQ_EXEC_WRITE 0x18 926ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_RSP_EXEC_WRITE 0x19 936ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_HANDLE_VALUE_NOTIF 0x1B 946ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_HANDLE_VALUE_IND 0x1D 956ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_HANDLE_VALUE_CONF 0x1E 96e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_SIGN_CMD_WRITE 0xD2 /* changed in V4.0 1101-0010 (signed write) see write cmd above*/ 97e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_OP_CODE_MAX GATT_HANDLE_VALUE_CONF + 1 /* 0x1E = 30 + 1 = 31*/ 98e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 99e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 100e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_HANDLE_IS_VALID(x) ((x) != 0) 101e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 102e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CONN_UNKNOWN 0 103e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CONN_NO_RESOURCES L2CAP_CONN_NO_RESOURCES /* connection fail for l2cap resource failure */ 104e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CONN_TIMEOUT HCI_ERR_CONNECTION_TOUT /* 0x08 connection timeout */ 105e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CONN_TERMINATE_PEER_USER HCI_ERR_PEER_USER /* 0x13 connection terminate by peer user */ 106e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CONN_TERMINATE_LOCAL_HOST HCI_ERR_CONN_CAUSE_LOCAL_HOST /* 0x16 connectionterminated by local host */ 107e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CONN_FAIL_ESTABLISH HCI_ERR_CONN_FAILED_ESTABLISHMENT/* 0x03E connection fail to establish */ 108e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CONN_LMP_TIMEOUT HCI_ERR_LMP_RESPONSE_TIMEOUT /* 0x22 connection fail for LMP response tout */ 109e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CONN_CANCEL L2CAP_CONN_CANCEL /* 0x0100 L2CAP connection cancelled */ 110e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT16 tGATT_DISCONN_REASON; 111e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1126ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* MAX GATT MTU size 113e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 1146ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#ifndef GATT_MAX_MTU_SIZE 115e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach #define GATT_MAX_MTU_SIZE 517 116e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 117e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1186ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* max legth of an attribute value 119e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 1206ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#ifndef GATT_MAX_ATTR_LEN 1216ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach #define GATT_MAX_ATTR_LEN 600 122e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 123e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 124e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* default GATT MTU size over LE link 125e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 126e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_DEF_BLE_MTU_SIZE 23 127e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 128e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* invalid connection ID 129e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 130e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INVALID_CONN_ID 0xFFFF 131e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1326ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#ifndef GATT_CL_MAX_LCB 133e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach #define GATT_CL_MAX_LCB 22 134e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 135e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1366ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#ifndef GATT_MAX_SCCB 137e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach #define GATT_MAX_SCCB 10 138e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 139e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 140e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 141e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1426ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* GATT notification caching timer, default to be three seconds 143e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 144e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef GATTC_NOTIF_TIMEOUT 145e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach #define GATTC_NOTIF_TIMEOUT 3 146e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 147e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 148e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************************************************************** 149e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** GATT Structure Definition 150e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/ 151e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 152e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Attribute permissions 153e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 1546ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_PERM_READ (1 << 0) /* bit 0 */ 155e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_PERM_READ_ENCRYPTED (1 << 1) /* bit 1 */ 156e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_PERM_READ_ENC_MITM (1 << 2) /* bit 2 */ 157e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_PERM_WRITE (1 << 4) /* bit 4 */ 158e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_PERM_WRITE_ENCRYPTED (1 << 5) /* bit 5 */ 159e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_PERM_WRITE_ENC_MITM (1 << 6) /* bit 6 */ 160e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_PERM_WRITE_SIGNED (1 << 7) /* bit 7 */ 161e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_PERM_WRITE_SIGNED_MITM (1 << 8) /* bit 8 */ 162e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT16 tGATT_PERM; 163e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1646ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_ENCRYPT_KEY_SIZE_MASK (0xF000) /* the MS nibble of tGATT_PERM; key size 7=0; size 16=9 */ 165e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 166e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_READ_ALLOWED (GATT_PERM_READ | GATT_PERM_READ_ENCRYPTED | GATT_PERM_READ_ENC_MITM) 167e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_READ_AUTH_REQUIRED (GATT_PERM_READ_ENC_MITM) 168e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_READ_MITM_REQUIRED (GATT_PERM_READ_ENC_MITM) 169e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_READ_ENCRYPTED_REQUIRED (GATT_PERM_READ_ENCRYPTED | GATT_PERM_READ_ENC_MITM) 170e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 171e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 172e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_WRITE_ALLOWED (GATT_PERM_WRITE | GATT_PERM_WRITE_ENCRYPTED | GATT_PERM_WRITE_ENC_MITM | \ 173e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_PERM_WRITE_SIGNED | GATT_PERM_WRITE_SIGNED_MITM) 174e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 175e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_WRITE_AUTH_REQUIRED (GATT_PERM_WRITE_ENCRYPTED | GATT_PERM_WRITE_SIGNED) 176e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 177e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_WRITE_MITM_REQUIRED (GATT_PERM_WRITE_ENC_MITM | GATT_PERM_WRITE_SIGNED_MITM) 178e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 179e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_WRITE_ENCRYPTED_PERM (GATT_PERM_WRITE_ENCRYPTED | GATT_PERM_WRITE_ENC_MITM) 180e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 181e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_WRITE_SIGNED_PERM (GATT_PERM_WRITE_SIGNED | GATT_PERM_WRITE_SIGNED_MITM) 182e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 183e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 184e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Characteristic properties 185e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 186e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_PROP_BIT_BROADCAST (1 << 0) 187e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_PROP_BIT_READ (1 << 1) 188e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_PROP_BIT_WRITE_NR (1 << 2) 189e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_PROP_BIT_WRITE (1 << 3) 190e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_PROP_BIT_NOTIFY (1 << 4) 191e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_PROP_BIT_INDICATE (1 << 5) 192e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_PROP_BIT_AUTH (1 << 6) 193e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_PROP_BIT_EXT_PROP (1 << 7) 194e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATT_CHAR_PROP; 195e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 196e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 197e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Format of the value of a characteristic. enumeration type 198e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 199e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum 200e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 201e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_RES, /* rfu */ 202e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_BOOL, /* 0x01 boolean */ 203e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_2BITS, /* 0x02 2 bit */ 204e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_NIBBLE, /* 0x03 nibble */ 205e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_UINT8, /* 0x04 uint8 */ 206e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_UINT12, /* 0x05 uint12 */ 207e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_UINT16, /* 0x06 uint16 */ 208e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_UINT24, /* 0x07 uint24 */ 209e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_UINT32, /* 0x08 uint32 */ 210e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_UINT48, /* 0x09 uint48 */ 211e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_UINT64, /* 0x0a uint64 */ 212e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_UINT128, /* 0x0B uint128 */ 213e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_SINT8, /* 0x0C signed 8 bit integer */ 214e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_SINT12, /* 0x0D signed 12 bit integer */ 215e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_SINT16, /* 0x0E signed 16 bit integer */ 216e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_SINT24, /* 0x0F signed 24 bit integer */ 217e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_SINT32, /* 0x10 signed 32 bit integer */ 218e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_SINT48, /* 0x11 signed 48 bit integer */ 219e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_SINT64, /* 0x12 signed 64 bit integer */ 220e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_SINT128, /* 0x13 signed 128 bit integer */ 221e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_FLOAT32, /* 0x14 float 32 */ 222e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_FLOAT64, /* 0x15 float 64*/ 223e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_SFLOAT, /* 0x16 IEEE-11073 16 bit SFLOAT */ 224e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_FLOAT, /* 0x17 IEEE-11073 32 bit SFLOAT */ 225e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_DUINT16, /* 0x18 IEEE-20601 format */ 226e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_UTF8S, /* 0x19 UTF-8 string */ 227e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_UTF16S, /* 0x1a UTF-16 string */ 228e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_STRUCT, /* 0x1b Opaque structure*/ 229e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_FORMAT_MAX /* 0x1c or above reserved */ 230e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}; 231e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATT_FORMAT; 232e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 2336ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* Characteristic Presentation Format Descriptor value 234e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 235e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 236e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 237e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 unit; /* as UUIUD defined by SIG */ 238e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 descr; /* as UUID as defined by SIG */ 239e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_FORMAT format; 240e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach INT8 exp; 241e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 name_spc; /* The name space of the description */ 242e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_CHAR_PRES; 243e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 244e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_VALID_RANGE_MAX_SIZE 16 245e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 246e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 247e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 format; 248e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 len; 249e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 lower_range[GATT_VALID_RANGE_MAX_SIZE]; /* in little endian format */ 250e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 upper_range[GATT_VALID_RANGE_MAX_SIZE]; 251e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_VALID_RANGE; 252e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 253e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Characteristic Aggregate Format attribute value 254e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 255e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_AGGR_HANDLE_NUM_MAX 10 256e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 257e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 258e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 num_handle; 259e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 handle_list[GATT_AGGR_HANDLE_NUM_MAX]; 260e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_CHAR_AGGRE; 261e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 262e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Characteristic descriptor: Extended Properties value 263e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 264e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_BIT_REL_WRITE 0x0001 /* permits reliable writes of the Characteristic Value */ 265e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_BIT_WRITE_AUX 0x0002 /* permits writes to the characteristic descriptor */ 266e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 267e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 2686ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* characteristic descriptor: client configuration value 269e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 2706ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_CLT_CONFIG_NONE 0x0000 271e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CLT_CONFIG_NOTIFICATION 0x0001 272e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CLT_CONFIG_INDICATION 0x0002 273e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT16 tGATT_CLT_CHAR_CONFIG; 274e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 275e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 2766ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* characteristic descriptor: server configuration value 277e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 278e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_SVR_CONFIG_NONE 0x0000 279e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_SVR_CONFIG_BROADCAST 0x0001 280e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT16 tGATT_SVR_CHAR_CONFIG; 281e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 282e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Characteristic descriptor: Extended Properties value 283e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 284e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_BIT_REL_WRITE 0x0001 /* permits reliable writes of the Characteristic Value */ 285e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_CHAR_BIT_WRITE_AUX 0x0002 /* permits writes to the characteristic descriptor */ 286e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 287e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* authentication requirement 288e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 289e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_AUTH_REQ_NONE 0 290e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_AUTH_REQ_NO_MITM 1 /* unauthenticated encryption */ 291e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_AUTH_REQ_MITM 2 /* authenticated encryption */ 292e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_AUTH_REQ_SIGNED_NO_MITM 3 2936ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_AUTH_REQ_SIGNED_MITM 4 294e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATT_AUTH_REQ; 295e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 2966ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* Attribute Value structure 297e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 298e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 299e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 300e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 conn_id; 301e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 handle; /* attribute handle */ 302e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 offset; /* attribute value offset, if no offfset is needed for the command, ignore it */ 303e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 len; /* length of attribute value */ 304e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_AUTH_REQ auth_req; /* authentication request */ 305e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 value[GATT_MAX_ATTR_LEN]; /* the actual attribute value */ 306e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_VALUE; 307e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 308e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Union of the event data which is used in the server respond API to carry the server response information 309e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 310e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union 311e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 312e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach /* data type member event */ 313e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_VALUE attr_value; /* READ, HANDLE_VALUE_IND, PREPARE_WRITE */ 314e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach /* READ_BLOB, READ_BY_TYPE */ 315e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 handle; /* WRITE, WRITE_BLOB */ 316e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 317e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATTS_RSP; 318e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 319e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Transports for the primary service */ 320e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum 321e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 322e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_TRANSPORT_LE, 323e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_TRANSPORT_BR_EDR, 3246ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach GATT_TRANSPORT_LE_BR_EDR 325e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}; 326e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATT_TRANSPORT; 327e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 328e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_PREP_WRITE_CANCEL 0x00 329e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_PREP_WRITE_EXEC 0x01 330e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATT_EXEC_FLAG; 331e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 332e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* read request always based on UUID */ 333e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 334e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 335e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 handle; 336e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 offset; 337e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BOOLEAN is_long; 338e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_READ_REQ; 339e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 340e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* write request data */ 341e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 342e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 343e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 handle; /* attribute handle */ 344e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 offset; /* attribute value offset, if no offfset is needed for the command, ignore it */ 345e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 len; /* length of attribute value */ 346e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 value[GATT_MAX_ATTR_LEN]; /* the actual attribute value */ 347e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BOOLEAN need_rsp; /* need write response */ 348e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BOOLEAN is_prep; /* is prepare write */ 349e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_WRITE_REQ; 350e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 351e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* callback data for server access request from client */ 352e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union 353e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 354e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_READ_REQ read_req; /* read request, read by Type, read blob */ 355e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 356e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_WRITE_REQ write_req; /* write */ 357e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach /* prepare write */ 358e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach /* write blob */ 3596ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach UINT16 handle; /* handle value confirmation */ 360e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 mtu; /* MTU exchange request */ 361e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_EXEC_FLAG exec_write; /* execute write */ 362e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATTS_DATA; 363e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 364e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATT_SERV_IF; /* GATT Service Interface */ 365e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 366e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum 367e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 368e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATTS_REQ_TYPE_READ = 1, /* Attribute read request */ 369e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATTS_REQ_TYPE_WRITE, /* Attribute write request */ 370e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATTS_REQ_TYPE_WRITE_EXEC, /* Execute write */ 371e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATTS_REQ_TYPE_MTU, /* MTU exchange information */ 372e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATTS_REQ_TYPE_CONF /* handle value confirmation */ 373e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}; 374e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATTS_REQ_TYPE; 375e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 376e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 377e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 3786ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* Client Used Data Structure 379e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 380e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* definition of different discovery types */ 381e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum 382e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 383e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_DISC_SRVC_ALL = 1, /* discover all services */ 384e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_DISC_SRVC_BY_UUID, /* discover service of a special type */ 385e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_DISC_INC_SRVC, /* discover the included service within a service */ 386e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_DISC_CHAR, /* discover characteristics of a service with/without type requirement */ 387e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_DISC_CHAR_DSCPT, /* discover characteristic descriptors of a character */ 388e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_DISC_MAX /* maximnun discover type */ 389e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}; 390e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATT_DISC_TYPE; 391e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 392e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Discover parameters of different discovery types 393e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 394e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 395e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 396e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBT_UUID service; 397e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 s_handle; 398e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 e_handle; 399e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}tGATT_DISC_PARAM; 400e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 401e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* GATT read type enumeration 402e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 403e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum 404e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 405e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_READ_BY_TYPE = 1, 406e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_READ_BY_HANDLE, 407e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_READ_MULTIPLE, 408e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_READ_CHAR_VALUE, 409e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_READ_PARTIAL, 410e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_READ_MAX 411e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}; 412e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATT_READ_TYPE; 413e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 4146ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* Read By Type Request (GATT_READ_BY_TYPE) Data 415e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 416e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 417e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 418e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_AUTH_REQ auth_req; 419e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 s_handle; 420e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 e_handle; 421e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBT_UUID uuid; 422e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_READ_BY_TYPE; 423e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 4246ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* GATT_READ_MULTIPLE request data 425e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 426e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_MAX_READ_MULTI_HANDLES 10 /* Max attributes to read in one request */ 427e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 428e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 429e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_AUTH_REQ auth_req; 430e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 num_handles; /* number of handles to read */ 431e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 handles[GATT_MAX_READ_MULTI_HANDLES]; /* handles list to be read */ 432e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_READ_MULTI; 433e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 434e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Read By Handle Request (GATT_READ_BY_HANDLE) data */ 435e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 436e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 437e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_AUTH_REQ auth_req; 4386ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach UINT16 handle; 439e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_READ_BY_HANDLE; 440e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 441e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* READ_BT_HANDLE_Request data */ 442e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 443e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 444e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_AUTH_REQ auth_req; 4456ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach UINT16 handle; 446e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 offset; 447e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_READ_PARTIAL; 448e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 4496ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* Read Request Data 450e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 451e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union 452e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 453e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_READ_BY_TYPE service; 454e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_READ_BY_TYPE char_type; /* characterisitc type */ 455e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_READ_MULTI read_multiple; 456e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_READ_BY_HANDLE by_handle; 457e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_READ_PARTIAL partial; 458e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_READ_PARAM; 459e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 460e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* GATT write type enumeration */ 461e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachenum 462e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 463e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_WRITE_NO_RSP = 1, 464e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_WRITE , 465e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_WRITE_PREPARE 466e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach}; 467e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATT_WRITE_TYPE; 468e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 469e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Client Operation Complete Callback Data 470e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 471e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union 472e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 473e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_VALUE att_value; 474e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 mtu; 475e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 handle; 476e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_CL_COMPLETE; 477e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 478e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* GATT client operation type, used in client callback function 479e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 480e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTC_OPTYPE_NONE 0 481e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTC_OPTYPE_DISCOVERY 1 482e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTC_OPTYPE_READ 2 483e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTC_OPTYPE_WRITE 3 484e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTC_OPTYPE_EXE_WRITE 4 4856ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATTC_OPTYPE_CONFIG 5 486e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTC_OPTYPE_NOTIFICATION 6 487e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTC_OPTYPE_INDICATION 7 488e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATTC_OPTYPE; 489e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 4906ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* characteristic declaration 491e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 492e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 493e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 494e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_CHAR_PROP char_prop; /* characterisitc properties */ 495e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 val_handle; /* characteristic value attribute handle */ 496e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBT_UUID char_uuid; /* characteristic UUID type */ 497e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_CHAR_DCLR_VAL; 498e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 4996ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* primary service group data 5006ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach*/ 501e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 502e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 503e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 e_handle; /* ending handle of the group */ 504e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBT_UUID service_type; /* group type */ 505e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_GROUP_VALUE; 506e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 507e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 5086ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/* included service attribute value 509e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 510e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 511e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 512e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBT_UUID service_type; /* included service UUID */ 513e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 s_handle; /* starting handle */ 514e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 e_handle; /* ending handle */ 515e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_INCL_SRVC; 516e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 517e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union 518e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 519e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_INCL_SRVC incl_service; /* include service value */ 5206ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach tGATT_GROUP_VALUE group_value; /* Service UUID type. 5216ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach This field is used with GATT_DISC_SRVC_ALL 522e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach type of discovery result callback. */ 523e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 5246ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach UINT16 handle; /* When used with GATT_DISC_SRVC_BY_UUID type 5256ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach discovery result, it is the ending handle of a 5266ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach known service to be discovered. When used with 5276ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach GATT_DISC_INC_SRVC type discovery result, 528e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach it is the included service starting handle.*/ 529e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 5306ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach tGATT_CHAR_DCLR_VAL dclr_value; /* Characteristic declaration value. 531e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach This field is used with GATT_DISC_CHAR type discovery.*/ 532e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_DISC_VALUE; 533e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 534e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* discover result record 535e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 536e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 537e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 538e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBT_UUID type; 539e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 handle; 540e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_DISC_VALUE value; 541e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_DISC_RES; 542e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 543e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 544e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATT_IF; 545e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_LINK_IDLE_TIMEOUT_WHEN_NO_APP 0 /* start a idle timer for this duration when no application 546e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach need to use the link */ 547e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 5486ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define GATT_LINK_NO_IDLE_TIMEOUT 0xFFFF 549e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 550e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATT_INVALID_ACL_HANDLE 0xFFFF 551e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* discover result callback function */ 552e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tGATT_DISC_RES_CB) (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGATT_DISC_RES *p_data); 553e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 554e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* discover complete callback function */ 555e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tGATT_DISC_CMPL_CB) (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGATT_STATUS status); 556e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 557e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Define a callback function for when read/write/disc/config operation is completed. */ 558e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tGATT_CMPL_CBACK) (UINT16 conn_id, tGATTC_OPTYPE op, tGATT_STATUS status, tGATT_CL_COMPLETE *p_data); 559e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 560e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Define a callback function when an initialized connection is established. */ 561e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tGATT_CONN_CBACK) (tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_id, BOOLEAN connected, tGATT_DISCONN_REASON reason); 562e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 563e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* attribute request callback for ATT server */ 564e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tGATT_REQ_CBACK )(UINT16 conn_id, UINT32 trans_id, tGATTS_REQ_TYPE type, tGATTS_DATA *p_data); 565e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 566e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 567e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 568e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 569e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Define the structure that applications use to register with 570e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** GATT. This structure includes callback functions. All functions 571e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** MUST be provided. 572e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 573e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 574e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 575e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_CONN_CBACK *p_conn_cb; 576e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_CMPL_CBACK *p_cmpl_cb; 5776ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach tGATT_DISC_RES_CB *p_disc_res_cb; 5786ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach tGATT_DISC_CMPL_CB *p_disc_cmpl_cb; 5796ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach tGATT_REQ_CBACK *p_req_cb; 580e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_CBACK; 581e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 582e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*********************** Start Handle Management Definitions ********************** 583e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 584e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 585e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 586e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 587e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 588e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBT_UUID app_uuid128; 589e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBT_UUID svc_uuid; 5906ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach UINT16 svc_inst; 591e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 s_handle; 592e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 e_handle; 593e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BOOLEAN is_primary; /* primary service or secondary */ 594e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATTS_HNDL_RANGE; 595e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 596e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 597e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 598e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTS_SRV_CHG_CMD_ADD_CLIENT 1 599e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTS_SRV_CHG_CMD_UPDATE_CLIENT 2 600e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTS_SRV_CHG_CMD_REMOVE_CLIENT 3 601e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTS_SRV_CHG_CMD_READ_NUM_CLENTS 4 602e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define GATTS_SRV_CHG_CMD_READ_CLENT 5 603e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tGATTS_SRV_CHG_CMD; 604e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 6056ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbachtypedef struct 606e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 607e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BD_ADDR bda; 608e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BOOLEAN srv_changed; 609e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATTS_SRV_CHG; 610e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 611e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 612e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union 613e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 614e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATTS_SRV_CHG srv_chg; 615e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 client_read_index; /* only used for sequential reading client srv chg info */ 616e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATTS_SRV_CHG_REQ; 617e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 618e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union 619e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 620e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATTS_SRV_CHG srv_chg; 621e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 num_clients; 622e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATTS_SRV_CHG_RSP; 623e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 624e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 625e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 6266ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbachtypedef struct 627e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 628e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATTS_HNDL_RANGE *p_new_srv_start; 629e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATTS_PENDING_NEW_SRV_START; 630e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 631e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Attibute server handle ranges NV storage callback functions 632e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*/ 633e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tGATTS_NV_SAVE_CBACK)(BOOLEAN is_saved, tGATTS_HNDL_RANGE *p_hndl_range); 634e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef BOOLEAN (tGATTS_NV_SRV_CHG_CBACK)(tGATTS_SRV_CHG_CMD cmd, tGATTS_SRV_CHG_REQ *p_req, tGATTS_SRV_CHG_RSP *p_rsp); 635e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 636e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 637e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 638e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATTS_NV_SAVE_CBACK *p_nv_save_callback; 639e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATTS_NV_SRV_CHG_CBACK *p_srv_chg_callback; 640e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tGATT_APPL_INFO; 641e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 642e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* 643e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*********************** End Handle Management Definitions **********************/ 644e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 645e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************************************************************** 646e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** External Function Declarations 647e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/ 648e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifdef __cplusplus 649e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern "C" 650e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 651e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 652e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 653e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 654e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 655e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATT_SetTraceLevel 656e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 657e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function sets the trace level. If called with 658e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** a value of 0xFF, it simply returns the current trace level. 659e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 660e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns The new or current trace level 661e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 662e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 663e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern UINT8 GATT_SetTraceLevel (UINT8 new_level); 664e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 665e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 666e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************/ 667e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* GATT Profile API Functions */ 668e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************/ 669e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* GATT Profile Server Functions */ 670e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************/ 671e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 672e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 673e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTS_AddHandleRange 674e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 675e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function add the allocated handles range for the specifed 6766ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** application UUID, service UUID and service instance 6776ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** 678e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter p_hndl_range: pointer to allocated handles information 679e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 680e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns TRUE if handle range is added sucessfully; otherwise FALSE. 681e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 682e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 683e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 684e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern BOOLEAN GATTS_AddHandleRange(tGATTS_HNDL_RANGE *p_hndl_range); 685e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 686e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 687e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 688e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTS_NVRegister 689e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 690e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Application manager calls this function to register for 6916ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** NV save callback function. There can be one and only one 692e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** NV save callback function. 693e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 694e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter p_cb_info : callback informaiton 695e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 696e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns TRUE if registered OK, else FALSE 697e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 698e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 699e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern BOOLEAN GATTS_NVRegister (tGATT_APPL_INFO *p_cb_info); 700e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 701e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 702e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 703e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 704e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTS_CreateService 705e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 706e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called to reserve a block of handles for a service. 707e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 708e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** *** It should be called only once per service instance *** 709e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 710e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter gatt_if : application if 711e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_svc_uuid : service UUID 712e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** svc_inst : instance of the service inside the application 713e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** num_handles : number of handles needed by the service. 714e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** is_pri : is a primary service or not. 715e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 716e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns service handle if sucessful, otherwise 0. 717e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 718e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 719e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern UINT16 GATTS_CreateService (tGATT_IF gatt_if, tBT_UUID *p_svc_uuid, 720e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 svc_inst, UINT16 num_handles, BOOLEAN is_pri); 721e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 722e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 723e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 724e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 725e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTS_AddIncludeService 726e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 727e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called to add an included service. 728e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 729e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter service_handle : To which service this included service is added to. 730e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** include_svc_handle : included service handle. 731e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 7326ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Returns included service attribute handle. If 0, add included service 733e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** fail. 734e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 735e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 7366ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach GATT_API extern UINT16 GATTS_AddIncludeService (UINT16 service_handle, 737e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 include_svc_handle); 738e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 739e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 740e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 741e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 742e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTS_AddCharacteristic 743e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 744e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called to add a characteristic into a service. 745e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** It will add a characteristic declaration and characteristic 746e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** value declaration into the service database identified by the 747e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** service handle. 748e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 749e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter service_handle : To which service this included service is added to. 750e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** char_uuid : Characteristic UUID. 751e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** perm : Characteristic value declaration attribute permission. 752e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** property : Characteristic Properties 753e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 7546ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Returns Characteristic value declaration attribute handle. 0 if add 755e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** characteristic failed. 756e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 757e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 758e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern UINT16 GATTS_AddCharacteristic (UINT16 service_handle, tBT_UUID *char_uuid, 759e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_PERM perm,tGATT_CHAR_PROP property); 760e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 761e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 762e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 763e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTS_AddCharDescriptor 764e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 7656ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description This function is called to add a characteristic descriptor 7666ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** into a service database. Add descriptor should follow add char 7676ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** to which it belongs, and next add char should be done only 768e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** after all add descriptors for the previous char. 769e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 7706ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameter service_handle : To which service this characteristic descriptor 771e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** is added to. 7726ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** perm : Characteristic value declaration attribute 773e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** permission. 774e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_descr_uuid : Characteristic descriptor UUID. 775e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 7766ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Returns Characteristic descriptor attribute handle. 0 if add 777e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** characteristic descriptor failed. 778e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 779e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 780e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern UINT16 GATTS_AddCharDescriptor (UINT16 service_handle, tGATT_PERM perm, 781e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBT_UUID * p_descr_uuid); 782e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 783e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 784e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 785e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTS_DeleteService 786e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 787e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called to delete a service. 788e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 789e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter gatt_if : application interface 790e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_svc_uuid : service UUID 791e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** svc_inst : instance of the service inside the application 792e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 793e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns TRUE if operation succeed, FALSE if handle block was not found. 794e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 795e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 796e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern BOOLEAN GATTS_DeleteService (tGATT_IF gatt_if, tBT_UUID *p_svc_uuid, UINT16 svc_inst); 797e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 798e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 799e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 800e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTS_StartService 801e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 802e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called to start a service with GATT 803e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 804e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter gatt_if : service handle. 805e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_cback : application service callback functions. 806e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** sup_transport : supported transport(s) for this primary service 807e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 808e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** return GATT_SUCCESS if sucessfully started; otherwise error code. 809e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 810e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 8116ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach GATT_API extern tGATT_STATUS GATTS_StartService (tGATT_IF gatt_if, UINT16 service_handle, 812e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_TRANSPORT sup_transport); 813e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 814e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 815e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 816e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 817e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTS_StopService 818e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 8196ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description This function is called to stop a service 8206ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** 8216ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameter service_handle : this is the start handle of a service 822e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 823e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns None. 824e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 825e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 826e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern void GATTS_StopService (UINT16 service_handle); 827e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 828e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 829e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 830e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 831e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTs_HandleValueIndication 832e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 8336ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description This function sends a handle value indication to a client. 834e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 835e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter conn_id: connection identifier. 836e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** attr_handle: Attribute handle of this handle value indication. 837e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** val_len: Length of the indicated attribute value. 838e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_val: Pointer to the indicated attribute value data. 839e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 840e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns GATT_SUCCESS if sucessfully sent or queued; otherwise error code. 841e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 842e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 8436ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach GATT_API extern tGATT_STATUS GATTS_HandleValueIndication (UINT16 conn_id, 8446ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach UINT16 attr_handle, 845e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 val_len, UINT8 *p_val); 846e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 847e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 848e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 849e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTS_HandleValueNotification 850e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 8516ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description This function sends a handle value notification to a client. 852e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 853e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter conn_id: connection identifier. 854e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** attr_handle: Attribute handle of this handle value indication. 855e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** val_len: Length of the indicated attribute value. 856e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_val: Pointer to the indicated attribute value data. 857e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 858e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns GATT_SUCCESS if sucessfully sent; otherwise error code. 859e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 860e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 861e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern tGATT_STATUS GATTS_HandleValueNotification (UINT16 conn_id, UINT16 attr_handle, 862e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 val_len, UINT8 *p_val); 863e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 864e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 865e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 866e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 867e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATTS_SendRsp 868e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 869e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function sends the server response to client. 870e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 871e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter conn_id: connection identifier. 872e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** trans_id: transaction id 873e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** status: response status 874e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_msg: pointer to message parameters structure. 875e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 876e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns GATT_SUCCESS if sucessfully sent; otherwise error code. 877e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 878e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 8796ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach GATT_API extern tGATT_STATUS GATTS_SendRsp (UINT16 conn_id, UINT32 trans_id, 880e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_STATUS status, tGATTS_RSP *p_msg); 881e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 882e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 883e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************/ 884e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* GATT Profile Client Functions */ 885e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/*******************************************************************************/ 886e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 887e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 888e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 8896ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Function GATTC_ConfigureMTU 890e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 891e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called to configure the ATT MTU size for 892e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** a connection on an LE transport. 893e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 8946ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameters conn_id: connection identifier. 895e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** mtu - attribute MTU size.. 896e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 8976ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Returns GATT_SUCCESS if command started successfully. 898e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 899e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 900e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern tGATT_STATUS GATTC_ConfigureMTU (UINT16 conn_id, UINT16 mtu); 901e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 902e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 903e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9046ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Function GATTC_Discover 905e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 906e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called to do a discovery procedure on ATT server. 907e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9086ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameters conn_id: connection identifier. 909e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** disc_type:discovery type. 910e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_param: parameters of discovery requirement. 911e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9126ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Returns GATT_SUCCESS if command received/sent successfully. 913e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 914e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 9156ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach GATT_API extern tGATT_STATUS GATTC_Discover (UINT16 conn_id, 9166ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach tGATT_DISC_TYPE disc_type, 917e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_DISC_PARAM *p_param ); 918e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 919e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9206ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Function GATTC_Read 921e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 922e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called to read the value of an attribute from 923e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** the server. 924e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9256ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameters conn_id: connection identifier. 926e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** type - attribute read type. 927e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_read - read operation parameters. 928e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9296ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Returns GATT_SUCCESS if command started successfully. 930e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 931e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 9326ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach GATT_API extern tGATT_STATUS GATTC_Read (UINT16 conn_id, tGATT_READ_TYPE type, 933e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_READ_PARAM *p_read); 934e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 935e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 936e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9376ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Function GATTC_Write 938e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 939e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called to read the value of an attribute from 940e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** the server. 941e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9426ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameters conn_id: connection identifier. 943e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** type - attribute write type. 944e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_write - write operation parameters. 945e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9466ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Returns GATT_SUCCESS if command started successfully. 947e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 948e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 9496ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach GATT_API extern tGATT_STATUS GATTC_Write (UINT16 conn_id, tGATT_WRITE_TYPE type, 950e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tGATT_VALUE *p_write); 951e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 952e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 953e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 954e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9556ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Function GATTC_ExecuteWrite 956e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 957e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called to send an Execute write request to 958e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** the server. 959e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9606ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameters conn_id: connection identifier. 961e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** is_execute - to execute or cancel the prepare write requet(s) 962e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9636ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Returns GATT_SUCCESS if command started successfully. 964e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 965e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 966e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern tGATT_STATUS GATTC_ExecuteWrite (UINT16 conn_id, BOOLEAN is_execute); 967e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 968e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 969e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9706ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Function GATTC_SendHandleValueConfirm 971e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 972e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called to send a handle value confirmation 973e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** as response to a handle value notification from server. 974e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9756ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameters conn_id: connection identifier. 976e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** handle: the handle of the attribute confirmation. 977e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9786ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Returns GATT_SUCCESS if command started successfully. 979e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 980e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 981e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern tGATT_STATUS GATTC_SendHandleValueConfirm (UINT16 conn_id, UINT16 handle); 982e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 983e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 984e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 985e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 986e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATT_SetIdleTimeout 987e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 9886ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description This function (common to both client and server) sets the idle 989e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** timeout for a tansport connection 990e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 991e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter bd_addr: target device bd address. 992e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** idle_tout: timeout value in seconds. 993e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 994e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 995e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 996e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 997e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern void GATT_SetIdleTimeout (BD_ADDR bd_addr, UINT16 idle_tout); 998e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 999e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1000e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 1001e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1002e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATT_Register 1003e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 10046ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description This function is called to register an application 1005e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** with GATT 1006e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1007e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter p_app_uuid128: Application UUID 1008e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_cb_info: callback functions. 1009e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1010e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns 0 for error, otherwise the index of the client registered with GATT 1011e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1012e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 1013e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern tGATT_IF GATT_Register (tBT_UUID *p_app_uuid128, tGATT_CBACK *p_cb_info); 1014e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1015e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 1016e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1017e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATT_Deregister 1018e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 10196ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description This function deregistered the application from GATT. 1020e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1021e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters gatt_if: applicaiton interface. 1022e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 10236ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Returns None. 1024e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1025e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 1026e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern void GATT_Deregister (tGATT_IF gatt_if); 1027e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1028e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 1029e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1030e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATT_StartIf 1031e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1032e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function is called after registration to start receiving 1033e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** callbacks for registered interface. Function may call back 1034e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** with connection status and queued notifications 1035e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1036e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameter gatt_if: applicaiton interface. 1037e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1038e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns None 1039e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1040e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 1041e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern void GATT_StartIf (tGATT_IF gatt_if); 1042e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1043e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 1044e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1045e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATT_Connect 1046e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1047e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function initiate a connecttion to a ATT server. 1048e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 10496ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameters gatt_if: applicaiton interface 1050e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** bd_addr: peer device address. 1051e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** is_direct: is a direct conenection or a background auto connection 1052e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1053e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns TRUE if connection started; FALSE if connection start failure. 1054e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1055e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 1056e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern BOOLEAN GATT_Connect (tGATT_IF gatt_if, BD_ADDR bd_addr, BOOLEAN is_direct); 1057e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1058e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1059e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 1060e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1061e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATT_CancelConnect 1062e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1063e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function initiate a cancel connecttion to a ATT server. 1064e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1065e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters gatt_if: client interface. If 0 used as unconditionally disconnect, 10666ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** typically used for direct connection cancellation. 1067e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** bd_addr: peer device address. 1068e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** is_direct: is a direct conenection or a background auto connection 1069e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1070e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns TRUE if connection started; FALSE if connection start failure. 1071e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1072e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 1073e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern BOOLEAN GATT_CancelConnect (tGATT_IF gatt_if, BD_ADDR bd_addr, BOOLEAN is_direct); 1074e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1075e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 1076e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1077e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATT_Disconnect 1078e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1079e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function disconnect a logic channel. 1080e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 10816ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameters conn_id: connection identifier. 1082e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1083e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns GATT_SUCCESS if disconnected. 1084e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1085e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 1086e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern tGATT_STATUS GATT_Disconnect (UINT16 conn_id); 1087e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1088e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1089e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1090e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 1091e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1092e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATT_GetConnectionInfor 1093e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1094e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function use conn_id to find its associated BD address and applciation 1095e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** interface 1096e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1097e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Parameters conn_id: connection id (input) 10986ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** p_gatt_if: applicaiton interface (output) 1099e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** bd_addr: peer device address. (output) 1100e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1101e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns TRUE the ligical link information is found for conn_id 1102e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1103e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 1104e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern BOOLEAN GATT_GetConnectionInfor(UINT16 conn_id, tGATT_IF *p_gatt_if, BD_ADDR bd_addr); 1105e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1106e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1107e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 1108e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1109e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function GATT_GetConnIdIfConnected 1110e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1111e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description This function find the conn_id if the logical link for BD address 1112e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** and applciation interface is connected 1113e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 11146ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Parameters gatt_if: applicaiton interface (input) 1115e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** bd_addr: peer device address. (input) 1116e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** p_conn_id: connection id (output) 1117e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 11186ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Returns TRUE the ligical link is connected 1119e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 1120e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 1121e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach GATT_API extern BOOLEAN GATT_GetConnIdIfConnected(tGATT_IF gatt_if, BD_ADDR bd_addr, UINT16 *p_conn_id); 1122e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1123e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifdef __cplusplus 11246ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach 1125e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} 1126e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 1127e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 1128e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif /* GATT_API_H */ 1129