Devchannel Team / X_NUCLEO_IDB0XA1

Dependents:   Hello_BLE F446RE-BLE

Fork of X_NUCLEO_IDB0XA1 by ST

Committer:
Silvio Lucio Oliva
Date:
Mon Jun 08 17:08:01 2015 +0200
Revision:
70:d20d30f59b1c
Initial commit for mbed support

Signed-off-by: Silvio Lucio Oliva <silvio.oliva@st.com>

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Silvio Lucio Oliva 70:d20d30f59b1c 1 /******************** (C) COPYRIGHT 2012 STMicroelectronics ********************
Silvio Lucio Oliva 70:d20d30f59b1c 2 * File Name : bluenrg_gatt_server.h
Silvio Lucio Oliva 70:d20d30f59b1c 3 * Author : AMS - HEA&RF BU
Silvio Lucio Oliva 70:d20d30f59b1c 4 * Version : V1.0.0
Silvio Lucio Oliva 70:d20d30f59b1c 5 * Date : 19-July-2012
Silvio Lucio Oliva 70:d20d30f59b1c 6 * Description : Header file for BlueNRG's GATT server layer.
Silvio Lucio Oliva 70:d20d30f59b1c 7 ********************************************************************************
Silvio Lucio Oliva 70:d20d30f59b1c 8 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
Silvio Lucio Oliva 70:d20d30f59b1c 9 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
Silvio Lucio Oliva 70:d20d30f59b1c 10 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
Silvio Lucio Oliva 70:d20d30f59b1c 11 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
Silvio Lucio Oliva 70:d20d30f59b1c 12 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
Silvio Lucio Oliva 70:d20d30f59b1c 13 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
Silvio Lucio Oliva 70:d20d30f59b1c 14 *******************************************************************************/
Silvio Lucio Oliva 70:d20d30f59b1c 15
Silvio Lucio Oliva 70:d20d30f59b1c 16 #ifndef __BNRG_GATT_SERVER_H__
Silvio Lucio Oliva 70:d20d30f59b1c 17 #define __BNRG_GATT_SERVER_H__
Silvio Lucio Oliva 70:d20d30f59b1c 18
Silvio Lucio Oliva 70:d20d30f59b1c 19 #include "compiler.h"
Silvio Lucio Oliva 70:d20d30f59b1c 20 #include "ble_status.h"
Silvio Lucio Oliva 70:d20d30f59b1c 21
Silvio Lucio Oliva 70:d20d30f59b1c 22 /**
Silvio Lucio Oliva 70:d20d30f59b1c 23 *@addtogroup GATT GATT
Silvio Lucio Oliva 70:d20d30f59b1c 24 *@{
Silvio Lucio Oliva 70:d20d30f59b1c 25 */
Silvio Lucio Oliva 70:d20d30f59b1c 26
Silvio Lucio Oliva 70:d20d30f59b1c 27 /**
Silvio Lucio Oliva 70:d20d30f59b1c 28 * @anchor Well-Known_UUIDs
Silvio Lucio Oliva 70:d20d30f59b1c 29 * @name Well-Known UUIDs
Silvio Lucio Oliva 70:d20d30f59b1c 30 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 31 */
Silvio Lucio Oliva 70:d20d30f59b1c 32 #define PRIMARY_SERVICE_UUID (0x2800)
Silvio Lucio Oliva 70:d20d30f59b1c 33 #define SECONDARY_SERVICE_UUID (0x2801)
Silvio Lucio Oliva 70:d20d30f59b1c 34 #define INCLUDE_SERVICE_UUID (0x2802)
Silvio Lucio Oliva 70:d20d30f59b1c 35 #define CHARACTERISTIC_UUID (0x2803)
Silvio Lucio Oliva 70:d20d30f59b1c 36 #define CHAR_EXTENDED_PROP_DESC_UUID (0x2900)
Silvio Lucio Oliva 70:d20d30f59b1c 37 #define CHAR_USER_DESC_UUID (0x2901)
Silvio Lucio Oliva 70:d20d30f59b1c 38 #define CHAR_CLIENT_CONFIG_DESC_UUID (0x2902)
Silvio Lucio Oliva 70:d20d30f59b1c 39 #define CHAR_SERVER_CONFIG_DESC_UUID (0x2903)
Silvio Lucio Oliva 70:d20d30f59b1c 40 #define CHAR_FORMAT_DESC_UUID (0x2904)
Silvio Lucio Oliva 70:d20d30f59b1c 41 #define CHAR_AGGR_FMT_DESC_UUID (0x2905)
Silvio Lucio Oliva 70:d20d30f59b1c 42 #define GATT_SERVICE_UUID (0x1801)
Silvio Lucio Oliva 70:d20d30f59b1c 43 #define GAP_SERVICE_UUID (0x1800)
Silvio Lucio Oliva 70:d20d30f59b1c 44 #define SERVICE_CHANGED_UUID (0x2A05)
Silvio Lucio Oliva 70:d20d30f59b1c 45 /**
Silvio Lucio Oliva 70:d20d30f59b1c 46 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 47 */
Silvio Lucio Oliva 70:d20d30f59b1c 48
Silvio Lucio Oliva 70:d20d30f59b1c 49 /**
Silvio Lucio Oliva 70:d20d30f59b1c 50 * @anchor Access_permissions
Silvio Lucio Oliva 70:d20d30f59b1c 51 * @name Access permissions
Silvio Lucio Oliva 70:d20d30f59b1c 52 * Access permissions for an attribute
Silvio Lucio Oliva 70:d20d30f59b1c 53 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 54 */
Silvio Lucio Oliva 70:d20d30f59b1c 55 #define ATTR_NO_ACCESS (0x00)
Silvio Lucio Oliva 70:d20d30f59b1c 56 #define ATTR_ACCESS_READ_ONLY (0x01)
Silvio Lucio Oliva 70:d20d30f59b1c 57 #define ATTR_ACCESS_WRITE_REQ_ONLY (0x02)
Silvio Lucio Oliva 70:d20d30f59b1c 58 #define ATTR_ACCESS_READ_WRITE (0x03)
Silvio Lucio Oliva 70:d20d30f59b1c 59 #define ATTR_ACCESS_WRITE_WITHOUT_RESPONSE (0x04)
Silvio Lucio Oliva 70:d20d30f59b1c 60 #define ATTR_ACCESS_SIGNED_WRITE_ALLOWED (0x08)
Silvio Lucio Oliva 70:d20d30f59b1c 61 /**
Silvio Lucio Oliva 70:d20d30f59b1c 62 * Allows all write procedures
Silvio Lucio Oliva 70:d20d30f59b1c 63 */
Silvio Lucio Oliva 70:d20d30f59b1c 64 #define ATTR_ACCESS_WRITE_ANY (0x0E)
Silvio Lucio Oliva 70:d20d30f59b1c 65 /**
Silvio Lucio Oliva 70:d20d30f59b1c 66 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 67 */
Silvio Lucio Oliva 70:d20d30f59b1c 68
Silvio Lucio Oliva 70:d20d30f59b1c 69 /**
Silvio Lucio Oliva 70:d20d30f59b1c 70 * @anchor Char_properties
Silvio Lucio Oliva 70:d20d30f59b1c 71 * @name Characteristic properties.
Silvio Lucio Oliva 70:d20d30f59b1c 72 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 73 */
Silvio Lucio Oliva 70:d20d30f59b1c 74 #define CHAR_PROP_BROADCAST (0x01)
Silvio Lucio Oliva 70:d20d30f59b1c 75 #define CHAR_PROP_READ (0x02)
Silvio Lucio Oliva 70:d20d30f59b1c 76 #define CHAR_PROP_WRITE_WITHOUT_RESP (0x04)
Silvio Lucio Oliva 70:d20d30f59b1c 77 #define CHAR_PROP_WRITE (0x08)
Silvio Lucio Oliva 70:d20d30f59b1c 78 #define CHAR_PROP_NOTIFY (0x10)
Silvio Lucio Oliva 70:d20d30f59b1c 79 #define CHAR_PROP_INDICATE (0x20)
Silvio Lucio Oliva 70:d20d30f59b1c 80 #define CHAR_PROP_SIGNED_WRITE (0x40)
Silvio Lucio Oliva 70:d20d30f59b1c 81 #define CHAR_PROP_EXT (0x80)
Silvio Lucio Oliva 70:d20d30f59b1c 82 /**
Silvio Lucio Oliva 70:d20d30f59b1c 83 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 84 */
Silvio Lucio Oliva 70:d20d30f59b1c 85
Silvio Lucio Oliva 70:d20d30f59b1c 86
Silvio Lucio Oliva 70:d20d30f59b1c 87 /**
Silvio Lucio Oliva 70:d20d30f59b1c 88 * @anchor Security_permissions
Silvio Lucio Oliva 70:d20d30f59b1c 89 * @name Security permissions for an attribute.
Silvio Lucio Oliva 70:d20d30f59b1c 90 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 91 */
Silvio Lucio Oliva 70:d20d30f59b1c 92 #define ATTR_PERMISSION_NONE (0x00) /**< No security. */
Silvio Lucio Oliva 70:d20d30f59b1c 93 #define ATTR_PERMISSION_AUTHEN_READ (0x01) /**< Need authentication to read */
Silvio Lucio Oliva 70:d20d30f59b1c 94 #define ATTR_PERMISSION_AUTHOR_READ (0x02) /**< Need authorization to read */
Silvio Lucio Oliva 70:d20d30f59b1c 95 #define ATTR_PERMISSION_ENCRY_READ (0x04) /**< Link must be encrypted to read */
Silvio Lucio Oliva 70:d20d30f59b1c 96 #define ATTR_PERMISSION_AUTHEN_WRITE (0x08) /**< Need authentication to write */
Silvio Lucio Oliva 70:d20d30f59b1c 97 #define ATTR_PERMISSION_AUTHOR_WRITE (0x10) /**< Need authorization to write */
Silvio Lucio Oliva 70:d20d30f59b1c 98 #define ATTR_PERMISSION_ENCRY_WRITE (0x20) /**< Link must be encrypted for write */
Silvio Lucio Oliva 70:d20d30f59b1c 99 /**
Silvio Lucio Oliva 70:d20d30f59b1c 100 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 101 */
Silvio Lucio Oliva 70:d20d30f59b1c 102
Silvio Lucio Oliva 70:d20d30f59b1c 103 /**
Silvio Lucio Oliva 70:d20d30f59b1c 104 * @anchor UUID_Types
Silvio Lucio Oliva 70:d20d30f59b1c 105 * @name Type of UUID (16 bit or 128 bit).
Silvio Lucio Oliva 70:d20d30f59b1c 106 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 107 */
Silvio Lucio Oliva 70:d20d30f59b1c 108 #define UUID_TYPE_16 (0x01)
Silvio Lucio Oliva 70:d20d30f59b1c 109 #define UUID_TYPE_128 (0x02)
Silvio Lucio Oliva 70:d20d30f59b1c 110 /**
Silvio Lucio Oliva 70:d20d30f59b1c 111 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 112 */
Silvio Lucio Oliva 70:d20d30f59b1c 113
Silvio Lucio Oliva 70:d20d30f59b1c 114 /**
Silvio Lucio Oliva 70:d20d30f59b1c 115 * @anchor Service_type
Silvio Lucio Oliva 70:d20d30f59b1c 116 * @name Type of service (primary or secondary)
Silvio Lucio Oliva 70:d20d30f59b1c 117 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 118 */
Silvio Lucio Oliva 70:d20d30f59b1c 119 #define PRIMARY_SERVICE (0x01)
Silvio Lucio Oliva 70:d20d30f59b1c 120 #define SECONDARY_SERVICE (0x02)
Silvio Lucio Oliva 70:d20d30f59b1c 121 /**
Silvio Lucio Oliva 70:d20d30f59b1c 122 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 123 */
Silvio Lucio Oliva 70:d20d30f59b1c 124
Silvio Lucio Oliva 70:d20d30f59b1c 125 /**
Silvio Lucio Oliva 70:d20d30f59b1c 126 * @anchor Gatt_Event_Mask
Silvio Lucio Oliva 70:d20d30f59b1c 127 * @name Gatt Event Mask
Silvio Lucio Oliva 70:d20d30f59b1c 128 * Type of event generated by GATT server
Silvio Lucio Oliva 70:d20d30f59b1c 129 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 130 */
Silvio Lucio Oliva 70:d20d30f59b1c 131 #define GATT_DONT_NOTIFY_EVENTS (0x00) /**< Do not notify events. */
Silvio Lucio Oliva 70:d20d30f59b1c 132 #define GATT_NOTIFY_ATTRIBUTE_WRITE (0x01) /**< The application will be notified when a client writes to this attribute.
Silvio Lucio Oliva 70:d20d30f59b1c 133 An @ref EVT_BLUE_GATT_ATTRIBUTE_MODIFIED will be issued. */
Silvio Lucio Oliva 70:d20d30f59b1c 134 #define GATT_NOTIFY_WRITE_REQ_AND_WAIT_FOR_APPL_RESP (0x02) /**< The application will be notified when a write request, a write cmd
Silvio Lucio Oliva 70:d20d30f59b1c 135 or a signed write cmd are received by the server for this attribute.
Silvio Lucio Oliva 70:d20d30f59b1c 136 An @ref EVT_BLUE_GATT_WRITE_PERMIT_REQ will be issued. */
Silvio Lucio Oliva 70:d20d30f59b1c 137 #define GATT_NOTIFY_READ_REQ_AND_WAIT_FOR_APPL_RESP (0x04) /**< The application will be notified when a read request of any type is
Silvio Lucio Oliva 70:d20d30f59b1c 138 received for this attribute. An @ref EVT_BLUE_GATT_READ_PERMIT_REQ will be issued. */
Silvio Lucio Oliva 70:d20d30f59b1c 139 /**
Silvio Lucio Oliva 70:d20d30f59b1c 140 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 141 */
Silvio Lucio Oliva 70:d20d30f59b1c 142
Silvio Lucio Oliva 70:d20d30f59b1c 143 /**
Silvio Lucio Oliva 70:d20d30f59b1c 144 * @name Type of characteristic length
Silvio Lucio Oliva 70:d20d30f59b1c 145 * See aci_gatt_add_char()
Silvio Lucio Oliva 70:d20d30f59b1c 146 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 147 */
Silvio Lucio Oliva 70:d20d30f59b1c 148 #define CHAR_VALUE_LEN_CONSTANT (0x00)
Silvio Lucio Oliva 70:d20d30f59b1c 149 #define CHAR_VALUE_LEN_VARIABLE (0x01)
Silvio Lucio Oliva 70:d20d30f59b1c 150 /**
Silvio Lucio Oliva 70:d20d30f59b1c 151 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 152 */
Silvio Lucio Oliva 70:d20d30f59b1c 153
Silvio Lucio Oliva 70:d20d30f59b1c 154
Silvio Lucio Oliva 70:d20d30f59b1c 155 /**
Silvio Lucio Oliva 70:d20d30f59b1c 156 * @name Encryption key size
Silvio Lucio Oliva 70:d20d30f59b1c 157 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 158 */
Silvio Lucio Oliva 70:d20d30f59b1c 159 /**
Silvio Lucio Oliva 70:d20d30f59b1c 160 * Minimum encryption key size
Silvio Lucio Oliva 70:d20d30f59b1c 161 */
Silvio Lucio Oliva 70:d20d30f59b1c 162 #define MIN_ENCRY_KEY_SIZE (7)
Silvio Lucio Oliva 70:d20d30f59b1c 163
Silvio Lucio Oliva 70:d20d30f59b1c 164 /**
Silvio Lucio Oliva 70:d20d30f59b1c 165 * Maximum encryption key size
Silvio Lucio Oliva 70:d20d30f59b1c 166 */
Silvio Lucio Oliva 70:d20d30f59b1c 167 #define MAX_ENCRY_KEY_SIZE (0x10)
Silvio Lucio Oliva 70:d20d30f59b1c 168 /**
Silvio Lucio Oliva 70:d20d30f59b1c 169 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 170 */
Silvio Lucio Oliva 70:d20d30f59b1c 171
Silvio Lucio Oliva 70:d20d30f59b1c 172 /**
Silvio Lucio Oliva 70:d20d30f59b1c 173 * @name Characteristic Presentation Format
Silvio Lucio Oliva 70:d20d30f59b1c 174 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 175 */
Silvio Lucio Oliva 70:d20d30f59b1c 176 typedef __packed struct _charactFormat {
Silvio Lucio Oliva 70:d20d30f59b1c 177 uint8_t format;
Silvio Lucio Oliva 70:d20d30f59b1c 178 int8_t exp;
Silvio Lucio Oliva 70:d20d30f59b1c 179 uint16_t unit;
Silvio Lucio Oliva 70:d20d30f59b1c 180 uint8_t name_space;
Silvio Lucio Oliva 70:d20d30f59b1c 181 uint16_t desc;
Silvio Lucio Oliva 70:d20d30f59b1c 182 } PACKED charactFormat;
Silvio Lucio Oliva 70:d20d30f59b1c 183
Silvio Lucio Oliva 70:d20d30f59b1c 184 /**
Silvio Lucio Oliva 70:d20d30f59b1c 185 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 186 */
Silvio Lucio Oliva 70:d20d30f59b1c 187
Silvio Lucio Oliva 70:d20d30f59b1c 188 /**
Silvio Lucio Oliva 70:d20d30f59b1c 189 * @name Format
Silvio Lucio Oliva 70:d20d30f59b1c 190 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 191 */
Silvio Lucio Oliva 70:d20d30f59b1c 192 #define FORMAT_UINT8 0x04
Silvio Lucio Oliva 70:d20d30f59b1c 193 #define FORMAT_UINT16 0x06
Silvio Lucio Oliva 70:d20d30f59b1c 194 #define FORMAT_SINT16 0x0E
Silvio Lucio Oliva 70:d20d30f59b1c 195 #define FORMAT_SINT24 0x0F
Silvio Lucio Oliva 70:d20d30f59b1c 196 /**
Silvio Lucio Oliva 70:d20d30f59b1c 197 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 198 */
Silvio Lucio Oliva 70:d20d30f59b1c 199
Silvio Lucio Oliva 70:d20d30f59b1c 200 /**
Silvio Lucio Oliva 70:d20d30f59b1c 201 * @name Unit
Silvio Lucio Oliva 70:d20d30f59b1c 202 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 203 */
Silvio Lucio Oliva 70:d20d30f59b1c 204 #define UNIT_UNITLESS 0x2700
Silvio Lucio Oliva 70:d20d30f59b1c 205 #define UNIT_TEMP_CELSIUS 0x272F
Silvio Lucio Oliva 70:d20d30f59b1c 206 #define UNIT_PRESSURE_BAR 0x2780
Silvio Lucio Oliva 70:d20d30f59b1c 207 /**
Silvio Lucio Oliva 70:d20d30f59b1c 208 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 209 */
Silvio Lucio Oliva 70:d20d30f59b1c 210
Silvio Lucio Oliva 70:d20d30f59b1c 211
Silvio Lucio Oliva 70:d20d30f59b1c 212 /**
Silvio Lucio Oliva 70:d20d30f59b1c 213 * ATT MTU size
Silvio Lucio Oliva 70:d20d30f59b1c 214 */
Silvio Lucio Oliva 70:d20d30f59b1c 215 #define ATT_MTU (23)
Silvio Lucio Oliva 70:d20d30f59b1c 216
Silvio Lucio Oliva 70:d20d30f59b1c 217 /**
Silvio Lucio Oliva 70:d20d30f59b1c 218 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 219 */
Silvio Lucio Oliva 70:d20d30f59b1c 220
Silvio Lucio Oliva 70:d20d30f59b1c 221
Silvio Lucio Oliva 70:d20d30f59b1c 222
Silvio Lucio Oliva 70:d20d30f59b1c 223 #endif /* __BNRG_GATT_SERVER_H__ */