TI BLE5-Stack API Documentation  1.00.01.04
gattservapp.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  Group: WCS, BTS
4  $Target Device: DEVICES $
5 
6  ******************************************************************************
7  $License: BSD3 2009 $
8  ******************************************************************************
9  $Release Name: PACKAGE NAME $
10  $Release Date: PACKAGE RELEASE DATE $
11  *****************************************************************************/
12 
24 #ifndef GATTSERVAPP_H
25 #define GATTSERVAPP_H
26 
27 #ifdef __cplusplus
28 extern "C"
29 {
30 #endif
31 
32 /*********************************************************************
33  * INCLUDES
34  */
35 #include "bcomdef.h"
36 #include "osal.h"
37 
38 /*********************************************************************
39  * CONSTANTS
40  */
41 
50 #define GATT_CLIENT_CHAR_CFG_UPDATED_EVENT 0x00
51 
52 
59 #define GATT_PROP_BCAST 0x01
60 #define GATT_PROP_READ 0x02
61 #define GATT_PROP_WRITE_NO_RSP 0x04
62 #define GATT_PROP_WRITE 0x08
63 #define GATT_PROP_NOTIFY 0x10
64 #define GATT_PROP_INDICATE 0x20
65 #define GATT_PROP_AUTHEN 0x40
66 #define GATT_PROP_EXTENDED 0x80
67 
68 
74 #define GATT_EXT_PROP_RELIABLE_WRITE 0x0001
75 #define GATT_EXT_PROP_WRITABLE_AUX 0x0002
76 
77 
83 #define GATT_CLIENT_CFG_NOTIFY 0x0001
84 #define GATT_CLIENT_CFG_INDICATE 0x0002
85 
86 
92 #define GATT_SERV_CFG_BCAST 0x0001
93 
94 
96 #define GATT_CFG_NO_OPERATION 0x0000
97 
98 
102 #define GATT_FORMAT_BOOL 0x01
103 #define GATT_FORMAT_2BIT 0x02
104 #define GATT_FORMAT_NIBBLE 0x03
105 #define GATT_FORMAT_UINT8 0x04
106 #define GATT_FORMAT_UINT12 0x05
107 #define GATT_FORMAT_UINT16 0x06
108 #define GATT_FORMAT_UINT24 0x07
109 #define GATT_FORMAT_UINT32 0x08
110 #define GATT_FORMAT_UINT48 0x09
111 #define GATT_FORMAT_UINT64 0x0a
112 #define GATT_FORMAT_UINT128 0x0b
113 #define GATT_FORMAT_SINT8 0x0c
114 #define GATT_FORMAT_SINT12 0x0d
115 #define GATT_FORMAT_SINT16 0x0e
116 #define GATT_FORMAT_SINT24 0x0f
117 #define GATT_FORMAT_SINT32 0x10
118 #define GATT_FORMAT_SINT48 0x11
119 #define GATT_FORMAT_SINT64 0x12
120 #define GATT_FORMAT_SINT128 0x13
121 #define GATT_FORMAT_FLOAT32 0x14
122 #define GATT_FORMAT_FLOAT64 0x15
123 #define GATT_FORMAT_SFLOAT 0x16
124 #define GATT_FORMAT_FLOAT 0x17
125 #define GATT_FORMAT_DUINT16 0x18
126 #define GATT_FORMAT_UTF8S 0x19
127 #define GATT_FORMAT_UTF16S 0x1a
128 #define GATT_FORMAT_STRUCT 0x1b
129 
130 
135 #define GATT_NS_NONE 0x00
136 #define GATT_NS_BT_SIG 0x01
137 #define GATT_NS_BT_DESC_UNKNOWN 0x0000
138 
140 #define GATT_ALL_SERVICES 0xFFFFFFFF
142 
144 #define GATT_SERVICE 0x00000001
145 
147 #if defined ( TESTMODES )
148  // GATT Test Modes
149  #define GATT_TESTMODE_OFF 0 // Test mode off
150  #define GATT_TESTMODE_NO_RSP 1 // Ignore incoming request
151  #define GATT_TESTMODE_PREPARE_WRITE 2 // Forward Prepare Write Request right away
152  #define GATT_TESTMODE_MAX_MTU_SIZE 3 // Use Max ATT MTU size with Exchange MTU Rsp
153  #define GATT_TESTMODE_CORRUPT_PW_DATA 4 // Corrupt incoming Prepare Write Request data
154 #endif
155 
160 #define GATT_PARAM_NUM_PREPARE_WRITES 0
161 
163 #define PTR_TYPE unsigned int *
166 
169 #define GATT_LOCAL_READ 0xFF
170 #define GATT_LOCAL_WRITE 0xFE
172 
175 /*********************************************************************
176  * VARIABLES
177  */
178 
179 /*********************************************************************
180  * MACROS
181  */
182 
184 #define GATT_NUM_ATTRS( attrs ) ( sizeof( attrs ) / sizeof( gattAttribute_t ) )
185 
187 #define GATT_SERVICE_HANDLE( attrs ) ( (attrs)[0].handle )
188 
190 #define GATT_INCLUDED_HANDLE( attrs, i ) ( *((uint16 *)((attrs)[(i)].pValue)) )
191 
193 #define GATT_CCC_TBL( pValue ) ( (gattCharCfg_t *)(*((PTR_TYPE)(pValue))) )
194 
195 /*********************************************************************
196  * TYPEDEFS
197  */
198 
234 typedef bStatus_t (*pfnGATTReadAttrCB_t)( uint16 connHandle, gattAttribute_t *pAttr,
235  uint8 *pValue, uint16 *pLen, uint16 offset,
236  uint16 maxLen, uint8 method );
237 
269 typedef bStatus_t (*pfnGATTWriteAttrCB_t)( uint16 connHandle, gattAttribute_t *pAttr,
270  uint8 *pValue, uint16 len, uint16 offset,
271  uint8 method );
283 typedef bStatus_t (*pfnGATTAuthorizeAttrCB_t)( uint16 connHandle, gattAttribute_t *pAttr,
284  uint8 opcode );
285 
292 typedef struct
294 {
295  uint8 format;
296  int8 exponent;
297  uint16 unit;
298  uint8 nameSpace;
299  uint16 desc;
301 
303 typedef struct
304 {
305  uint16 connHandle;
306  uint8 value;
307 } gattCharCfg_t;
308 
315 typedef struct
316 {
321 
323 typedef struct
324 {
326  uint16 connHandle;
327  uint8 method;
329 
336 typedef struct
337 {
339  uint16 connHandle;
340  uint8 method;
341  uint16 attrHandle;
342  uint16 value;
344 
345 
347 typedef struct
348 {
349  uint16 connHandle;
352 
354 typedef struct
355 {
356  uint16 handle;
359 
361 typedef struct _serviceCBsList
362 {
366 
367 
368 /*********************************************************************
369  * VARIABLES
370  */
371 
374 
377 
380 /*********************************************************************
381  * API FUNCTIONS
382  */
383 
390 extern void GATTServApp_RegisterForMsg( uint8 taskID );
391 
408  uint16 numAttrs, uint8 encKeySize,
409  CONST gattServiceCBs_t *pServiceCBs );
410 
425 bStatus_t GATTServApp_DeregisterService( uint16 handle, gattAttribute_t **p2pAttrs );
426 
439  uint16 numAttrs, uint8 *pValue );
451 extern bStatus_t GATTServApp_AddService( uint32 services );
452 
462 extern bStatus_t GATTServApp_DelService( uint32 services );
463 
480 extern bStatus_t GATTServApp_SetParameter( uint8 param, uint8 len, void *pValue );
481 
494 extern bStatus_t GATTServApp_GetParameter( uint8 param, void *pValue );
495 
510 extern bStatus_t GATTServApp_UpdateCharCfg( uint16 connHandle, uint16 attrHandle, uint16 value );
511 
524 extern void GATTServApp_InitCharCfg( uint16 connHandle, gattCharCfg_t *charCfgTbl );
525 
541 extern uint16 GATTServApp_ReadCharCfg( uint16 connHandle, gattCharCfg_t *charCfgTbl );
542 
559 extern uint8 GATTServApp_WriteCharCfg( uint16 connHandle, gattCharCfg_t *charCfgTbl, uint16 value );
560 
579 extern bStatus_t GATTServApp_ProcessCCCWriteReq( uint16 connHandle, gattAttribute_t *pAttr,
580  uint8 *pValue, uint16 len, uint16 offset,
581  uint16 validCfg );
582 
601 extern bStatus_t GATTServApp_ProcessCharCfg( gattCharCfg_t *charCfgTbl, uint8 *pValue,
602  uint8 authenticated, gattAttribute_t *attrTbl,
603  uint16 numAttrs, uint8 taskId,
604  pfnGATTReadAttrCB_t pfnReadAttrCB );
605 
614 extern void GATTServApp_SendCCCUpdatedEvent( uint16 connHandle, uint16 attrHandle, uint16 value );
615 
629 extern bStatus_t GATTServApp_SendServiceChangedInd( uint16 connHandle, uint8 taskId );
630 
648 extern uint8 GATTServApp_ReadAttr( uint16 connHandle, gattAttribute_t *pAttr,
649  uint16 service, uint8 *pValue, uint16 *pLen,
650  uint16 offset, uint16 maxLen, uint8 method );
651 
665 extern uint8 GATTServApp_WriteAttr( uint16 connHandle, uint16 handle,
666  uint8 *pValue, uint16 len, uint16 offset,
667  uint8 method );
668 
682 extern bStatus_t GATTServApp_ReadRsp( uint16 connHandle, uint8 *pValue,
683  uint16 pLen, uint16 offset );
684 
691 extern void GATTServApp_SetParamValue( uint16 value );
692 
698 extern uint16 GATTServApp_GetParamValue( void );
699 
700 /*-------------------------------------------------------------------
701  * TASK API - These functions must only be called by OSAL.
702  */
703 
705 
716 extern void GATTServApp_Init( uint8 taskId );
717 
729 extern uint16 GATTServApp_ProcessEvent( uint8 taskId, uint16 events );
730 
740 extern pfnGATTAuthorizeAttrCB_t gattServApp_FindAuthorizeAttrCB( uint16 handle );
741 
752 extern bStatus_t gattServApp_EnqueuePrepareWriteReq( uint16 connHandle, attPrepareWriteReq_t *pReq );
753 
765 extern bStatus_t gattServApp_ProcessWriteLong( gattMsgEvent_t *pMsg, prepareWrites_t *pQueue, uint16 *pErrHandle );
766 
778 extern bStatus_t gattServApp_ProcessReliableWrites( gattMsgEvent_t *pMsg, prepareWrites_t *pQueue, uint16 *pErrHandle );
779 
793 extern bStatus_t gattServApp_buildReadByTypeRsp( uint16 connHandle, uint8 *pAttrValue, uint16 attrLen, uint16 attrHandle );
794 
804 extern prepareWrites_t *gattServApp_FindPrepareWriteQ( uint16 connHandle );
805 
816 extern uint8 gattServApp_IsWriteLong( attExecuteWriteReq_t *pReq, prepareWrites_t *pQueue );
817 
825 extern void gattServApp_ClearPrepareWriteQ( prepareWrites_t *pQueue );
826 
828 
829 /*********************************************************************
830 *********************************************************************/
831 
832 #ifdef __cplusplus
833 }
834 #endif
835 
836 #endif /* GATTSERVAPP_H */
837 
uint16 GATTServApp_GetParamValue(void)
Get a GATT Server Application Parameter value.
GATT Structure for Characteristic Presentation Format Value.
Definition: gattservapp.h:293
This API allows the software components in the Z-Stack to be written independently of the specifics o...
uint16 connHandle
Connection message was received on.
Definition: gattservapp.h:326
gattServiceCBsInfo_t serviceInfo
service handle/callbacks
Definition: gattservapp.h:364
GATT Server App event header format.
Definition: gattservapp.h:323
void GATTServApp_SetParamValue(uint16 value)
Set a GATT Server Application Parameter value. Use this function to change the default GATT parameter...
gattAttribute_t * GATTServApp_FindAttr(gattAttribute_t *pAttrTbl, uint16 numAttrs, uint8 *pValue)
Find the attribute record within a service attribute table for a given attribute value pointer...
pfnGATTAuthorizeAttrCB_t pfnAuthorizeAttrCB
Authorization callback function pointer.
Definition: gattservapp.h:319
Service callbacks list item.
Definition: gattservapp.h:361
void GATTServApp_SendCCCUpdatedEvent(uint16 connHandle, uint16 attrHandle, uint16 value)
Build and send the GATT_CLIENT_CHAR_CFG_UPDATED_EVENT to the application.
uint16 handle
Service handle - assigned internally by GATT Server.
Definition: gattservapp.h:356
Structure to keep Prepare Write Requests for each Client.
Definition: gattservapp.h:347
bStatus_t GATTServApp_GetParameter(uint8 param, void *pValue)
Get a GATT Server parameter.
pfnGATTWriteAttrCB_t pfnWriteAttrCB
Write callback function pointer.
Definition: gattservapp.h:318
prepareWrites_t * prepareWritesTbl
Server Prepare Write table (one entry per each physical link)
GATT Structure to keep CBs information for each service being registered.
Definition: gattservapp.h:354
uint8 value
Characteristic configuration value for this client.
Definition: gattservapp.h:306
bStatus_t GATTServApp_AddService(uint32 services)
Add function for the GATT Service.
pfnGATTReadAttrCB_t pfnReadAttrCB
Read callback function pointer.
Definition: gattservapp.h:317
bStatus_t(* pfnGATTReadAttrCB_t)(uint16 connHandle, gattAttribute_t *pAttr, uint8 *pValue, uint16 *pLen, uint16 offset, uint16 maxLen, uint8 method)
Callback function prototype to read an attribute value.
Definition: gattservapp.h:234
uint8 format
Format of the value of this characteristic.
Definition: gattservapp.h:295
bStatus_t GATTServApp_ReadRsp(uint16 connHandle, uint8 *pValue, uint16 pLen, uint16 offset)
If a service returns blePending to the read attribute call back invoked from GATTServApp, the service can later respond to with the value to be read using this API.
uint8 GATTServApp_WriteAttr(uint16 connHandle, uint16 handle, uint8 *pValue, uint16 len, uint16 offset, uint8 method)
Write attribute data.
struct _serviceCBsList * next
pointer to next service callbacks record
Definition: gattservapp.h:363
Structure for Client Characteristic Configuration.
Definition: gattservapp.h:303
osal_event_hdr_t hdr
GATT_SERV_MSG_EVENT and status.
Definition: gattservapp.h:325
uint16 connHandle
Client connection handle.
Definition: gattservapp.h:305
bStatus_t GATTServApp_ProcessCharCfg(gattCharCfg_t *charCfgTbl, uint8 *pValue, uint8 authenticated, gattAttribute_t *attrTbl, uint16 numAttrs, uint8 taskId, pfnGATTReadAttrCB_t pfnReadAttrCB)
Process Client Characteristic Configuration change.
uint16 GATTServApp_ReadCharCfg(uint16 connHandle, gattCharCfg_t *charCfgTbl)
Read the client characteristic configuration for a given client.
void GATTServApp_RegisterForMsg(uint8 taskID)
Register your task ID to receive event messages from the GATT Server Application. ...
attPrepareWriteReq_t * pPrepareWriteQ
Prepare Write Request queue.
Definition: gattservapp.h:350
void GATTServApp_InitCharCfg(uint16 connHandle, gattCharCfg_t *charCfgTbl)
Initialize the client characteristic configuration table.
uint16 value
attribute new value
Definition: gattservapp.h:342
uint16 connHandle
Connection message was received on.
Definition: gattservapp.h:339
Type definitions and macros for BLE stack.
bStatus_t GATTServApp_SetParameter(uint8 param, uint8 len, void *pValue)
Set a GATT Server parameter.
bStatus_t GATTServApp_SendServiceChangedInd(uint16 connHandle, uint8 taskId)
Send out a Service Changed Indication.
bStatus_t GATTServApp_DelService(uint32 services)
Delete function for the GATT Service.
uint16 connHandle
connection message was received on
Definition: gattservapp.h:349
uint16 attrHandle
attribute handle
Definition: gattservapp.h:341
serviceCBsList_t * serviceCBsList
Callbacks for services.
OSAL Event Header.
Definition: osal.h:92
GATT_CLIENT_CHAR_CFG_UPDATED_EVENT message format.
Definition: gattservapp.h:336
uint16 unit
Unit of this attribute as defined in the data dictionary.
Definition: gattservapp.h:297
uint8 nameSpace
Name space of the description.
Definition: gattservapp.h:298
struct _serviceCBsList serviceCBsList_t
Service callbacks list item.
GATT GATT_MSG_EVENT message format.
Definition: gatt.h:211
uint8 method
GATT type of command. Ref: GATT Server Message IDs.
Definition: gattservapp.h:327
bStatus_t GATTServApp_RegisterService(gattAttribute_t *pAttrs, uint16 numAttrs, uint8 encKeySize, CONST gattServiceCBs_t *pServiceCBs)
Register a service's attribute list and callback functions with the GATT Server Application.
bStatus_t GATTServApp_ProcessCCCWriteReq(uint16 connHandle, gattAttribute_t *pAttr, uint8 *pValue, uint16 len, uint16 offset, uint16 validCfg)
Process the client characteristic configuration write request for a given client. ...
osal_event_hdr_t hdr
GATT_SERV_MSG_EVENT and status.
Definition: gattservapp.h:338
GATT Attribute format.
Definition: gatt.h:240
Status_t bStatus_t
BLE Generic Status return.
Definition: bcomdef.h:225
CONST gattServiceCBs_t * pCBs
Service callback function pointers.
Definition: gattservapp.h:357
uint16 desc
Description of this attribute as defined in a higher layer profile.
Definition: gattservapp.h:299
Prepare Write Request format.
Definition: att.h:544
uint8 method
GATT_CLIENT_CHAR_CFG_UPDATED_EVENT.
Definition: gattservapp.h:340
int8 exponent
A sign integer which represents the exponent of an integer.
Definition: gattservapp.h:296
bStatus_t GATTServApp_UpdateCharCfg(uint16 connHandle, uint16 attrHandle, uint16 value)
Update the Client Characteristic Configuration for a given Client.
uint8 GATTServApp_WriteCharCfg(uint16 connHandle, gattCharCfg_t *charCfgTbl, uint16 value)
Write the client characteristic configuration for a given client.
GATT Structure for service callback functions.
Definition: gattservapp.h:315
bStatus_t(* pfnGATTAuthorizeAttrCB_t)(uint16 connHandle, gattAttribute_t *pAttr, uint8 opcode)
Callback function prototype to authorize a Read or Write operation on a given attribute.
Definition: gattservapp.h:283
Execute Write Request format.
Definition: att.h:570
bStatus_t GATTServApp_DeregisterService(uint16 handle, gattAttribute_t **p2pAttrs)
Deregister a service's attribute list and callback functions from the GATT Server Application...
bStatus_t(* pfnGATTWriteAttrCB_t)(uint16 connHandle, gattAttribute_t *pAttr, uint8 *pValue, uint16 len, uint16 offset, uint8 method)
Callback function prototype to write an attribute value.
Definition: gattservapp.h:269
uint8 GATTServApp_ReadAttr(uint16 connHandle, gattAttribute_t *pAttr, uint16 service, uint8 *pValue, uint16 *pLen, uint16 offset, uint16 maxLen, uint8 method)
Read an attribute. If the format of the attribute value is unknown to GATT Server, use the callback function provided by the Service.
Copyright 2017, Texas Instruments Incorporated