Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of nrf51-sdk by
ble_gatt.h
00001 /* 00002 * Copyright (c) Nordic Semiconductor ASA 00003 * All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without modification, 00006 * are permitted provided that the following conditions are met: 00007 * 00008 * 1. Redistributions of source code must retain the above copyright notice, this 00009 * list of conditions and the following disclaimer. 00010 * 00011 * 2. Redistributions in binary form must reproduce the above copyright notice, this 00012 * list of conditions and the following disclaimer in the documentation and/or 00013 * other materials provided with the distribution. 00014 * 00015 * 3. Neither the name of Nordic Semiconductor ASA nor the names of other 00016 * contributors to this software may be used to endorse or promote products 00017 * derived from this software without specific prior written permission. 00018 * 00019 * 00020 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 00021 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00022 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00023 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 00024 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00025 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00026 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 00027 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00028 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00029 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00030 * 00031 */ 00032 00033 /** 00034 @addtogroup BLE_GATT Generic Attribute Profile (GATT) Common 00035 @{ 00036 @brief Common definitions and prototypes for the GATT interfaces. 00037 */ 00038 00039 #ifndef BLE_GATT_H__ 00040 #define BLE_GATT_H__ 00041 00042 #include "ble_types.h" 00043 #include "ble_ranges.h" 00044 00045 00046 /** @addtogroup BLE_GATT_DEFINES Defines 00047 * @{ */ 00048 00049 /** @brief Default MTU size. */ 00050 #define GATT_MTU_SIZE_DEFAULT 23 00051 00052 /** @brief Only the default MTU size of 23 is currently supported. */ 00053 #define GATT_RX_MTU 23 00054 00055 00056 /**@brief Invalid Attribute Handle. */ 00057 #define BLE_GATT_HANDLE_INVALID 0x0000 00058 00059 /** @defgroup BLE_GATT_TIMEOUT_SOURCES GATT Timeout sources 00060 * @{ */ 00061 #define BLE_GATT_TIMEOUT_SRC_PROTOCOL 0x00 /**< ATT Protocol timeout. */ 00062 /** @} */ 00063 00064 /** @defgroup BLE_GATT_WRITE_OPS GATT Write operations 00065 * @{ */ 00066 #define BLE_GATT_OP_INVALID 0x00 /**< Invalid Operation. */ 00067 #define BLE_GATT_OP_WRITE_REQ 0x01 /**< Write Request. */ 00068 #define BLE_GATT_OP_WRITE_CMD 0x02 /**< Write Command. */ 00069 #define BLE_GATT_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ 00070 #define BLE_GATT_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ 00071 #define BLE_GATT_OP_EXEC_WRITE_REQ 0x05 /**< Execute Write Request. */ 00072 /** @} */ 00073 00074 /** @defgroup BLE_GATT_EXEC_WRITE_FLAGS GATT Execute Write flags 00075 * @{ */ 00076 #define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL 0x00 00077 #define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE 0x01 00078 /** @} */ 00079 00080 /** @defgroup BLE_GATT_HVX_TYPES GATT Handle Value operations 00081 * @{ */ 00082 #define BLE_GATT_HVX_INVALID 0x00 /**< Invalid Operation. */ 00083 #define BLE_GATT_HVX_NOTIFICATION 0x01 /**< Handle Value Notification. */ 00084 #define BLE_GATT_HVX_INDICATION 0x02 /**< Handle Value Indication. */ 00085 /** @} */ 00086 00087 /** @defgroup BLE_GATT_STATUS_CODES GATT Status Codes 00088 * @{ */ 00089 #define BLE_GATT_STATUS_SUCCESS 0x0000 /**< Success. */ 00090 #define BLE_GATT_STATUS_UNKNOWN 0x0001 /**< Unknown or not applicable status. */ 00091 #define BLE_GATT_STATUS_ATTERR_INVALID 0x0100 /**< ATT Error: Invalid Error Code. */ 00092 #define BLE_GATT_STATUS_ATTERR_INVALID_HANDLE 0x0101 /**< ATT Error: Invalid Attribute Handle. */ 00093 #define BLE_GATT_STATUS_ATTERR_READ_NOT_PERMITTED 0x0102 /**< ATT Error: Read not permitted. */ 00094 #define BLE_GATT_STATUS_ATTERR_WRITE_NOT_PERMITTED 0x0103 /**< ATT Error: Write not permitted. */ 00095 #define BLE_GATT_STATUS_ATTERR_INVALID_PDU 0x0104 /**< ATT Error: Used in ATT as Invalid PDU. */ 00096 #define BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION 0x0105 /**< ATT Error: Authenticated link required. */ 00097 #define BLE_GATT_STATUS_ATTERR_REQUEST_NOT_SUPPORTED 0x0106 /**< ATT Error: Used in ATT as Request Not Supported. */ 00098 #define BLE_GATT_STATUS_ATTERR_INVALID_OFFSET 0x0107 /**< ATT Error: Offset specified was past the end of the attribute. */ 00099 #define BLE_GATT_STATUS_ATTERR_INSUF_AUTHORIZATION 0x0108 /**< ATT Error: Used in ATT as Insufficient Authorisation. */ 00100 #define BLE_GATT_STATUS_ATTERR_PREPARE_QUEUE_FULL 0x0109 /**< ATT Error: Used in ATT as Prepare Queue Full. */ 00101 #define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND 0x010A /**< ATT Error: Used in ATT as Attribute not found. */ 00102 #define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_LONG 0x010B /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */ 00103 #define BLE_GATT_STATUS_ATTERR_INSUF_ENC_KEY_SIZE 0x010C /**< ATT Error: Encryption key size used is insufficient. */ 00104 #define BLE_GATT_STATUS_ATTERR_INVALID_ATT_VAL_LENGTH 0x010D /**< ATT Error: Invalid value size. */ 00105 #define BLE_GATT_STATUS_ATTERR_UNLIKELY_ERROR 0x010E /**< ATT Error: Very unlikely error. */ 00106 #define BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION 0x010F /**< ATT Error: Encrypted link required. */ 00107 #define BLE_GATT_STATUS_ATTERR_UNSUPPORTED_GROUP_TYPE 0x0110 /**< ATT Error: Attribute type is not a supported grouping attribute. */ 00108 #define BLE_GATT_STATUS_ATTERR_INSUF_RESOURCES 0x0111 /**< ATT Error: Encrypted link required. */ 00109 #define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_BEGIN 0x0112 /**< ATT Error: Reserved for Future Use range #1 begin. */ 00110 #define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_END 0x017F /**< ATT Error: Reserved for Future Use range #1 end. */ 00111 #define BLE_GATT_STATUS_ATTERR_APP_BEGIN 0x0180 /**< ATT Error: Application range begin. */ 00112 #define BLE_GATT_STATUS_ATTERR_APP_END 0x019F /**< ATT Error: Application range end. */ 00113 #define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_BEGIN 0x01A0 /**< ATT Error: Reserved for Future Use range #2 begin. */ 00114 #define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_END 0x01DF /**< ATT Error: Reserved for Future Use range #2 end. */ 00115 #define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_BEGIN 0x01E0 /**< ATT Error: Reserved for Future Use range #3 begin. */ 00116 #define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_END 0x01FC /**< ATT Error: Reserved for Future Use range #3 end. */ 00117 #define BLE_GATT_STATUS_ATTERR_CPS_CCCD_CONFIG_ERROR 0x01FD /**< ATT Common Profile and Service Error: Client Characteristic Configuration Descriptor improperly configured. */ 00118 #define BLE_GATT_STATUS_ATTERR_CPS_PROC_ALR_IN_PROG 0x01FE /**< ATT Common Profile and Service Error: Procedure Already in Progress. */ 00119 #define BLE_GATT_STATUS_ATTERR_CPS_OUT_OF_RANGE 0x01FF /**< ATT Common Profile and Service Error: Out Of Range. */ 00120 /** @} */ 00121 00122 00123 /** @defgroup BLE_GATT_CPF_FORMATS Characteristic Presentation Formats 00124 * @note Found at http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml 00125 * @{ */ 00126 #define BLE_GATT_CPF_FORMAT_RFU 0x00 /**< Reserved For Future Use. */ 00127 #define BLE_GATT_CPF_FORMAT_BOOLEAN 0x01 /**< Boolean. */ 00128 #define BLE_GATT_CPF_FORMAT_2BIT 0x02 /**< Unsigned 2-bit integer. */ 00129 #define BLE_GATT_CPF_FORMAT_NIBBLE 0x03 /**< Unsigned 4-bit integer. */ 00130 #define BLE_GATT_CPF_FORMAT_UINT8 0x04 /**< Unsigned 8-bit integer. */ 00131 #define BLE_GATT_CPF_FORMAT_UINT12 0x05 /**< Unsigned 12-bit integer. */ 00132 #define BLE_GATT_CPF_FORMAT_UINT16 0x06 /**< Unsigned 16-bit integer. */ 00133 #define BLE_GATT_CPF_FORMAT_UINT24 0x07 /**< Unsigned 24-bit integer. */ 00134 #define BLE_GATT_CPF_FORMAT_UINT32 0x08 /**< Unsigned 32-bit integer. */ 00135 #define BLE_GATT_CPF_FORMAT_UINT48 0x09 /**< Unsigned 48-bit integer. */ 00136 #define BLE_GATT_CPF_FORMAT_UINT64 0x0A /**< Unsigned 64-bit integer. */ 00137 #define BLE_GATT_CPF_FORMAT_UINT128 0x0B /**< Unsigned 128-bit integer. */ 00138 #define BLE_GATT_CPF_FORMAT_SINT8 0x0C /**< Signed 2-bit integer. */ 00139 #define BLE_GATT_CPF_FORMAT_SINT12 0x0D /**< Signed 12-bit integer. */ 00140 #define BLE_GATT_CPF_FORMAT_SINT16 0x0E /**< Signed 16-bit integer. */ 00141 #define BLE_GATT_CPF_FORMAT_SINT24 0x0F /**< Signed 24-bit integer. */ 00142 #define BLE_GATT_CPF_FORMAT_SINT32 0x10 /**< Signed 32-bit integer. */ 00143 #define BLE_GATT_CPF_FORMAT_SINT48 0x11 /**< Signed 48-bit integer. */ 00144 #define BLE_GATT_CPF_FORMAT_SINT64 0x12 /**< Signed 64-bit integer. */ 00145 #define BLE_GATT_CPF_FORMAT_SINT128 0x13 /**< Signed 128-bit integer. */ 00146 #define BLE_GATT_CPF_FORMAT_FLOAT32 0x14 /**< IEEE-754 32-bit floating point. */ 00147 #define BLE_GATT_CPF_FORMAT_FLOAT64 0x15 /**< IEEE-754 64-bit floating point. */ 00148 #define BLE_GATT_CPF_FORMAT_SFLOAT 0x16 /**< IEEE-11073 16-bit SFLOAT. */ 00149 #define BLE_GATT_CPF_FORMAT_FLOAT 0x17 /**< IEEE-11073 32-bit FLOAT. */ 00150 #define BLE_GATT_CPF_FORMAT_DUINT16 0x18 /**< IEEE-20601 format. */ 00151 #define BLE_GATT_CPF_FORMAT_UTF8S 0x19 /**< UTF-8 string. */ 00152 #define BLE_GATT_CPF_FORMAT_UTF16S 0x1A /**< UTF-16 string. */ 00153 #define BLE_GATT_CPF_FORMAT_STRUCT 0x1B /**< Opaque Structure. */ 00154 /** @} */ 00155 00156 /** @defgroup BLE_GATT_CPF_NAMESPACES GATT Bluetooth Namespaces 00157 * @{ 00158 */ 00159 #define BLE_GATT_CPF_NAMESPACE_BTSIG 0x01 /**< Bluetooth SIG defined Namespace. */ 00160 #define BLE_GATT_CPF_NAMESPACE_DESCRIPTION_UNKNOWN 0x0000 /**< Namespace Description Unknown. */ 00161 /** @} */ 00162 00163 /** @} */ 00164 00165 /** @addtogroup BLE_GATT_STRUCTURES Structures 00166 * @{ */ 00167 00168 /**@brief GATT Characteristic Properties. */ 00169 typedef struct 00170 { 00171 /* Standard properties */ 00172 uint8_t broadcast :1; /**< Broadcasting of the value permitted. */ 00173 uint8_t read :1; /**< Reading the value permitted. */ 00174 uint8_t write_wo_resp :1; /**< Writing the value with Write Command permitted. */ 00175 uint8_t write :1; /**< Writing the value with Write Request permitted. */ 00176 uint8_t notify :1; /**< Notications of the value permitted. */ 00177 uint8_t indicate :1; /**< Indications of the value permitted. */ 00178 uint8_t auth_signed_wr :1; /**< Writing the value with Signed Write Command permitted. */ 00179 } ble_gatt_char_props_t; 00180 00181 /**@brief GATT Characteristic Extended Properties. */ 00182 typedef struct 00183 { 00184 /* Extended properties */ 00185 uint8_t reliable_wr :1; /**< Writing the value with Queued Write operations permitted. */ 00186 uint8_t wr_aux :1; /**< Writing the Characteristic User Description descriptor permitted. */ 00187 } ble_gatt_char_ext_props_t; 00188 00189 #endif // BLE_GATT_H__ 00190 00191 /** @} */ 00192 00193 /** 00194 @} 00195 @} 00196 */
Generated on Tue Jul 12 2022 14:11:18 by
