my fork

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers gatt_server.h Source File

gatt_server.h

00001 /******************** (C) COPYRIGHT 2012 STMicroelectronics ********************
00002 * File Name          : gatt_server.h
00003 * Author             : AMS - HEA&RF BU
00004 * Version            : V1.0.0
00005 * Date               : 19-July-2012
00006 * Description        : Header file for BlueNRG's GATT server layer.
00007 ********************************************************************************
00008 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
00009 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
00010 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
00011 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
00012 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
00013 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
00014 *******************************************************************************/
00015 
00016 #ifndef __GATT_SERVER_H__
00017 #define __GATT_SERVER_H__
00018 
00019 #include "compiler.h"
00020 #include "ble_status.h"
00021 
00022 /**
00023  * @defgroup Well_known_UUIDs Well-Known UUIDs
00024  * @{
00025  */
00026 #define PRIMARY_SERVICE_UUID                       (0x2800)
00027 #define SECONDARY_SERVICE_UUID                     (0x2801)
00028 #define INCLUDE_SERVICE_UUID                       (0x2802)
00029 #define CHARACTERISTIC_UUID                        (0x2803)
00030 #define CHAR_EXTENDED_PROP_DESC_UUID               (0x2900)
00031 #define CHAR_USER_DESC_UUID                        (0x2901)
00032 #define CHAR_CLIENT_CONFIG_DESC_UUID               (0x2902)
00033 #define CHAR_SERVER_CONFIG_DESC_UUID               (0x2903)
00034 #define CHAR_FORMAT_DESC_UUID                      (0x2904)
00035 #define CHAR_AGGR_FMT_DESC_UUID                    (0x2905)
00036 #define GATT_SERVICE_UUID                          (0x1801)
00037 #define GAP_SERVICE_UUID                           (0x1800)
00038 #define SERVICE_CHANGED_UUID                       (0x2A05)
00039 /**
00040  * @}
00041  */
00042 
00043 /******************************************************************************
00044  * Types
00045  *****************************************************************************/
00046 
00047 /** 
00048  * @defgroup Access_permissions Access permissions
00049  * @brief Access permissions for an attribute
00050  * @{
00051  */
00052 #define ATTR_NO_ACCESS                             (0x00)
00053 #define ATTR_ACCESS_READ_ONLY                      (0x01) 
00054 #define ATTR_ACCESS_WRITE_REQ_ONLY                 (0x02)
00055 #define ATTR_ACCESS_READ_WRITE                     (0x03)
00056 #define ATTR_ACCESS_WRITE_WITHOUT_RESPONSE         (0x04)
00057 #define ATTR_ACCESS_SIGNED_WRITE_ALLOWED           (0x08)
00058 /**
00059  * @}
00060  */
00061 
00062 /**
00063  * Allows all write procedures
00064  */
00065 #define ATTR_ACCESS_WRITE_ANY                      (0x0E)
00066 
00067 /**
00068  * @defgroup Char_properties Characteristic properties.
00069  * @brief Characteristic properties.
00070  * @{
00071  */
00072 #define CHAR_PROP_BROADCAST                     (0x01)
00073 #define CHAR_PROP_READ                          (0x02)
00074 #define CHAR_PROP_WRITE_WITHOUT_RESP            (0x04)
00075 #define CHAR_PROP_WRITE                         (0x08)
00076 #define CHAR_PROP_NOTIFY                        (0x10)
00077 #define CHAR_PROP_INDICATE                      (0x20)
00078 #define CHAR_PROP_SIGNED_WRITE                  (0x40)
00079 #define CHAR_PROP_EXT                           (0x80)
00080 /**
00081  * @}
00082  */
00083 
00084 
00085 /** 
00086  * @defgroup Security_permissions Security permissions
00087  * @brief Security permissions for an attribute.
00088  * @{
00089  */
00090 #define ATTR_PERMISSION_NONE                       (0x00) /**< No security. */
00091 #define ATTR_PERMISSION_AUTHEN_READ                (0x01) /**< Need authentication to read */
00092 #define ATTR_PERMISSION_AUTHOR_READ                (0x02) /**< Need authorization to read */
00093 #define ATTR_PERMISSION_ENCRY_READ                 (0x04) /**< Link must be encrypted to read */
00094 #define ATTR_PERMISSION_AUTHEN_WRITE               (0x08) /**< Need authentication to write */
00095 #define ATTR_PERMISSION_AUTHOR_WRITE               (0x10) /**< Need authorization to write */
00096 #define ATTR_PERMISSION_ENCRY_WRITE                (0x20) /**< Link must be encrypted for write */
00097 /**
00098  * @}
00099  */
00100 
00101 /** 
00102  * @defgroup UUID_Types UUID type
00103  * @brief Type of UUID (16 bit or 128 bit).
00104  * @{
00105  */
00106 #define UUID_TYPE_16                               (0x01)
00107 #define UUID_TYPE_128                              (0x02)
00108 /**
00109  * @}
00110  */
00111 
00112 /**
00113  * @defgroup Service_type Type of service
00114  * @brief Type of service (primary or secondary)
00115  * @{
00116  */
00117 #define PRIMARY_SERVICE                            (0x01)
00118 #define SECONDARY_SERVICE                          (0x02)
00119 /**
00120  * @}
00121  */
00122 
00123 /** 
00124  * @defgroup Gatt_Event_Mask GATT Server event bit mask
00125  * @brief Type of event generated by GATT server
00126  * @{
00127  */
00128 #define GATT_DONT_NOTIFY_EVENTS                       (0x00) /**< Do not notify events. */
00129 #define GATT_NOTIFY_ATTRIBUTE_WRITE                   (0x01) /**< The application will be notified when a client writes to this attribute.
00130                                                                   An @ref EVT_BLUE_GATT_ATTRIBUTE_MODIFIED will be issued. */
00131 #define GATT_NOTIFY_WRITE_REQ_AND_WAIT_FOR_APPL_RESP  (0x02) /**< The application will be notified when a write request, a write cmd
00132                                                                     or a signed write cmd are received by the server for this attribute.
00133                                                                     An @ref EVT_BLUE_GATT_WRITE_PERMIT_REQ will be issued. */
00134 #define GATT_NOTIFY_READ_REQ_AND_WAIT_FOR_APPL_RESP   (0x04) /**< The application will be notified when a read request of any type is
00135                                                                   received for this attribute. An @ref EVT_BLUE_GATT_READ_PERMIT_REQ will be issued. */
00136 /**
00137  * @}
00138  */
00139 
00140 /** 
00141  * @defgroup Charac_len Characteristic length
00142  * @brief See aci_gatt_add_char()
00143  * @{
00144  */
00145 #define CHAR_VALUE_LEN_CONSTANT           (0x00)
00146 #define CHAR_VALUE_LEN_VARIABLE           (0x01)
00147 /**
00148  * @}
00149  */
00150 
00151 
00152 /**
00153  * Min encryption key size
00154  */
00155 #define MIN_ENCRY_KEY_SIZE                (7)
00156 
00157 /**
00158  * Max encryption key size
00159  */
00160 #define MAX_ENCRY_KEY_SIZE                (0x10)
00161 
00162 
00163 typedef __packed struct _charactFormat {
00164     uint8_t format;
00165     int8_t exp;
00166     uint16_t unit;
00167     uint8_t name_space;
00168     uint16_t desc;
00169 } PACKED charactFormat;
00170 
00171 #define FORMAT_UINT8         0x04
00172 #define FORMAT_UINT16        0x06
00173 #define FORMAT_SINT16        0x0E
00174 #define FORMAT_SINT24        0x0F
00175 
00176 
00177 #define UNIT_UNITLESS        0x2700
00178 #define UNIT_TEMP_CELSIUS    0x272F
00179 #define UNIT_PRESSURE_BAR    0x2780
00180 
00181 
00182 /*
00183  * Default MTU size
00184  */
00185 #define ATT_DEFAULT_MTU       (23)
00186 
00187 
00188 #endif /* __GATT_SERVER_H__ */
00189