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