TI BLE5-Stack API Documentation  2.02.00.00
att.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  Group: WCS, BTS
4  $Target Device: DEVICES $
5 
6  ******************************************************************************
7  $License: TISD 2009 $
8  ******************************************************************************
9  $Release Name: PACKAGE NAME $
10  $Release Date: PACKAGE RELEASE DATE $
11  *****************************************************************************/
12 
24 #ifndef ATT_H
25 #define ATT_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 #include "l2cap.h"
39 
40 /*********************************************************************
41  * CONSTANTS
42  */
43 
58 #define ATT_MTU_SIZE L2CAP_MTU_SIZE
59 #define ATT_MAX_MTU_SIZE (255-L2CAP_HDR_SIZE)
60 
66 #define ATT_ERROR_RSP 0x01
67 #define ATT_EXCHANGE_MTU_REQ 0x02
68 #define ATT_EXCHANGE_MTU_RSP 0x03
69 #define ATT_FIND_INFO_REQ 0x04
70 #define ATT_FIND_INFO_RSP 0x05
71 #define ATT_FIND_BY_TYPE_VALUE_REQ 0x06
72 #define ATT_FIND_BY_TYPE_VALUE_RSP 0x07
73 #define ATT_READ_BY_TYPE_REQ 0x08
74 #define ATT_READ_BY_TYPE_RSP 0x09
75 #define ATT_READ_REQ 0x0a
76 #define ATT_READ_RSP 0x0b
77 #define ATT_READ_BLOB_REQ 0x0c
78 #define ATT_READ_BLOB_RSP 0x0d
79 #define ATT_READ_MULTI_REQ 0x0e
80 #define ATT_READ_MULTI_RSP 0x0f
81 #define ATT_READ_BY_GRP_TYPE_REQ 0x10
82 #define ATT_READ_BY_GRP_TYPE_RSP 0x11
83 #define ATT_WRITE_REQ 0x12
84 #define ATT_WRITE_RSP 0x13
85 #define ATT_PREPARE_WRITE_REQ 0x16
86 #define ATT_PREPARE_WRITE_RSP 0x17
87 #define ATT_EXECUTE_WRITE_REQ 0x18
88 #define ATT_EXECUTE_WRITE_RSP 0x19
89 #define ATT_HANDLE_VALUE_NOTI 0x1b
90 #define ATT_HANDLE_VALUE_IND 0x1d
91 #define ATT_HANDLE_VALUE_CFM 0x1e
92 #define ATT_UNSUPPORTED_METHOD 0x20
93 
94 #define ATT_WRITE_CMD 0x52
95 #define ATT_SIGNED_WRITE_CMD 0xD2
96 
102 #define ATT_TRANSACTION_READY_EVENT 0x7D
103 #define ATT_FLOW_CTRL_VIOLATED_EVENT 0x7E
104 #define ATT_MTU_UPDATED_EVENT 0x7F
105 
112 #define ATT_METHOD_BITS 0x3f
113 #define ATT_CMD_FLAG_BIT 0x40
114 #define ATT_AUTHEN_SIG_FLAG_BIT 0x80
115 #define ATT_BT_UUID_SIZE 2
116 #define ATT_UUID_SIZE 16
117 #define ATT_MSG_TIMEOUT 30
118 
125 #define ATT_SIG_NOT_INCLUDED 0x00
126 #define ATT_SIG_VALID 0x01
127 #define ATT_SIG_INVALID 0x02
128 
130 /*********************************************************************
131  * Error Response: Error Code
132  */
133 
138 #define ATT_ERR_INVALID_HANDLE 0x01
139 #define ATT_ERR_READ_NOT_PERMITTED 0x02
140 #define ATT_ERR_WRITE_NOT_PERMITTED 0x03
141 #define ATT_ERR_INVALID_PDU 0x04
142 #define ATT_ERR_INSUFFICIENT_AUTHEN 0x05
143 #define ATT_ERR_UNSUPPORTED_REQ 0x06
144 #define ATT_ERR_INVALID_OFFSET 0x07
145 #define ATT_ERR_INSUFFICIENT_AUTHOR 0x08
146 #define ATT_ERR_PREPARE_QUEUE_FULL 0x09
147 #define ATT_ERR_ATTR_NOT_FOUND 0x0a
148 #define ATT_ERR_ATTR_NOT_LONG 0x0b
149 #define ATT_ERR_INSUFFICIENT_KEY_SIZE 0x0c
150 #define ATT_ERR_INVALID_VALUE_SIZE 0x0d
151 #define ATT_ERR_UNLIKELY 0x0e
152 #define ATT_ERR_INSUFFICIENT_ENCRYPT 0x0f
153 #define ATT_ERR_UNSUPPORTED_GRP_TYPE 0x10
154 #define ATT_ERR_INSUFFICIENT_RESOURCES 0x11
155 
156 /*** Reserved for future use: 0x12 - 0x7F ***/
157 
158 /*** Application error code defined by a higher layer specification: 0x80-0x9F ***/
159 
160 #define ATT_ERR_INVALID_VALUE 0x80
161 
163 /*********************************************************************
164  * Find Information Response: UUID Format
165  */
166 #define ATT_HANDLE_BT_UUID_TYPE 0x01
167 #define ATT_HANDLE_UUID_TYPE 0x02
168 
169 /*********************************************************************
170  * Read Multiple Request: Handles
171  */
172 #define ATT_MIN_NUM_HANDLES 2
173 
174 /*********************************************************************
175  * Execute Write Request: Flags
176  */
177 #define ATT_CANCEL_PREPARED_WRITES 0x00
178 #define ATT_WRITE_PREPARED_VALUES 0x01
179 
180 #if defined ( TESTMODES )
181  #define ATT_TESTMODE_OFF 0
183  #define ATT_TESTMODE_UNAUTHEN_SIG 1
184  #define ATT_TESTMODE_SEND_UNS_REQ 2
185  #define ATT_TESTMODE_SEND_UNS_CMD 3
186 #endif
187 
192 #define ATT_OPCODE_SIZE 1
193 #define ATT_EXCHANGE_MTU_REQ_SIZE 2
194 #define ATT_EXCHANGE_MTU_RSP_SIZE 2
195 #define ATT_ERROR_RSP_SIZE 4
196 #define ATT_FIND_INFO_REQ_FIXED_SIZE 4
197 #define ATT_FIND_INFO_RSP_FIXED_SIZE 1
198 #define ATT_FIND_INFO_RSP_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_FIND_INFO_RSP_FIXED_SIZE )
199 #define ATT_FIND_BY_TYPE_VALUE_REQ_FIXED_SIZE 6
200 #define ATT_FIND_BY_TYPE_VALUE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_FIND_BY_TYPE_VALUE_REQ_FIXED_SIZE )
201 #define ATT_READ_BY_TYPE_REQ_FIXED_SIZE 4
202 #define ATT_READ_BY_TYPE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_READ_BY_TYPE_REQ_FIXED_SIZE )
203 #define ATT_READ_BY_TYPE_RSP_FIXED_SIZE 1
204 #define ATT_READ_BY_TYPE_RSP_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_READ_BY_TYPE_RSP_FIXED_SIZE )
205 #define ATT_READ_REQ_SIZE 2
206 #define ATT_READ_BY_GRP_TYPE_RSP_FIXED_SIZE 1
207 #define ATT_READ_BY_GRP_TYPE_RSP_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_READ_BY_GRP_TYPE_RSP_FIXED_SIZE )
208 #define ATT_WRITE_REQ_FIXED_SIZE 2
209 #define ATT_READ_BLOB_REQ_SIZE 4
210 #define ATT_WRITE_REQ_FIXED_SIZE 2
211 #define ATT_WRITE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_WRITE_REQ_FIXED_SIZE )
212 #define ATT_PREPARE_WRITE_REQ_FIXED_SIZE 4
213 #define ATT_PREPARE_WRITE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_PREPARE_WRITE_REQ_FIXED_SIZE )
214 #define ATT_PREPARE_WRITE_RSP_FIXED_SIZE 4
215 #define ATT_EXECUTE_WRITE_REQ_SIZE 1
216 #define ATT_HANDLE_VALUE_IND_FIXED_SIZE 2
217 #define ATT_HANDLE_VALUE_IND_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_HANDLE_VALUE_IND_FIXED_SIZE )
218 #define ATT_AUTHEN_SIG_LEN 12
219 
221 /*********************************************************************
222  * VARIABLES
223  */
224 
226 extern CONST uint8 btBaseUUID[ATT_UUID_SIZE];
228 
229 /*********************************************************************
230  * MACROS
231  */
233 #define ATT_WRITE_COMMAND( method, cmd ) ( ( (method) == ATT_WRITE_REQ ) && ( (cmd) == TRUE ) )
234 
235 /*********************************************************************
236  * ATT Find Info Response macros
237  */
238 
240 
241 // Handle and 16-bit Bluetooth UUID pair indexes
242 #define ATT_BT_PAIR_HANDLE_IDX( i ) ( (i) * (2 + ATT_BT_UUID_SIZE) )
243 #define ATT_BT_PAIR_UUID_IDX( i ) ( ATT_BT_PAIR_HANDLE_IDX( (i) ) + 2 )
244 
245 #define ATT_BT_PAIR_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_BT_PAIR_HANDLE_IDX((i))], \
246  (info)[ATT_BT_PAIR_HANDLE_IDX((i))+1] ) )
247 #define ATT_BT_PAIR_UUID( info, i ) ( BUILD_UINT16( (info)[ATT_BT_PAIR_UUID_IDX((i))], \
248  (info)[ATT_BT_PAIR_UUID_IDX((i))+1] ) )
249 
250 // Handle and 128-bit UUID pair indexes
251 #define ATT_PAIR_HANDLE_IDX( i ) ( (i) * (2 + ATT_UUID_SIZE) )
252 #define ATT_PAIR_UUID_IDX( i ) ( ATT_PAIR_HANDLE_IDX( (i) ) + 2 )
253 
254 #define ATT_PAIR_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_PAIR_HANDLE_IDX((i))], \
255  (info)[ATT_PAIR_HANDLE_IDX((i))+1] ) )
256 
257 /*********************************************************************
258  * ATT Find By Type Value Response macros
259  */
260 // Attribute Handle and Group End Handle pair indexes
261 #define ATT_ATTR_HANDLE_IDX( i ) ( (i) * (2 + 2) )
262 #define ATT_GRP_END_HANDLE_IDX( i ) ( ATT_ATTR_HANDLE_IDX( (i) ) + 2 )
263 
264 #define ATT_ATTR_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_ATTR_HANDLE_IDX((i))], \
265  (info)[ATT_ATTR_HANDLE_IDX((i))+1] ) )
266 #define ATT_GRP_END_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_GRP_END_HANDLE_IDX((i))], \
267  (info)[ATT_GRP_END_HANDLE_IDX((i))+1] ) )
268 
269 /*********************************************************************
270  * ATT Read Multiple Request macros
271  */
272 // Attribute Handle index
273 #define ATT_HANDLE_IDX( i ) ( (i) * 2 )
274 
275 #define ATT_HANDLE( handles, i ) ( BUILD_UINT16( (handles)[ATT_HANDLE_IDX((i))], \
276  (handles)[ATT_HANDLE_IDX((i))+1] ) )
277 
279 
282 /*********************************************************************
283  * TYPEDEFS
284  */
285 
291 typedef struct
293 {
294  uint8 sig;
295  uint8 cmd;
296  uint8 method;
297  uint16 len;
298  uint8 *pParams;
299 } attPacket_t;
300 
302 typedef struct
303 {
304  uint8 len;
305  uint8 uuid[ATT_UUID_SIZE];
306 } attAttrType_t;
307 
309 typedef struct
310 {
311  uint8 len;
312  uint8 uuid[ATT_BT_UUID_SIZE];
314 
325 typedef struct
326 {
327  uint8 reqOpcode;
328  uint16 handle;
329  uint8 errCode;
330 } attErrorRsp_t;
331 
337 typedef struct
338 {
339  uint16 clientRxMTU;
341 
347 typedef struct
348 {
349  uint16 serverRxMTU;
351 
357 typedef struct
358 {
359  uint16 startHandle;
360  uint16 endHandle;
362 
364 typedef struct
365 {
366  uint16 handle;
367  uint8 uuid[ATT_BT_UUID_SIZE];
369 
371 typedef struct
372 {
373  uint16 handle;
374  uint8 uuid[ATT_UUID_SIZE];
376 
382 typedef struct
383 {
384  uint16 numInfo;
385  uint8 format;
386  uint8 *pInfo;
388 
394 typedef struct
395 {
396  uint16 startHandle;
397  uint16 endHandle;
399  uint16 len;
400  uint8 *pValue;
402 
404 typedef struct
405 {
406  uint16 handle;
407  uint16 grpEndHandle;
409 
415 typedef struct
416 {
417  uint16 numInfo;
418  uint8 *pHandlesInfo;
420 
426 typedef struct
427 {
428  uint16 startHandle;
429  uint16 endHandle;
432 
438 typedef struct
439 {
440  uint16 numPairs;
441  uint16 len;
442  uint8 *pDataList;
443  uint16 dataLen;
445 
451 typedef struct
452 {
453  uint16 handle;
454 } attReadReq_t;
455 
461 typedef struct
462 {
463  uint16 len;
464  uint8 *pValue;
465 } attReadRsp_t;
466 
472 typedef struct
473 {
474  uint16 handle;
475  uint16 offset;
477 
483 typedef struct
484 {
485  uint16 len;
486  uint8 *pValue;
488 
494 typedef struct
495 {
496  uint8 *pHandles;
497  uint16 numHandles;
499 
505 typedef struct
506 {
507  uint16 len;
508  uint8 *pValues;
510 
516 typedef struct
517 {
518  uint16 startHandle;
519  uint16 endHandle;
522 
528 typedef struct
529 {
530  uint16 numGrps;
531  uint16 len;
532  uint8 *pDataList;
534 
540 typedef struct
541 {
542  uint16 handle;
543  uint16 len;
544  uint8 *pValue;
545  uint8 sig;
546  uint8 cmd;
547 } attWriteReq_t;
548 
554 typedef struct
555 {
556  uint16 handle;
557  uint16 offset;
558  uint16 len;
559  uint8 *pValue;
561 
567 typedef struct
568 {
569  uint16 handle;
570  uint16 offset;
571  uint16 len;
572  uint8 *pValue;
574 
580 typedef struct
581 {
582  uint8 flags;
585 
591 typedef struct
592 {
593  uint16 handle;
594  uint16 len;
595  uint8 *pValue;
597 
603 typedef struct
604 {
605  uint16 handle;
606  uint16 len;
607  uint8 *pValue;
609 
627 typedef struct
628 {
629  uint8 opcode;
632 
643 typedef struct
644 {
645  uint16 MTU;
647 
657 typedef union
658 {
659  // Request messages
671 
672  // Response messages
683 
684  // Indication and Notification messages
687 
688  // Locally-generated event messages
691 } attMsg_t;
692 
695 
697 // Function prototype to notify GATT Server or Client about an outgoing ATT message.
698 typedef void (*attNotifyTxCB_t)( uint16 connHandle, uint8 opcode );
699 
700 /*********************************************************************
701  * VARIABLES
702  */
703 
704 /*********************************************************************
705  * API FUNCTIONS
706  */
707 
708 /*-------------------------------------------------------------------
709  * General Utility APIs
710  */
711 
712 /*
713  * Parse an attribute protocol message.
714  */
715 extern uint8 ATT_ParsePacket( l2capDataEvent_t *pL2capMsg, attPacket_t *pPkt );
716 
717 /*
718  * Compare two UUIDs. The UUIDs are converted if necessary.
719  */
720 extern uint8 ATT_CompareUUID( const uint8 *pUUID1, uint16 len1,
721  const uint8 *pUUID2, uint16 len2 );
722 /*
723  * Convert a 16-bit UUID to 128-bit UUID.
724  */
725 extern uint8 ATT_ConvertUUIDto128( const uint8 *pUUID16, uint8 *pUUID128 );
726 
727 /*
728  * Convert a 128-bit UUID to 16-bit UUID.
729  */
730 extern uint8 ATT_ConvertUUIDto16( const uint8 *pUUID128, uint8 *pUUID16 );
731 
732 
733 /*-------------------------------------------------------------------
734  * Attribute Client Utility APIs
735  */
736 
737 /*
738  * Build Error Response.
739  */
740 extern uint16 ATT_BuildErrorRsp( uint8 *pBuf, uint8 *pMsg );
741 
742 /*
743  * Parse Error Response.
744  */
745 extern bStatus_t ATT_ParseErrorRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
746 
747 /*
748  * Build Exchange MTU Request.
749  */
750 extern uint16 ATT_BuildExchangeMTUReq( uint8 *pBuf, uint8 *pMsg );
751 
752 /*
753  * Build Exchange MTU Response.
754  */
755 extern uint16 ATT_BuildExchangeMTURsp( uint8 *pBuf, uint8 *pMsg );
756 
757 /*
758  * Parse Exchange MTU Response.
759  */
760 extern bStatus_t ATT_ParseExchangeMTURsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
761 
762 /*
763  * Build Find Information Request.
764  */
765 extern uint16 ATT_BuildFindInfoReq( uint8 *pBuf, uint8 *pMsg );
766 
767 /*
768  * Parse Find Information Response.
769  */
770 extern bStatus_t ATT_ParseFindInfoRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
771 
772 /*
773  * Build Find Information Response.
774  */
775 extern uint16 ATT_BuildFindInfoRsp( uint8 *pBuf, uint8 *pMsg );
776 
777 /*
778  * Build Find By Type Value Request.
779  */
780 extern uint16 ATT_BuildFindByTypeValueReq( uint8 *pBuf, uint8 *pMsg );
781 
782 /*
783  * Build Find By Type Value Response.
784  */
785 extern uint16 ATT_BuildFindByTypeValueRsp( uint8 *pBuf, uint8 *pMsg );
786 
787 /*
788  * Parse Find By Type Value Response.
789  */
790 extern bStatus_t ATT_ParseFindByTypeValueRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
791 
792 /*
793  * Build Read By Type Request.
794  */
795 extern uint16 ATT_BuildReadByTypeReq( uint8 *pBuf, uint8 *pMsg );
796 
797 /*
798  * Build Read By Type Response.
799  */
800 extern uint16 ATT_BuildReadByTypeRsp( uint8 *pBuf, uint8 *pMsg );
801 
802 /*
803  * Parse Read By Type Response.
804  */
805 extern bStatus_t ATT_ParseReadByTypeRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
806 
807 /*
808  * Build Read Request.
809  */
810 extern uint16 ATT_BuildReadReq( uint8 *pBuf, uint8 *pMsg );
811 
812 /*
813  * Build Read Response.
814  */
815 extern uint16 ATT_BuildReadRsp( uint8 *pBuf, uint8 *pMsg );
816 
817 /*
818  * Parse Read Response.
819  */
820 extern bStatus_t ATT_ParseReadRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
821 
822 /*
823  * Build Read Blob Request.
824  */
825 extern uint16 ATT_BuildReadBlobReq( uint8 *pBuf, uint8 *pMsg );
826 
827 /*
828  * Build Read Blob Response.
829  */
830 extern uint16 ATT_BuildReadBlobRsp( uint8 *pBuf, uint8 *pMsg );
831 
832 /*
833  * Parse Read Blob Response.
834  */
835 extern bStatus_t ATT_ParseReadBlobRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
836 
837 /*
838  * Build Read Multiple Request.
839  */
840 extern uint16 ATT_BuildReadMultiReq( uint8 *pBuf, uint8 *pMsg );
841 
842 /*
843  * Build Read Multiple Response.
844  */
845 extern uint16 ATT_BuildReadMultiRsp( uint8 *pBuf, uint8 *pMsg );
846 
847 /*
848  * Parse Read Multiple Response.
849  */
850 extern bStatus_t ATT_ParseReadMultiRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
851 
852 /*
853  * Build Read By Group Type Response.
854  */
855 extern uint16 ATT_BuildReadByGrpTypeRsp( uint8 *pBuf, uint8 *pMsg );
856 
857 /*
858  * Parse Read By Group Type Response.
859  */
860 extern bStatus_t ATT_ParseReadByGrpTypeRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
861 
862 /*
863  * Build Write Request.
864  */
865 extern uint16 ATT_BuildWriteReq( uint8 *pBuf, uint8 *pMsg );
866 
867 /*
868  * Parse Write Response.
869  */
870 extern bStatus_t ATT_ParseWriteRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
871 
872 /*
873  * Build Prepare Write Request.
874  */
875 extern uint16 ATT_BuildPrepareWriteReq( uint8 *pBuf, uint8 *pMsg );
876 
877 /*
878  * Build Prepare Write Response.
879  */
880 extern uint16 ATT_BuildPrepareWriteRsp( uint8 *pBuf, uint8 *pMsg );
881 
882 /*
883  * Parse Prepare Write Response.
884  */
885 extern bStatus_t ATT_ParsePrepareWriteRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
886 
887 /*
888  * Build Execute Write Request.
889  */
890 extern uint16 ATT_BuildExecuteWriteReq( uint8 *pBuf, uint8 *pMsg );
891 
892 /*
893  * Parse Execute Write Response.
894  */
895 extern bStatus_t ATT_ParseExecuteWriteRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
896 
897 /*
898  * Build Handle Value Indication.
899  */
900 extern uint16 ATT_BuildHandleValueInd( uint8 *pBuf, uint8 *pMsg );
901 
902 /*
903  * Parse Handle Value Indication.
904  */
905 extern bStatus_t ATT_ParseHandleValueInd( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
906 
907 
908 /*-------------------------------------------------------------------
909  * Attribute Server Utility APIs
910  */
911 
912 /*
913  * Parse Exchange MTU Request.
914  */
915 extern bStatus_t ATT_ParseExchangeMTUReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
916 
917 /*
918  * Parse Find Information Request.
919  */
920 extern bStatus_t ATT_ParseFindInfoReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
921 
922 /*
923  * Parse Find By Type Value Request.
924  */
925 extern bStatus_t ATT_ParseFindByTypeValueReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
926 
927 /*
928  * Parse Read By Type Request.
929  */
930 extern bStatus_t ATT_ParseReadByTypeReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
931 
932 /*
933  * Parse Read Request.
934  */
935 extern bStatus_t ATT_ParseReadReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
936 
937 /*
938  * Parse Write Blob Request.
939  */
940 extern bStatus_t ATT_ParseReadBlobReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
941 
942 /*
943  * Parse Read Multiple Request.
944  */
945 extern bStatus_t ATT_ParseReadMultiReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
946 
947 /*
948  * Parse Write Request.
949  */
950 extern bStatus_t ATT_ParseWriteReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
951 
952 /*
953  * Parse Execute Write Request.
954  */
955 extern bStatus_t ATT_ParseExecuteWriteReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
956 
957 /*
958  * Parse Prepare Write Request.
959  */
960 extern bStatus_t ATT_ParsePrepareWriteReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
961 
962 /*
963  * Parse Handle Value Confirmation.
964  */
965 extern bStatus_t ATT_ParseHandleValueCfm( uint8 *pParams, uint16 len, attMsg_t *pMsg );
966 
968 
969 /*-------------------------------------------------------------------
970  * Attribute Client Public APIs
971  */
972 
991 extern bStatus_t ATT_ExchangeMTUReq( uint16 connHandle, attExchangeMTUReq_t *pReq );
992 
1005 extern bStatus_t ATT_FindInfoReq( uint16 connHandle, attFindInfoReq_t *pReq );
1006 
1019 extern bStatus_t ATT_FindByTypeValueReq( uint16 connHandle, attFindByTypeValueReq_t *pReq );
1020 
1033 extern bStatus_t ATT_ReadByTypeReq( uint16 connHandle, attReadByTypeReq_t *pReq );
1034 
1047 extern bStatus_t ATT_ReadReq( uint16 connHandle, attReadReq_t *pReq );
1048 
1061 extern bStatus_t ATT_ReadBlobReq( uint16 connHandle, attReadBlobReq_t *pReq );
1062 
1075 extern bStatus_t ATT_ReadMultiReq( uint16 connHandle, attReadMultiReq_t *pReq );
1076 
1089 extern bStatus_t ATT_ReadByGrpTypeReq( uint16 connHandle, attReadByGrpTypeReq_t *pReq );
1090 
1104 extern bStatus_t ATT_WriteReq( uint16 connHandle, attWriteReq_t *pReq );
1105 
1118 extern bStatus_t ATT_PrepareWriteReq( uint16 connHandle, attPrepareWriteReq_t *pReq );
1119 
1132 extern bStatus_t ATT_ExecuteWriteReq( uint16 connHandle, attExecuteWriteReq_t *pReq );
1133 
1145 extern bStatus_t ATT_HandleValueCfm( uint16 connHandle );
1146 
1147 
1148 /*-------------------------------------------------------------------
1149  * Attribute Server Public APIs
1150  */
1151 
1164 extern bStatus_t ATT_ErrorRsp( uint16 connHandle, attErrorRsp_t *pRsp );
1165 
1178 extern bStatus_t ATT_ExchangeMTURsp( uint16 connHandle, attExchangeMTURsp_t *pRsp );
1179 
1192 extern bStatus_t ATT_FindInfoRsp( uint16 connHandle, attFindInfoRsp_t *pRsp );
1193 
1206 extern bStatus_t ATT_FindByTypeValueRsp( uint16 connHandle, attFindByTypeValueRsp_t *pRsp );
1207 
1220 extern bStatus_t ATT_ReadByTypeRsp( uint16 connHandle, attReadByTypeRsp_t *pRsp );
1221 
1234 extern bStatus_t ATT_ReadRsp( uint16 connHandle, attReadRsp_t *pRsp );
1235 
1248 extern bStatus_t ATT_ReadBlobRsp( uint16 connHandle, attReadBlobRsp_t *pRsp );
1249 
1262 extern bStatus_t ATT_ReadMultiRsp( uint16 connHandle, attReadMultiRsp_t *pRsp ) ;
1263 
1276 extern bStatus_t ATT_ReadByGrpTypeRsp( uint16 connHandle, attReadByGrpTypeRsp_t *pRsp );
1277 
1289 extern bStatus_t ATT_WriteRsp( uint16 connHandle );
1290 
1303 extern bStatus_t ATT_PrepareWriteRsp( uint16 connHandle, attPrepareWriteRsp_t *pRsp );
1304 
1316 extern bStatus_t ATT_ExecuteWriteRsp( uint16 connHandle );
1317 
1330 extern bStatus_t ATT_HandleValueNoti( uint16 connHandle, attHandleValueNoti_t *pNoti );
1331 
1344 extern bStatus_t ATT_HandleValueInd( uint16 connHandle, attHandleValueInd_t *pInd );
1345 
1346 /*-------------------------------------------------------------------
1347  * Attribute Common Public APIs
1348  */
1349 
1359 extern uint8 ATT_UpdateMTU( uint16 connHandle, uint16 MTU );
1360 
1368 extern uint16 ATT_GetMTU( uint16 connHandle );
1369 
1376 extern void ATT_SetParamValue( uint16 value );
1377 
1383 extern uint16 ATT_GetParamValue( void );
1384 
1390 extern void ATT_RegisterServer( attNotifyTxCB_t pfnNotifyTx );
1391 
1397 extern void ATT_RegisterClient( attNotifyTxCB_t pfnNotifyTx );
1398 
1401 /*********************************************************************
1402 *********************************************************************/
1403 
1404 #ifdef __cplusplus
1405 }
1406 #endif
1407 
1408 #endif /* ATT_H */
1409 
uint16 endHandle
Last requested handle number.
Definition: att.h:360
void ATT_RegisterServer(attNotifyTxCB_t pfnNotifyTx)
Register the server's notify Tx function with the ATT layer.
bStatus_t ATT_ReadRsp(uint16 connHandle, attReadRsp_t *pRsp)
Send Read Response.
uint16 handle
Handle of the attribute to be read (must be first field)
Definition: att.h:453
uint16 len
Length of each attribute handle, end group handle and value set.
Definition: att.h:531
This API allows the software components in the Z-Stack to be written independently of the specifics o...
attFindInfoRsp_t findInfoRsp
ATT Find Information Response.
Definition: att.h:675
uint16 numInfo
Number of attribute handle-UUID pairs found.
Definition: att.h:384
attPrepareWriteRsp_t prepareWriteRsp
ATT Prepare Write Response.
Definition: att.h:682
L2CAP layer interface.
Exchange MTU Response format.
Definition: att.h:347
bStatus_t ATT_FindByTypeValueRsp(uint16 connHandle, attFindByTypeValueRsp_t *pRsp)
Send Find By Type Value Response.
Read Request.
Definition: att.h:451
uint16 numGrps
Number of attribute handle, end group handle and value sets found.
Definition: att.h:530
Find Information Response format.
Definition: att.h:382
bStatus_t ATT_ExecuteWriteReq(uint16 connHandle, attExecuteWriteReq_t *pReq)
Send Execute Write Request.
bStatus_t ATT_FindInfoReq(uint16 connHandle, attFindInfoReq_t *pReq)
Send Find Information Request.
uint8 * pHandlesInfo
List of 1 or more handles information (4 to ATT_MTU_SIZE-1)
Definition: att.h:418
bStatus_t ATT_ExchangeMTUReq(uint16 connHandle, attExchangeMTUReq_t *pReq)
Send Exchange MTU Request.
uint16 MTU
new MTU size
Definition: att.h:645
attReadByGrpTypeReq_t readByGrpTypeReq
ATT Read By Group Type Request.
Definition: att.h:667
uint16 numHandles
Number of attribute handles.
Definition: att.h:497
attPrepareWriteReq_t prepareWriteReq
ATT Prepare Write Request.
Definition: att.h:669
attAttrBtType_t type
2-octet UUID to find
Definition: att.h:398
uint8 reqOpcode
Request that generated this error response.
Definition: att.h:327
bStatus_t ATT_FindInfoRsp(uint16 connHandle, attFindInfoRsp_t *pRsp)
Send Find Information Response.
attMtuUpdatedEvt_t mtuEvt
ATT MTU Updated Event.
Definition: att.h:690
Find Information Request format.
Definition: att.h:357
Read Response.
Definition: att.h:461
Handle and its 128-bit UUID.
Definition: att.h:371
attErrorRsp_t errorRsp
ATT Error Response.
Definition: att.h:673
bStatus_t ATT_ExchangeMTURsp(uint16 connHandle, attExchangeMTURsp_t *pRsp)
Send Exchange MTU Response.
attHandleValueNoti_t handleValueNoti
ATT Handle Value Notification.
Definition: att.h:685
Error Response format.
Definition: att.h:325
attAttrType_t type
Requested group type (2 or 16 octet UUID)
Definition: att.h:520
Find By Type Value Request format.
Definition: att.h:394
uint8 sig
Authentication Signature status (not included (0), valid (1), invalid (2))
Definition: att.h:294
uint8 * pHandles
Set of two or more attribute handles (4 to ATT_MTU_SIZE-1) - must be first field. ...
Definition: att.h:496
#define ATT_BT_UUID_SIZE
Size of 16-bit Bluetooth UUID.
Definition: att.h:115
uint16 offset
Offset of the first octet to be written.
Definition: att.h:557
#define ATT_UUID_SIZE
Size of 128-bit UUID.
Definition: att.h:116
Write Request format.
Definition: att.h:540
uint8 flags
Definition: att.h:582
void ATT_RegisterClient(attNotifyTxCB_t pfnNotifyTx)
Register the client's notify Tx function with the ATT layer.
uint8 cmd
Command Flag.
Definition: att.h:546
uint16 len
Length of value.
Definition: att.h:485
bStatus_t ATT_ReadByTypeReq(uint16 connHandle, attReadByTypeReq_t *pReq)
Send Read By Type Request.
bStatus_t ATT_ReadByGrpTypeRsp(uint16 connHandle, attReadByGrpTypeRsp_t *pRsp)
Send Read By Group Type Respond.
uint16 len
Length of value.
Definition: att.h:571
uint8 * pDataList
List of 1 or more attribute handle-value pairs (2 to ATT_MTU_SIZE-2)
Definition: att.h:442
attReadMultiReq_t readMultiReq
ATT Read Multiple Request.
Definition: att.h:666
uint8 * pValue
Part of the value of the attribute to be written (0 to ATT_MTU_SIZE-5) - must be allocated.
Definition: att.h:559
uint16 len
Length of value.
Definition: att.h:463
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:396
uint16 handle
Handle of the attribute that has been read.
Definition: att.h:569
uint8 opcode
opcode of message that caused flow control violation
Definition: att.h:629
attFindInfoReq_t findInfoReq
ATT Find Information Request.
Definition: att.h:661
uint16 numPairs
Number of attribute handle-UUID pairs found.
Definition: att.h:440
attReadRsp_t readRsp
ATT Read Response.
Definition: att.h:678
bStatus_t ATT_PrepareWriteReq(uint16 connHandle, attPrepareWriteReq_t *pReq)
Send Prepare Write Request.
attHandleValueInd_t handleValueInd
ATT Handle Value Indication.
Definition: att.h:686
uint16 clientRxMTU
Client receive MTU size.
Definition: att.h:339
uint8 format
Format of information data.
Definition: att.h:385
uint16 offset
Offset of the first octet to be read.
Definition: att.h:475
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:359
uint16 len
Length of Attribute Parameters.
Definition: att.h:297
uint8 sig
Authentication Signature status (not included (0), valid (1), invalid (2))
Definition: att.h:545
Read By Group Type Response format.
Definition: att.h:528
attReadByTypeRsp_t readByTypeRsp
ATT Read By Type Response.
Definition: att.h:677
uint16 ATT_GetParamValue(void)
Get a ATT Parameter value.
ATT MTU Updated Event message format.
Definition: att.h:643
bStatus_t ATT_FindByTypeValueReq(uint16 connHandle, attFindByTypeValueReq_t *pReq)
Send Find By Type Value Request.
uint16 len
Length of values.
Definition: att.h:507
attExchangeMTUReq_t exchangeMTUReq
ATT Exchange MTU Request.
Definition: att.h:660
uint16 endHandle
Last requested handle number.
Definition: att.h:397
bStatus_t ATT_ReadByGrpTypeReq(uint16 connHandle, attReadByGrpTypeReq_t *pReq)
Send Read By Group Type Request.
Attribute Type format (2 or 16 octet UUID).
Definition: att.h:302
Read Multiple Response format.
Definition: att.h:505
bStatus_t ATT_HandleValueInd(uint16 connHandle, attHandleValueInd_t *pInd)
Send Handle Value Indication.
Read Blob Response format.
Definition: att.h:483
bStatus_t ATT_ReadByTypeRsp(uint16 connHandle, attReadByTypeRsp_t *pRsp)
Send Read By Type Respond.
attReadBlobReq_t readBlobReq
ATT Read Blob Request.
Definition: att.h:665
bStatus_t ATT_WriteRsp(uint16 connHandle)
Send Write Response.
uint16 endHandle
Last requested handle number.
Definition: att.h:429
Attribute Type format (2-octet Bluetooth UUID).
Definition: att.h:309
uint16 serverRxMTU
Server receive MTU size.
Definition: att.h:349
uint8 method
Method.
Definition: att.h:296
uint8 * pParams
Attribute Parameters.
Definition: att.h:298
uint16 offset
Offset of the first octet to be written.
Definition: att.h:570
uint8 * pValue
Value of the attribute to be written (0 to ATT_MTU_SIZE-3)
Definition: att.h:544
uint16 len
Length of value.
Definition: att.h:594
Read Blob Request format.
Definition: att.h:472
uint8 cmd
Command Flag.
Definition: att.h:295
uint8 * pValue
Part of the value of the attribute to be written (0 to ATT_MTU_SIZE-5)
Definition: att.h:572
Find By Type Value Response format.
Definition: att.h:415
bStatus_t ATT_PrepareWriteRsp(uint16 connHandle, attPrepareWriteRsp_t *pRsp)
Send Prepare Write Response.
ATT Flow Control Violated Event message format.
Definition: att.h:627
Read By Type Request format.
Definition: att.h:426
uint8 * pValue
Attribute value to find (0 to ATT_MTU_SIZE-7)
Definition: att.h:400
Read Multiple Request format.
Definition: att.h:494
uint8 * pValue
Current value of the attribute (0 to ATT_MTU_SIZE-3)
Definition: att.h:607
uint8 len
Length of UUID (2 or 16)
Definition: att.h:304
uint16 len
Length of value.
Definition: att.h:558
uint16 handle
Attribute handle that generated error response.
Definition: att.h:328
uint8 * pInfo
Information data whose format is determined by format field (4 to ATT_MTU_SIZE-2) ...
Definition: att.h:386
Handle Value Indication format.
Definition: att.h:603
uint16 handle
Handle of the attribute to be read (must be first field)
Definition: att.h:474
attExecuteWriteReq_t executeWriteReq
ATT Execute Write Request.
Definition: att.h:670
Type definitions and macros for BLE stack.
Handle Value Notification format.
Definition: att.h:591
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:428
uint16 handle
Handle of the attribute to be written (must be first field)
Definition: att.h:556
uint16 endHandle
Last requested handle number.
Definition: att.h:519
bStatus_t ATT_ReadBlobReq(uint16 connHandle, attReadBlobReq_t *pReq)
Send Read Blob Request.
ATT Message format.
Definition: att.h:657
attReadBlobRsp_t readBlobRsp
ATT Read Blob Response.
Definition: att.h:679
bStatus_t ATT_ReadMultiReq(uint16 connHandle, attReadMultiReq_t *pReq)
Send Read Multiple Request.
uint8 * pDataList
List of 1 or more attribute handle, end group handle and value (4 to ATT_MTU_SIZE-2) ...
Definition: att.h:532
uint16 handle
Handle of the attribute to be written (must be first field)
Definition: att.h:542
void ATT_SetParamValue(uint16 value)
Set a ATT Parameter value. Use this function to change the default ATT parameter values.
uint16 len
Length of value.
Definition: att.h:606
bStatus_t ATT_ExecuteWriteRsp(uint16 connHandle)
Send Execute Write Response.
attFlowCtrlViolatedEvt_t flowCtrlEvt
ATT Flow Control Violated Event.
Definition: att.h:689
uint16 handle
Handle of the attribute that has been changed (must be first field)
Definition: att.h:605
bStatus_t ATT_ReadReq(uint16 connHandle, attReadReq_t *pReq)
Send Read Request.
Exchange MTU Request format.
Definition: att.h:337
uint16 grpEndHandle
Group end handle.
Definition: att.h:407
uint16 len
Size of each attribute handle-value pair.
Definition: att.h:441
Attribute Protocol PDU format.
Definition: att.h:292
uint8 * pValue
Value of the attribute with the handle given (0 to ATT_MTU_SIZE-1)
Definition: att.h:464
uint8 * pValue
Part of the value of the attribute with the handle given (0 to ATT_MTU_SIZE-1)
Definition: att.h:486
uint16 dataLen
Length of data written into pDataList. Not part of actual ATT Response.
Definition: att.h:443
attAttrType_t type
Requested type (2 or 16 octet UUID)
Definition: att.h:430
uint8 ATT_UpdateMTU(uint16 connHandle, uint16 MTU)
This function is used to update the MTU size of a connection.
Read By Group Type Request format.
Definition: att.h:516
uint16 handle
Handle.
Definition: att.h:366
attReadByTypeReq_t readByTypeReq
ATT Read By Type Request.
Definition: att.h:663
Handle and its 16-bit Bluetooth UUIDs.
Definition: att.h:364
uint16 len
Length of value.
Definition: att.h:543
attReadByGrpTypeRsp_t readByGrpTypeRsp
ATT Read By Group Type Response.
Definition: att.h:681
bStatus_t ATT_ReadBlobRsp(uint16 connHandle, attReadBlobRsp_t *pRsp)
Send Read Blob Response.
Status_t bStatus_t
BLE Generic Status return.
Definition: bcomdef.h:251
uint8 pendingOpcode
opcode of pending message
Definition: att.h:630
uint8 len
Length of UUID (2)
Definition: att.h:311
Read By Type Response format.
Definition: att.h:438
Prepare Write Response format.
Definition: att.h:567
uint16 handle
Handle.
Definition: att.h:373
uint16 numInfo
Number of handles information found.
Definition: att.h:417
Prepare Write Request format.
Definition: att.h:554
attExchangeMTURsp_t exchangeMTURsp
ATT Exchange MTU Response.
Definition: att.h:674
bStatus_t ATT_ReadMultiRsp(uint16 connHandle, attReadMultiRsp_t *pRsp)
Send Read Multiple Response.
attFindByTypeValueReq_t findByTypeValueReq
ATT Find By Type Value Request.
Definition: att.h:662
bStatus_t ATT_WriteReq(uint16 connHandle, attWriteReq_t *pReq)
Send Write Request.
attReadReq_t readReq
ATT Read Request.
Definition: att.h:664
bStatus_t ATT_HandleValueNoti(uint16 connHandle, attHandleValueNoti_t *pNoti)
Send Handle Value Notification.
attReadMultiRsp_t readMultiRsp
ATT Read Multiple Response.
Definition: att.h:680
attWriteReq_t writeReq
ATT Write Request.
Definition: att.h:668
uint8 * pValues
Set of two or more values (0 to ATT_MTU_SIZE-1)
Definition: att.h:508
uint16 len
Length of value.
Definition: att.h:399
attFindByTypeValueRsp_t findByTypeValueRsp
ATT Find By Type Value Response.
Definition: att.h:676
uint8 * pValue
Current value of the attribute (0 to ATT_MTU_SIZE-3)
Definition: att.h:595
uint16 ATT_GetMTU(uint16 connHandle)
This function is used to get the MTU size of a connection.
uint16 handle
Found attribute handle.
Definition: att.h:406
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:518
uint8 errCode
Reason why the request has generated error response.
Definition: att.h:329
OSAL L2CAP_DATA_EVENT message format.
Definition: l2cap.h:574
bStatus_t ATT_HandleValueCfm(uint16 connHandle)
Send Handle Value Confirmation.
Execute Write Request format.
Definition: att.h:580
uint16 handle
Handle of the attribute that has been changed (must be first field)
Definition: att.h:593
bStatus_t ATT_ErrorRsp(uint16 connHandle, attErrorRsp_t *pRsp)
Send Error Response.
Handles Information format.
Definition: att.h:404
© Copyright 1995-2021, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale