1 /*
2  * Copyright 2019-2023, Cypress Semiconductor Corporation or
3  * an affiliate of Cypress Semiconductor Corporation.  All rights reserved.
4  *
5  * This software, including source code, documentation and related
6  * materials ("Software") is owned by Cypress Semiconductor Corporation
7  * or one of its affiliates ("Cypress") and is protected by and subject to
8  * worldwide patent protection (United States and foreign),
9  * United States copyright laws and international treaty provisions.
10  * Therefore, you may use this Software only as provided in the license
11  * agreement accompanying the software package from which you
12  * obtained this Software ("EULA").
13  * If no EULA applies, Cypress hereby grants you a personal, non-exclusive,
14  * non-transferable license to copy, modify, and compile the Software
15  * source code solely for use in connection with Cypress's
16  * integrated circuit products.  Any reproduction, modification, translation,
17  * compilation, or representation of this Software except as specified
18  * above is prohibited without the express written permission of Cypress.
19  *
20  * Disclaimer: THIS SOFTWARE IS PROVIDED AS-IS, WITH NO WARRANTY OF ANY KIND,
21  * EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT, IMPLIED
22  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress
23  * reserves the right to make changes to the Software without notice. Cypress
24  * does not assume any liability arising out of the application or use of the
25  * Software or any product or circuit described in the Software. Cypress does
26  * not authorize its products for use in any products where a malfunction or
27  * failure of the Cypress product may reasonably be expected to result in
28  * significant property damage, injury or death ("High Risk Product"). By
29  * including Cypress's product in a High Risk Product, the manufacturer
30  * of such system or application assumes all risk of such use and in doing
31  * so agrees to indemnify Cypress against all liability.
32  */
33 
34 /** @file
35  *
36  *  WICED Generic Attribute (GATT) Application Programming Interface definitions
37  */
38 
39 #ifndef  _GATTDEFS_H
40 #define  _GATTDEFS_H
41 
42 #define GATT_ILLEGAL_UUID            0
43 
44 /* GATT attribute types
45 */
46 #define GATT_UUID_PRI_SERVICE           0x2800
47 #define GATT_UUID_SEC_SERVICE           0x2801
48 #define GATT_UUID_INCLUDE_SERVICE       0x2802
49 #define GATT_UUID_CHAR_DECLARE          0x2803      /*  Characteristic Declaration*/
50 
51 #define GATT_UUID_CHAR_EXT_PROP         0x2900      /*	Characteristic Extended Properties */
52 #define GATT_UUID_CHAR_DESCRIPTION      0x2901      /*  Characteristic User Description*/
53 #define GATT_UUID_CHAR_CLIENT_CONFIG    0x2902      /*  Client Characteristic Configuration */
54 #define GATT_UUID_CHAR_SRVR_CONFIG      0x2903      /*  Server Characteristic Configuration */
55 #define GATT_UUID_CHAR_PRESENT_FORMAT   0x2904      /*  Characteristic Presentation Format*/
56 #define GATT_UUID_CHAR_AGG_FORMAT       0x2905      /*  Characteristic Aggregate Format*/
57 #define GATT_UUID_CHAR_VALID_RANGE      0x2906      /*  Characteristic Valid Range */
58 #define GATT_UUID_EXT_RPT_REF_DESCR     0x2907
59 #define GATT_UUID_RPT_REF_DESCR         0x2908
60 
61 #define GATT_UUID_CLIENT_SUPPORTED_FEATURES 0x2B29   /* Client supported features */
62 #define GATT_UUID_GATT_DATABASE_HASH	    0x2B2A   /* GATT Robust caching */
63 #define GATT_UUID_SERVER_SUPPORTED_FEATURES 0x2B3A   /* Server supported features */
64 
65 /* GAP Profile Attributes
66 */
67 #define GATT_UUID_GAP_DEVICE_NAME        UUID_CHARACTERISTIC_DEVICE_NAME
68 #define GATT_UUID_GAP_ICON               UUID_CHARACTERISTIC_APPEARANCE
69 #define GATT_UUID_GAP_PREF_CONN_PARAM    UUID_CHARACTERISTIC_PERIPHERAL_PREFERRED_CONNECTION_PARAMETERS
70 #define GATT_UUID_GAP_CENTRAL_ADDR_RESOL UUID_CHARACTERISTIC_CENTRAL_ADDRESS_RESOLUTION
71 #define GATT_UUID_GAP_RPA_ONLY           UUID_CHARACTERISTIC_RPA_ONLY
72 
73 /* Attribute Profile Attribute UUID */
74 #define GATT_UUID_GATT_SRV_CHGD          UUID_CHARACTERISTIC_SERVICE_CHANGED
75 /* Attribute Protocol Test */
76 
77 /* Link Loss Service */
78 #define GATT_UUID_ALERT_LEVEL            UUID_CHARACTERISTIC_ALERT_LEVEL /* Alert Level */
79 #define GATT_UUID_TX_POWER_LEVEL         UUID_CHARACTERISTIC_TX_POWER_LEVEL /* TX power level */
80 
81 /* Time Profile */
82 /* Current Time Service */
83 #define GATT_UUID_CURRENT_TIME           UUID_CHARACTERISTIC_CURRENT_TIME /* Current Time */
84 #define GATT_UUID_LOCAL_TIME_INFO        UUID_CHARACTERISTIC_LOCAL_TIME_INFORMATION /* Local time info */
85 #define GATT_UUID_REF_TIME_INFO          UUID_CHARACTERISTIC_REFERENCE_TIME_INFORMATION /* reference time information */
86 
87 /* phone alert */
88 #define GATT_UUID_ALERT_STATUS           UUID_CHARACTERISTIC_ALERT_STATUS /* alert status */
89 #define GATT_UUID_RINGER_CP              UUID_CHARACTERISTIC_RINGER_CONTROL_POINT /* ringer control point */
90 #define GATT_UUID_RINGER_SETTING         UUID_CHARACTERISTIC_RINGER_SETTING      /* ringer setting */
91 
92 /* Glucose Service */
93 #define GATT_UUID_GM_MEASUREMENT         UUID_CHARACTERISTIC_GLUCOSE_MEASUREMENT
94 #define GATT_UUID_GM_CONTEXT             UUID_CHARACTERISTIC_GLUCOSE_MEASUREMENT_CONTEXT
95 #define GATT_UUID_GM_CONTROL_POINT       UUID_CHARACTERISTIC_RECORD_ACCESS_CONTROL_POINT
96 #define GATT_UUID_GM_FEATURE             UUID_CHARACTERISTIC_GLUCOSE_FEATURES
97 
98 /* device infor characteristic */
99 #define GATT_UUID_SYSTEM_ID              UUID_CHARACTERISTIC_SYSTEM_ID
100 #define GATT_UUID_MODEL_NUMBER_STR       UUID_CHARACTERISTIC_MODEL_NUMBER_STRING
101 #define GATT_UUID_SERIAL_NUMBER_STR      UUID_CHARACTERISTIC_SERIAL_NUMBER_STRING
102 #define GATT_UUID_FW_VERSION_STR         UUID_CHARACTERISTIC_FIRMWARE_REVISION_STRING
103 #define GATT_UUID_HW_VERSION_STR         UUID_CHARACTERISTIC_HARDWARE_REVISION_STRING
104 #define GATT_UUID_SW_VERSION_STR         UUID_CHARACTERISTIC_SOFTWARE_REVISION_STRING
105 #define GATT_UUID_MANU_NAME              UUID_CHARACTERISTIC_MANUFACTURER_NAME_STRING
106 #define GATT_UUID_IEEE_DATA              UUID_CHARACTERISTIC_IEEE_11073_20601_REGULATORY_CERTIFICATION_DATA_LIST
107 #define GATT_UUID_PNP_ID                 UUID_CHARACTERISTIC_PNP_ID
108 
109 /* HID characteristics */
110 #define GATT_UUID_HID_INFORMATION        UUID_CHARACTERISTIC_HID_INFORMATION
111 #define GATT_UUID_HID_REPORT_MAP         UUID_CHARACTERISTIC_HID_REPORT_MAP
112 #define GATT_UUID_HID_CONTROL_POINT      UUID_CHARACTERISTIC_HID_CONTROL_POINT
113 #define GATT_UUID_HID_REPORT             UUID_CHARACTERISTIC_HID_REPORT
114 #define GATT_UUID_HID_PROTO_MODE         UUID_CHARACTERISTIC_HID_PROTOCOL_MODE
115 #define GATT_UUID_HID_BT_KB_INPUT        UUID_CHARACTERISTIC_BOOT_KEYBOARD_INPUT_REPORT
116 #define GATT_UUID_HID_BT_KB_OUTPUT       UUID_CHARACTERISTIC_BOOT_KEYBOARD_OUTPUT_REPORT
117 #define GATT_UUID_HID_BT_MOUSE_INPUT     UUID_CHARACTERISTIC_BOOT_MOUSE_INPUT_REPORT
118 
119 /* Battery Service char */
120 #define GATT_UUID_BATTERY_LEVEL          UUID_CHARACTERISTIC_BATTERY_LEVEL
121 
122 #define GATT_UUID_SC_CONTROL_POINT       UUID_CHARACTERISTIC_SC_CONTROL_POINT
123 #define GATT_UUID_SENSOR_LOCATION        UUID_CHARACTERISTIC_SENSOR_LOCATION
124 
125 /* RUNNERS SPEED AND CADENCE SERVICE      */
126 #define GATT_UUID_RSC_MEASUREMENT        UUID_CHARACTERISTIC_RSC_MEASUREMENT
127 #define GATT_UUID_RSC_FEATURE            UUID_CHARACTERISTIC_RSC_FEATURE
128 
129 /* CYCLING SPEED AND CADENCE SERVICE      */
130 #define GATT_UUID_CSC_MEASUREMENT        UUID_CHARACTERISTIC_CSC_MEASUREMENT
131 #define GATT_UUID_CSC_FEATURE            UUID_CHARACTERISTIC_CSC_FEATURE
132 
133 /* CYCLING POWER SERVICE  (Temp for IOP)    */
134 #define GATT_UUID_CP_MEASUREMENT         UUID_CHARACTERISTIC_CYCLING_POWER_MEASUREMENT
135 #define GATT_UUID_CP_VECTOR              UUID_CHARACTERISTIC_CYCLING_POWER_VECTOR
136 #define GATT_UUID_CP_FEATURE             UUID_CHARACTERISTIC_CYCLING_POWER_FEATURE
137 #define GATT_UUID_CP_CONTROL_POINT       UUID_CHARACTERISTIC_CYCLING_POWER_CONTROL_POINT
138 
139 /* LOCATION AND NAVIGATION SERVICE  (Temp for IOP)    */
140 #define GATT_UUID_LN_LOC_AND_SPEED       UUID_CHARACTERISTIC_LOCATION_AND_SPEED
141 #define GATT_UUID_LN_NAVIGATION          UUID_CHARACTERISTIC_NAVIGATION
142 #define GATT_UUID_LN_POSITION_QUALITY    UUID_CHARACTERISTIC_POSITION_QUALITY
143 #define GATT_UUID_LN_FEATURE             UUID_CHARACTERISTIC_LN_FEATURE
144 #define GATT_UUID_LN_CONTROL_POINT       UUID_CHARACTERISTIC_LN_CONTROL_POINT
145 
146 
147 /* HTTP Proxy Service */
148 #define GATT_UUID_HPS_URI                0x7F11
149 #define GATT_UUID_HPS_HEADERS            0x7F12
150 #define GATT_UUID_HPS_STATUS_CODE        0x7F13
151 #define GATT_UUID_HPS_ENTITY_BODY        0x7F14
152 #define GATT_UUID_HPS_CONTROL_POINT      0x7F15
153 #define GATT_UUID_HPS_SERCURITY          0x7F16
154 
155 
156 /* Scan Parameter charatceristics */
157 #define GATT_UUID_SCAN_INT_WINDOW        UUID_CHARACTERISTIC_SCAN_INTERVAL_WINDOW
158 #define GATT_UUID_SCAN_REFRESH           UUID_CHARACTERISTIC_SCAN_REFRESH
159 
160 
161 /**
162  * GATT appearance definitions
163  *
164  * @ingroup wicedbt_gatt
165  *
166  */
167 enum gatt_appearance_e
168 {
169     APPEARANCE_GENERIC_PHONE                    = 64,
170     APPEARANCE_GENERIC_COMPUTER                 = 128,
171     APPEARANCE_GENERIC_WATCH                    = 192,
172     APPEARANCE_WATCH_SPORTS                     = 193,
173     APPEARANCE_GENERIC_CLOCK                    = 256,
174     APPEARANCE_GENERIC_DISPLAY                  = 320,
175     APPEARANCE_GENERIC_REMOTE_CONTROL           = 384,
176     APPEARANCE_GENERIC_EYE_GLASSES              = 448,
177     APPEARANCE_GENERIC_TAG                      = 512,
178     APPEARANCE_GENERIC_KEYRING                  = 576,
179     APPEARANCE_GENERIC_MEDIA_PLAYER             = 640,
180     APPEARANCE_GENERIC_BARCODE_SCANNER          = 704,
181     APPEARANCE_GENERIC_THERMOMETER              = 768,
182     APPEARANCE_THERMOMETER_EAR                  = 769,
183     APPEARANCE_GENERIC_HEART_RATE_SENSOR        = 832,
184     APPEARANCE_HEART_RATE_BELT                  = 833,
185     APPEARANCE_GENERIC_BLOOD_PRESSURE           = 896,
186     APPEARANCE_BLOOD_PRESSURE_ARM               = 897,
187     APPEARANCE_BLOOD_PRESSURE_WRIST             = 898,
188     APPEARANCE_GENERIC_HID_DEVICE               = 960,
189     APPEARANCE_HID_KEYBOARD                     = 961,
190     APPEARANCE_HID_MOUSE                        = 962,
191     APPEARANCE_HID_JOYSTICK                     = 963,
192     APPEARANCE_HID_GAMEPAD                      = 964,
193     APPEARANCE_HID_DIGITIZER_TABLET             = 965,
194     APPEARANCE_HID_CARD_READER                  = 966,
195     APPEARANCE_HID_DIGITAL_PEN                  = 967,
196     APPEARANCE_HID_BARCODE_SCANNER              = 968,
197     APPEARANCE_GENERIC_GLUCOSE_METER            = 1024,
198     APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR   = 1088,
199     APPEARANCE_RUNNING_WALKING_SENSOR_IN_SHOE   = 1089,
200     APPEARANCE_RUNNING_WALKING_SENSOR_ON_SHOE   = 1090,
201     APPEARANCE_RUNNING_WALKING_SENSOR_ON_HIP    = 1091,
202     APPEARANCE_GENERIC_CYCLING                  = 1152,
203     APPEARANCE_CYCLING_COMPUTER                 = 1153,
204     APPEARANCE_CYCLING_SPEED_SENSOR             = 1154,
205     APPEARANCE_CYCLING_CADENCE_SENSOR           = 1155,
206     APPEARANCE_CYCLING_POWER_SENSOR             = 1156,
207     APPEARANCE_CYCLING_SPEED_AND_CADENCE_SENSOR = 1157,
208     APPEARANCE_CONTROL_DEVICE_SWITCH            = 1217, /// Switch Control Device subtype
209     APPEARANCE_CONTROL_DEVICE_MULTI_SWITCH      = 1218, /// Multi - switch
210     APPEARANCE_CONTROL_DEVICE_BUTTON            = 1219, /// Button
211     APPEARANCE_CONTROL_DEVICE_SLIDER            = 1220, /// Slider
212     APPEARANCE_CONTROL_DEVICE_ROTARY            = 1221, /// Rotary
213     APPEARANCE_CONTROL_DEVICE_TOUCH_PANEL       = 1222, /// Touch - panel
214     APPEARANCE_NETWORK_DEVICE                   = 1280, /// Generic Network Device Generic category
215     APPEARANCE_ACCESS_POINT                     = 1281, /// Access Point Generic Network subtype
216     APPEARANCE_SENSOR_GENERIC                   = 1344, /// Generic Sensor Generic category
217     APPEARANCE_SENSOR_MOTION                    = 1345, /// Motion Sensor
218     APPEARANCE_SENSOR_AIR_QUALITY               = 1346, /// Air Quality Sensor
219     APPEARANCE_SENSOR_TEMPERATURE               = 1347, /// Temperature Sensor
220     APPEARANCE_SENSOR_HUMIDITY                  = 1348, /// Humidity Sensor
221     APPEARANCE_SENSOR_LEAK                      = 1349, /// Leak Sensor
222     APPEARANCE_SENSOR_SMOKE                     = 1350, /// Smoke Sensor
223     APPEARANCE_SENSOR_OCCUPANCY                 = 1351, /// Occupancy Sensor
224     APPEARANCE_SENSOR_CONTACT                   = 1352, /// Contact Sensor
225     APPEARANCE_SENSOR_CARBON_MONOXIDE           = 1353, /// Carbon Monoxide Sensor
226     APPEARANCE_SENSOR_CARBON_DIOXIDE            = 1354, /// Carbon Dioxide Sensor
227     APPEARANCE_SENSOR_AMBIENT_LIGHT             = 1355, /// Ambient Light Sensor
228     APPEARANCE_SENSOR_ENERGY                    = 1356, /// Energy Sensor
229     APPEARANCE_SENSOR_COLOR_LIGHT               = 1357, /// Color Light Sensor
230     APPEARANCE_SENSOR_RAIN                      = 1358, /// Rain Sensor
231     APPEARANCE_SENSOR_FIRE                      = 1359, /// Fire SensorF
232     APPEARANCE_SENSOR_WIND                      = 1360, /// Wind Sensor
233     APPEARANCE_SENSOR_PROXYMITY                 = 1361, /// Proximity Sensor
234     APPEARANCE_SENSOR_MULTI_SENSOR              = 1362, /// Multi - Sensor
235     APPEARANCE_LIGHT_GENERIC_FIXTURE            = 1408, /// Generic Light Fixtures	Generic category
236     APPEARANCE_LIGHT_WALL                       = 1409, /// Wall Light
237     APPEARANCE_LIGHT_CEILING                    = 1410, /// Ceiling Light
238     APPEARANCE_LIGHT_FLOOR                      = 1411, /// Floor Light
239     APPEARANCE_LIGHT_CABINET                    = 1412, /// Cabinet Light
240     APPEARANCE_LIGHT_DESK                       = 1413, /// Desk Light
241     APPEARANCE_LIGHT_TROFFER                    = 1414, /// Troffer Light
242     APPEARANCE_LIGHT_PENDANT                    = 1415, /// Pendant Light
243     APPEARANCE_LIGHT_IN_GROUND                  = 1416, /// In - ground Light
244     APPEARANCE_LIGHT_FLOOD                      = 1417, /// Flood Light
245     APPEARANCE_LIGHT_UNDERWATER                 = 1418, /// Underwater Light
246     APPEARANCE_LIGHT_BOLLAR                     = 1419, /// Bollard with Light
247     APPEARANCE_LIGHT_PATHWAY                    = 1420, /// Pathway Light
248     APPEARANCE_LIGHT_GARDEN                     = 1421, /// Garden Light
249     APPEARANCE_LIGHT_POLE                       = 1422, /// Pole - top Light
250     APPEARANCE_LIGHT_SPOTLIGHT                  = 1423, /// Spotlight
251     APPEARANCE_LIGHT_LINEAR                     = 1424, /// Linear Light
252     APPEARANCE_LIGHT_STREET                     = 1425, /// Street Light
253     APPEARANCE_LIGHT_SHELVE                     = 1426, /// Shelves Light
254     APPEARANCE_LIGHT_HIGH_BAY_LOW_BAY           = 1427, /// High - bay / Low - bay Light
255     APPEARANCE_LIGHT_EMERGENCY_EXIT             = 1428, /// Emergency Exit Light
256     APPEARANCE_LOCATION_AND_NAVIGATION_POD      = 5188,
257 };
258 
259 #define IS_CHAR_DECLARATION_UUID(type)    ((type.len == 2) && (type.uu.uuid16 == GATT_UUID_CHAR_DECLARE))
260 #define IS_CHAR_CLIENT_CONFIG_UUID(type)  ((type.len == 2) && (type.uu.uuid16 == GATT_UUID_CHAR_CLIENT_CONFIG))
261 
262 #endif
263