TI BLE5-Stack API Documentation  2.02.07.00
att.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  Group: WCS, BTS
4  $Target Device: DEVICES $
5 
6  ******************************************************************************
7  $License: TI_TEXT 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_32_BIT_UUID_SIZE 4
117 #define ATT_UUID_SIZE 16
118 #define ATT_MSG_TIMEOUT 30
119 
126 #define ATT_SIG_NOT_INCLUDED 0x00
127 #define ATT_SIG_VALID 0x01
128 #define ATT_SIG_INVALID 0x02
129 
131 /*********************************************************************
132  * Error Response: Error Code
133  */
134 
139 #define ATT_ERR_INVALID_HANDLE 0x01
140 #define ATT_ERR_READ_NOT_PERMITTED 0x02
141 #define ATT_ERR_WRITE_NOT_PERMITTED 0x03
142 #define ATT_ERR_INVALID_PDU 0x04
143 #define ATT_ERR_INSUFFICIENT_AUTHEN 0x05
144 #define ATT_ERR_UNSUPPORTED_REQ 0x06
145 #define ATT_ERR_INVALID_OFFSET 0x07
146 #define ATT_ERR_INSUFFICIENT_AUTHOR 0x08
147 #define ATT_ERR_PREPARE_QUEUE_FULL 0x09
148 #define ATT_ERR_ATTR_NOT_FOUND 0x0a
149 #define ATT_ERR_ATTR_NOT_LONG 0x0b
150 #define ATT_ERR_INSUFFICIENT_KEY_SIZE 0x0c
151 #define ATT_ERR_INVALID_VALUE_SIZE 0x0d
152 #define ATT_ERR_UNLIKELY 0x0e
153 #define ATT_ERR_INSUFFICIENT_ENCRYPT 0x0f
154 #define ATT_ERR_UNSUPPORTED_GRP_TYPE 0x10
155 #define ATT_ERR_INSUFFICIENT_RESOURCES 0x11
156 
157 /*** Reserved for future use: 0x12 - 0x7F ***/
158 
159 /*** Application error code defined by a higher layer specification: 0x80-0x9F ***/
160 
161 #define ATT_ERR_INVALID_VALUE 0x80
162 
164 /*********************************************************************
165  * Find Information Response: UUID Format
166  */
167 #define ATT_HANDLE_BT_UUID_TYPE 0x01
168 #define ATT_HANDLE_UUID_TYPE 0x02
169 
170 /*********************************************************************
171  * Read Multiple Request: Handles
172  */
173 #define ATT_MIN_NUM_HANDLES 2
174 
175 /*********************************************************************
176  * Execute Write Request: Flags
177  */
178 #define ATT_CANCEL_PREPARED_WRITES 0x00
179 #define ATT_WRITE_PREPARED_VALUES 0x01
180 
181 #if defined ( TESTMODES )
182  #define ATT_TESTMODE_OFF 0
184  #define ATT_TESTMODE_UNAUTHEN_SIG 1
185  #define ATT_TESTMODE_SEND_UNS_REQ 2
186  #define ATT_TESTMODE_SEND_UNS_CMD 3
187 #endif
188 
193 #define ATT_OPCODE_SIZE 1
194 #define ATT_EXCHANGE_MTU_REQ_SIZE 2
195 #define ATT_EXCHANGE_MTU_RSP_SIZE 2
196 #define ATT_ERROR_RSP_SIZE 4
197 #define ATT_FIND_INFO_REQ_FIXED_SIZE 4
198 #define ATT_FIND_INFO_RSP_FIXED_SIZE 1
199 #define ATT_FIND_INFO_RSP_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_FIND_INFO_RSP_FIXED_SIZE )
200 #define ATT_FIND_BY_TYPE_VALUE_REQ_FIXED_SIZE 6
201 #define ATT_FIND_BY_TYPE_VALUE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_FIND_BY_TYPE_VALUE_REQ_FIXED_SIZE )
202 #define ATT_READ_BY_TYPE_REQ_FIXED_SIZE 4
203 #define ATT_READ_BY_TYPE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_READ_BY_TYPE_REQ_FIXED_SIZE )
204 #define ATT_READ_BY_TYPE_RSP_FIXED_SIZE 1
205 #define ATT_READ_BY_TYPE_RSP_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_READ_BY_TYPE_RSP_FIXED_SIZE )
206 #define ATT_READ_REQ_SIZE 2
207 #define ATT_READ_BY_GRP_TYPE_RSP_FIXED_SIZE 1
208 #define ATT_READ_BY_GRP_TYPE_RSP_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_READ_BY_GRP_TYPE_RSP_FIXED_SIZE )
209 #define ATT_WRITE_REQ_FIXED_SIZE 2
210 #define ATT_READ_BLOB_REQ_SIZE 4
211 #define ATT_WRITE_REQ_FIXED_SIZE 2
212 #define ATT_WRITE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_WRITE_REQ_FIXED_SIZE )
213 #define ATT_PREPARE_WRITE_REQ_FIXED_SIZE 4
214 #define ATT_PREPARE_WRITE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_PREPARE_WRITE_REQ_FIXED_SIZE )
215 #define ATT_PREPARE_WRITE_RSP_FIXED_SIZE 4
216 #define ATT_EXECUTE_WRITE_REQ_SIZE 1
217 #define ATT_HANDLE_VALUE_IND_FIXED_SIZE 2
218 #define ATT_HANDLE_VALUE_IND_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_HANDLE_VALUE_IND_FIXED_SIZE )
219 #define ATT_AUTHEN_SIG_LEN 12
220 
222 /*********************************************************************
223  * VARIABLES
224  */
225 
227 extern CONST uint8 btBaseUUID[ATT_UUID_SIZE];
229 
230 /*********************************************************************
231  * MACROS
232  */
234 #define ATT_WRITE_COMMAND( method, cmd ) ( ( (method) == ATT_WRITE_REQ ) && ( (cmd) == TRUE ) )
235 
236 /*********************************************************************
237  * ATT Find Info Response macros
238  */
239 
241 
242 // Handle and 16-bit Bluetooth UUID pair indexes
243 #define ATT_BT_PAIR_HANDLE_IDX( i ) ( (i) * (2 + ATT_BT_UUID_SIZE) )
244 #define ATT_BT_PAIR_UUID_IDX( i ) ( ATT_BT_PAIR_HANDLE_IDX( (i) ) + 2 )
245 
246 #define ATT_BT_PAIR_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_BT_PAIR_HANDLE_IDX((i))], \
247  (info)[ATT_BT_PAIR_HANDLE_IDX((i))+1] ) )
248 #define ATT_BT_PAIR_UUID( info, i ) ( BUILD_UINT16( (info)[ATT_BT_PAIR_UUID_IDX((i))], \
249  (info)[ATT_BT_PAIR_UUID_IDX((i))+1] ) )
250 
251 // Handle and 128-bit UUID pair indexes
252 #define ATT_PAIR_HANDLE_IDX( i ) ( (i) * (2 + ATT_UUID_SIZE) )
253 #define ATT_PAIR_UUID_IDX( i ) ( ATT_PAIR_HANDLE_IDX( (i) ) + 2 )
254 
255 #define ATT_PAIR_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_PAIR_HANDLE_IDX((i))], \
256  (info)[ATT_PAIR_HANDLE_IDX((i))+1] ) )
257 
258 /*********************************************************************
259  * ATT Find By Type Value Response macros
260  */
261 // Attribute Handle and Group End Handle pair indexes
262 #define ATT_ATTR_HANDLE_IDX( i ) ( (i) * (2 + 2) )
263 #define ATT_GRP_END_HANDLE_IDX( i ) ( ATT_ATTR_HANDLE_IDX( (i) ) + 2 )
264 
265 #define ATT_ATTR_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_ATTR_HANDLE_IDX((i))], \
266  (info)[ATT_ATTR_HANDLE_IDX((i))+1] ) )
267 #define ATT_GRP_END_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_GRP_END_HANDLE_IDX((i))], \
268  (info)[ATT_GRP_END_HANDLE_IDX((i))+1] ) )
269 
270 /*********************************************************************
271  * ATT Read Multiple Request macros
272  */
273 // Attribute Handle index
274 #define ATT_HANDLE_IDX( i ) ( (i) * 2 )
275 
276 #define ATT_HANDLE( handles, i ) ( BUILD_UINT16( (handles)[ATT_HANDLE_IDX((i))], \
277  (handles)[ATT_HANDLE_IDX((i))+1] ) )
278 
280 
283 /*********************************************************************
284  * TYPEDEFS
285  */
286 
292 typedef struct
294 {
295  uint8 sig;
296  uint8 cmd;
297  uint8 method;
298  uint16 len;
299  uint8 *pParams;
300 } attPacket_t;
301 
303 typedef struct
304 {
305  uint8 len;
306  uint8 uuid[ATT_UUID_SIZE];
307 } attAttrType_t;
308 
310 typedef struct
311 {
312  uint8 len;
313  uint8 uuid[ATT_BT_UUID_SIZE];
315 
326 typedef struct
327 {
328  uint8 reqOpcode;
329  uint16 handle;
330  uint8 errCode;
331 } attErrorRsp_t;
332 
338 typedef struct
339 {
340  uint16 clientRxMTU;
342 
348 typedef struct
349 {
350  uint16 serverRxMTU;
352 
358 typedef struct
359 {
360  uint16 startHandle;
361  uint16 endHandle;
363 
365 typedef struct
366 {
367  uint16 handle;
368  uint8 uuid[ATT_BT_UUID_SIZE];
370 
372 typedef struct
373 {
374  uint16 handle;
375  uint8 uuid[ATT_UUID_SIZE];
377 
383 typedef struct
384 {
385  uint16 numInfo;
386  uint8 format;
387  uint8 *pInfo;
389 
395 typedef struct
396 {
397  uint16 startHandle;
398  uint16 endHandle;
400  uint16 len;
401  uint8 *pValue;
403 
405 typedef struct
406 {
407  uint16 handle;
408  uint16 grpEndHandle;
410 
416 typedef struct
417 {
418  uint16 numInfo;
419  uint8 *pHandlesInfo;
421 
427 typedef struct
428 {
429  uint16 startHandle;
430  uint16 endHandle;
433 
439 typedef struct
440 {
441  uint16 numPairs;
442  uint16 len;
443  uint8 *pDataList;
444  uint16 dataLen;
446 
452 typedef struct
453 {
454  uint16 handle;
455 } attReadReq_t;
456 
462 typedef struct
463 {
464  uint16 len;
465  uint8 *pValue;
466 } attReadRsp_t;
467 
473 typedef struct
474 {
475  uint16 handle;
476  uint16 offset;
478 
484 typedef struct
485 {
486  uint16 len;
487  uint8 *pValue;
489 
495 typedef struct
496 {
497  uint8 *pHandles;
498  uint16 numHandles;
500 
506 typedef struct
507 {
508  uint16 len;
509  uint8 *pValues;
511 
517 typedef struct
518 {
519  uint16 startHandle;
520  uint16 endHandle;
523 
529 typedef struct
530 {
531  uint16 numGrps;
532  uint16 len;
533  uint8 *pDataList;
535 
541 typedef struct
542 {
543  uint16 handle;
544  uint16 len;
545  uint8 *pValue;
546  uint8 sig;
547  uint8 cmd;
548 } attWriteReq_t;
549 
555 typedef struct
556 {
557  uint16 handle;
558  uint16 offset;
559  uint16 len;
560  uint8 *pValue;
562 
568 typedef struct
569 {
570  uint16 handle;
571  uint16 offset;
572  uint16 len;
573  uint8 *pValue;
575 
581 typedef struct
582 {
583  uint8 flags;
586 
592 typedef struct
593 {
594  uint16 handle;
595  uint16 len;
596  uint8 *pValue;
598 
604 typedef struct
605 {
606  uint16 handle;
607  uint16 len;
608  uint8 *pValue;
610 
628 typedef struct
629 {
630  uint8 opcode;
633 
644 typedef struct
645 {
646  uint16 MTU;
648 
658 typedef union
659 {
660  // Request messages
672 
673  // Response messages
684 
685  // Indication and Notification messages
688 
689  // Locally-generated event messages
692 } attMsg_t;
693 
696 
698 // Function prototype to notify GATT Server or Client about an outgoing ATT message.
699 typedef void (*attNotifyTxCB_t)( uint16 connHandle, uint8 opcode );
700 
701 /*********************************************************************
702  * VARIABLES
703  */
704 
705 /*********************************************************************
706  * API FUNCTIONS
707  */
708 
709 /*-------------------------------------------------------------------
710  * General Utility APIs
711  */
712 
713 /*
714  * Parse an attribute protocol message.
715  */
716 extern uint8 ATT_ParsePacket( l2capDataEvent_t *pL2capMsg, attPacket_t *pPkt );
717 
718 /*
719  * Compare two UUIDs. The UUIDs are converted if necessary.
720  */
721 extern uint8 ATT_CompareUUID( const uint8 *pUUID1, uint16 len1,
722  const uint8 *pUUID2, uint16 len2 );
723 /*
724  * Convert a 16-bit UUID to 128-bit UUID.
725  */
726 extern uint8 ATT_ConvertUUIDto128( const uint8 *pUUID16, uint8 *pUUID128 );
727 
728 /*
729  * Convert a 128-bit UUID to 16-bit UUID.
730  */
731 extern uint8 ATT_ConvertUUIDto16( const uint8 *pUUID128, uint8 *pUUID16 );
732 
733 
734 /*-------------------------------------------------------------------
735  * Attribute Client Utility APIs
736  */
737 
738 /*
739  * Build Error Response.
740  */
741 extern uint16 ATT_BuildErrorRsp( uint8 *pBuf, uint8 *pMsg );
742 
743 /*
744  * Parse Error Response.
745  */
746 extern bStatus_t ATT_ParseErrorRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
747 
748 /*
749  * Build Exchange MTU Request.
750  */
751 extern uint16 ATT_BuildExchangeMTUReq( uint8 *pBuf, uint8 *pMsg );
752 
753 /*
754  * Build Exchange MTU Response.
755  */
756 extern uint16 ATT_BuildExchangeMTURsp( uint8 *pBuf, uint8 *pMsg );
757 
758 /*
759  * Parse Exchange MTU Response.
760  */
761 extern bStatus_t ATT_ParseExchangeMTURsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
762 
763 /*
764  * Build Find Information Request.
765  */
766 extern uint16 ATT_BuildFindInfoReq( uint8 *pBuf, uint8 *pMsg );
767 
768 /*
769  * Parse Find Information Response.
770  */
771 extern bStatus_t ATT_ParseFindInfoRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
772 
773 /*
774  * Build Find Information Response.
775  */
776 extern uint16 ATT_BuildFindInfoRsp( uint8 *pBuf, uint8 *pMsg );
777 
778 /*
779  * Build Find By Type Value Request.
780  */
781 extern uint16 ATT_BuildFindByTypeValueReq( uint8 *pBuf, uint8 *pMsg );
782 
783 /*
784  * Build Find By Type Value Response.
785  */
786 extern uint16 ATT_BuildFindByTypeValueRsp( uint8 *pBuf, uint8 *pMsg );
787 
788 /*
789  * Parse Find By Type Value Response.
790  */
791 extern bStatus_t ATT_ParseFindByTypeValueRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
792 
793 /*
794  * Build Read By Type Request.
795  */
796 extern uint16 ATT_BuildReadByTypeReq( uint8 *pBuf, uint8 *pMsg );
797 
798 /*
799  * Build Read By Type Response.
800  */
801 extern uint16 ATT_BuildReadByTypeRsp( uint8 *pBuf, uint8 *pMsg );
802 
803 /*
804  * Parse Read By Type Response.
805  */
806 extern bStatus_t ATT_ParseReadByTypeRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
807 
808 /*
809  * Build Read Request.
810  */
811 extern uint16 ATT_BuildReadReq( uint8 *pBuf, uint8 *pMsg );
812 
813 /*
814  * Build Read Response.
815  */
816 extern uint16 ATT_BuildReadRsp( uint8 *pBuf, uint8 *pMsg );
817 
818 /*
819  * Parse Read Response.
820  */
821 extern bStatus_t ATT_ParseReadRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
822 
823 /*
824  * Build Read Blob Request.
825  */
826 extern uint16 ATT_BuildReadBlobReq( uint8 *pBuf, uint8 *pMsg );
827 
828 /*
829  * Build Read Blob Response.
830  */
831 extern uint16 ATT_BuildReadBlobRsp( uint8 *pBuf, uint8 *pMsg );
832 
833 /*
834  * Parse Read Blob Response.
835  */
836 extern bStatus_t ATT_ParseReadBlobRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
837 
838 /*
839  * Build Read Multiple Request.
840  */
841 extern uint16 ATT_BuildReadMultiReq( uint8 *pBuf, uint8 *pMsg );
842 
843 /*
844  * Build Read Multiple Response.
845  */
846 extern uint16 ATT_BuildReadMultiRsp( uint8 *pBuf, uint8 *pMsg );
847 
848 /*
849  * Parse Read Multiple Response.
850  */
851 extern bStatus_t ATT_ParseReadMultiRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
852 
853 /*
854  * Build Read By Group Type Response.
855  */
856 extern uint16 ATT_BuildReadByGrpTypeRsp( uint8 *pBuf, uint8 *pMsg );
857 
858 /*
859  * Parse Read By Group Type Response.
860  */
861 extern bStatus_t ATT_ParseReadByGrpTypeRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
862 
863 /*
864  * Build Write Request.
865  */
866 extern uint16 ATT_BuildWriteReq( uint8 *pBuf, uint8 *pMsg );
867 
868 /*
869  * Parse Write Response.
870  */
871 extern bStatus_t ATT_ParseWriteRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
872 
873 /*
874  * Build Prepare Write Request.
875  */
876 extern uint16 ATT_BuildPrepareWriteReq( uint8 *pBuf, uint8 *pMsg );
877 
878 /*
879  * Build Prepare Write Response.
880  */
881 extern uint16 ATT_BuildPrepareWriteRsp( uint8 *pBuf, uint8 *pMsg );
882 
883 /*
884  * Parse Prepare Write Response.
885  */
886 extern bStatus_t ATT_ParsePrepareWriteRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
887 
888 /*
889  * Build Execute Write Request.
890  */
891 extern uint16 ATT_BuildExecuteWriteReq( uint8 *pBuf, uint8 *pMsg );
892 
893 /*
894  * Parse Execute Write Response.
895  */
896 extern bStatus_t ATT_ParseExecuteWriteRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
897 
898 /*
899  * Build Handle Value Indication.
900  */
901 extern uint16 ATT_BuildHandleValueInd( uint8 *pBuf, uint8 *pMsg );
902 
903 /*
904  * Parse Handle Value Indication.
905  */
906 extern bStatus_t ATT_ParseHandleValueInd( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
907 
908 
909 /*-------------------------------------------------------------------
910  * Attribute Server Utility APIs
911  */
912 
913 /*
914  * Parse Exchange MTU Request.
915  */
916 extern bStatus_t ATT_ParseExchangeMTUReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
917 
918 /*
919  * Parse Find Information Request.
920  */
921 extern bStatus_t ATT_ParseFindInfoReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
922 
923 /*
924  * Parse Find By Type Value Request.
925  */
926 extern bStatus_t ATT_ParseFindByTypeValueReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
927 
928 /*
929  * Parse Read By Type Request.
930  */
931 extern bStatus_t ATT_ParseReadByTypeReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
932 
933 /*
934  * Parse Read Request.
935  */
936 extern bStatus_t ATT_ParseReadReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
937 
938 /*
939  * Parse Write Blob Request.
940  */
941 extern bStatus_t ATT_ParseReadBlobReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
942 
943 /*
944  * Parse Read Multiple Request.
945  */
946 extern bStatus_t ATT_ParseReadMultiReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
947 
948 /*
949  * Parse Write Request.
950  */
951 extern bStatus_t ATT_ParseWriteReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
952 
953 /*
954  * Parse Execute Write Request.
955  */
956 extern bStatus_t ATT_ParseExecuteWriteReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
957 
958 /*
959  * Parse Prepare Write Request.
960  */
961 extern bStatus_t ATT_ParsePrepareWriteReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
962 
963 /*
964  * Parse Handle Value Confirmation.
965  */
966 extern bStatus_t ATT_ParseHandleValueCfm( uint8 *pParams, uint16 len, attMsg_t *pMsg );
967 
969 
970 /*-------------------------------------------------------------------
971  * Attribute Client Public APIs
972  */
973 
992 extern bStatus_t ATT_ExchangeMTUReq( uint16 connHandle, attExchangeMTUReq_t *pReq );
993 
1006 extern bStatus_t ATT_FindInfoReq( uint16 connHandle, attFindInfoReq_t *pReq );
1007 
1020 extern bStatus_t ATT_FindByTypeValueReq( uint16 connHandle, attFindByTypeValueReq_t *pReq );
1021 
1034 extern bStatus_t ATT_ReadByTypeReq( uint16 connHandle, attReadByTypeReq_t *pReq );
1035 
1048 extern bStatus_t ATT_ReadReq( uint16 connHandle, attReadReq_t *pReq );
1049 
1062 extern bStatus_t ATT_ReadBlobReq( uint16 connHandle, attReadBlobReq_t *pReq );
1063 
1076 extern bStatus_t ATT_ReadMultiReq( uint16 connHandle, attReadMultiReq_t *pReq );
1077 
1090 extern bStatus_t ATT_ReadByGrpTypeReq( uint16 connHandle, attReadByGrpTypeReq_t *pReq );
1091 
1105 extern bStatus_t ATT_WriteReq( uint16 connHandle, attWriteReq_t *pReq );
1106 
1119 extern bStatus_t ATT_PrepareWriteReq( uint16 connHandle, attPrepareWriteReq_t *pReq );
1120 
1133 extern bStatus_t ATT_ExecuteWriteReq( uint16 connHandle, attExecuteWriteReq_t *pReq );
1134 
1146 extern bStatus_t ATT_HandleValueCfm( uint16 connHandle );
1147 
1148 
1149 /*-------------------------------------------------------------------
1150  * Attribute Server Public APIs
1151  */
1152 
1165 extern bStatus_t ATT_ErrorRsp( uint16 connHandle, attErrorRsp_t *pRsp );
1166 
1179 extern bStatus_t ATT_ExchangeMTURsp( uint16 connHandle, attExchangeMTURsp_t *pRsp );
1180 
1193 extern bStatus_t ATT_FindInfoRsp( uint16 connHandle, attFindInfoRsp_t *pRsp );
1194 
1207 extern bStatus_t ATT_FindByTypeValueRsp( uint16 connHandle, attFindByTypeValueRsp_t *pRsp );
1208 
1221 extern bStatus_t ATT_ReadByTypeRsp( uint16 connHandle, attReadByTypeRsp_t *pRsp );
1222 
1235 extern bStatus_t ATT_ReadRsp( uint16 connHandle, attReadRsp_t *pRsp );
1236 
1249 extern bStatus_t ATT_ReadBlobRsp( uint16 connHandle, attReadBlobRsp_t *pRsp );
1250 
1263 extern bStatus_t ATT_ReadMultiRsp( uint16 connHandle, attReadMultiRsp_t *pRsp ) ;
1264 
1277 extern bStatus_t ATT_ReadByGrpTypeRsp( uint16 connHandle, attReadByGrpTypeRsp_t *pRsp );
1278 
1290 extern bStatus_t ATT_WriteRsp( uint16 connHandle );
1291 
1304 extern bStatus_t ATT_PrepareWriteRsp( uint16 connHandle, attPrepareWriteRsp_t *pRsp );
1305 
1317 extern bStatus_t ATT_ExecuteWriteRsp( uint16 connHandle );
1318 
1331 extern bStatus_t ATT_HandleValueNoti( uint16 connHandle, attHandleValueNoti_t *pNoti );
1332 
1345 extern bStatus_t ATT_HandleValueInd( uint16 connHandle, attHandleValueInd_t *pInd );
1346 
1347 /*-------------------------------------------------------------------
1348  * Attribute Common Public APIs
1349  */
1350 
1360 extern uint8 ATT_UpdateMTU( uint16 connHandle, uint16 MTU );
1361 
1369 extern uint16 ATT_GetMTU( uint16 connHandle );
1370 
1377 extern void ATT_SetParamValue( uint16 value );
1378 
1384 extern uint16 ATT_GetParamValue( void );
1385 
1391 extern void ATT_RegisterServer( attNotifyTxCB_t pfnNotifyTx );
1392 
1398 extern void ATT_RegisterClient( attNotifyTxCB_t pfnNotifyTx );
1399 
1402 /*********************************************************************
1403 *********************************************************************/
1404 
1405 #ifdef __cplusplus
1406 }
1407 #endif
1408 
1409 #endif /* ATT_H */
1410 
uint16 endHandle
Last requested handle number.
Definition: att.h:361
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:454
uint16 len
Length of each attribute handle, end group handle and value set.
Definition: att.h:532
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:676
uint16 numInfo
Number of attribute handle-UUID pairs found.
Definition: att.h:385
attPrepareWriteRsp_t prepareWriteRsp
ATT Prepare Write Response.
Definition: att.h:683
L2CAP layer interface.
Exchange MTU Response format.
Definition: att.h:348
bStatus_t ATT_FindByTypeValueRsp(uint16 connHandle, attFindByTypeValueRsp_t *pRsp)
Send Find By Type Value Response.
Read Request.
Definition: att.h:452
uint16 numGrps
Number of attribute handle, end group handle and value sets found.
Definition: att.h:531
Find Information Response format.
Definition: att.h:383
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:419
bStatus_t ATT_ExchangeMTUReq(uint16 connHandle, attExchangeMTUReq_t *pReq)
Send Exchange MTU Request.
uint16 MTU
new MTU size
Definition: att.h:646
attReadByGrpTypeReq_t readByGrpTypeReq
ATT Read By Group Type Request.
Definition: att.h:668
uint16 numHandles
Number of attribute handles.
Definition: att.h:498
attPrepareWriteReq_t prepareWriteReq
ATT Prepare Write Request.
Definition: att.h:670
attAttrBtType_t type
2-octet UUID to find
Definition: att.h:399
uint8 reqOpcode
Request that generated this error response.
Definition: att.h:328
bStatus_t ATT_FindInfoRsp(uint16 connHandle, attFindInfoRsp_t *pRsp)
Send Find Information Response.
attMtuUpdatedEvt_t mtuEvt
ATT MTU Updated Event.
Definition: att.h:691
Find Information Request format.
Definition: att.h:358
Read Response.
Definition: att.h:462
Handle and its 128-bit UUID.
Definition: att.h:372
attErrorRsp_t errorRsp
ATT Error Response.
Definition: att.h:674
bStatus_t ATT_ExchangeMTURsp(uint16 connHandle, attExchangeMTURsp_t *pRsp)
Send Exchange MTU Response.
attHandleValueNoti_t handleValueNoti
ATT Handle Value Notification.
Definition: att.h:686
Error Response format.
Definition: att.h:326
attAttrType_t type
Requested group type (2 or 16 octet UUID)
Definition: att.h:521
Find By Type Value Request format.
Definition: att.h:395
uint8 sig
Authentication Signature status (not included (0), valid (1), invalid (2))
Definition: att.h:295
uint8 * pHandles
Set of two or more attribute handles (4 to ATT_MTU_SIZE-1) - must be first field. ...
Definition: att.h:497
#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:558
#define ATT_UUID_SIZE
Size of 128-bit UUID.
Definition: att.h:117
Write Request format.
Definition: att.h:541
uint8 flags
Definition: att.h:583
void ATT_RegisterClient(attNotifyTxCB_t pfnNotifyTx)
Register the client's notify Tx function with the ATT layer.
uint8 cmd
Command Flag.
Definition: att.h:547
uint16 len
Length of value.
Definition: att.h:486
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:572
uint8 * pDataList
List of 1 or more attribute handle-value pairs (2 to ATT_MTU_SIZE-2)
Definition: att.h:443
attReadMultiReq_t readMultiReq
ATT Read Multiple Request.
Definition: att.h:667
uint8 * pValue
Part of the value of the attribute to be written (0 to ATT_MTU_SIZE-5) - must be allocated.
Definition: att.h:560
uint16 len
Length of value.
Definition: att.h:464
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:397
uint16 handle
Handle of the attribute that has been read.
Definition: att.h:570
uint8 opcode
opcode of message that caused flow control violation
Definition: att.h:630
attFindInfoReq_t findInfoReq
ATT Find Information Request.
Definition: att.h:662
uint16 numPairs
Number of attribute handle-UUID pairs found.
Definition: att.h:441
attReadRsp_t readRsp
ATT Read Response.
Definition: att.h:679
bStatus_t ATT_PrepareWriteReq(uint16 connHandle, attPrepareWriteReq_t *pReq)
Send Prepare Write Request.
attHandleValueInd_t handleValueInd
ATT Handle Value Indication.
Definition: att.h:687
uint16 clientRxMTU
Client receive MTU size.
Definition: att.h:340
uint8 format
Format of information data.
Definition: att.h:386
uint16 offset
Offset of the first octet to be read.
Definition: att.h:476
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:360
uint16 len
Length of Attribute Parameters.
Definition: att.h:298
uint8 sig
Authentication Signature status (not included (0), valid (1), invalid (2))
Definition: att.h:546
Read By Group Type Response format.
Definition: att.h:529
attReadByTypeRsp_t readByTypeRsp
ATT Read By Type Response.
Definition: att.h:678
uint16 ATT_GetParamValue(void)
Get a ATT Parameter value.
ATT MTU Updated Event message format.
Definition: att.h:644
bStatus_t ATT_FindByTypeValueReq(uint16 connHandle, attFindByTypeValueReq_t *pReq)
Send Find By Type Value Request.
uint16 len
Length of values.
Definition: att.h:508
attExchangeMTUReq_t exchangeMTUReq
ATT Exchange MTU Request.
Definition: att.h:661
uint16 endHandle
Last requested handle number.
Definition: att.h:398
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:303
Read Multiple Response format.
Definition: att.h:506
bStatus_t ATT_HandleValueInd(uint16 connHandle, attHandleValueInd_t *pInd)
Send Handle Value Indication.
Read Blob Response format.
Definition: att.h:484
bStatus_t ATT_ReadByTypeRsp(uint16 connHandle, attReadByTypeRsp_t *pRsp)
Send Read By Type Respond.
attReadBlobReq_t readBlobReq
ATT Read Blob Request.
Definition: att.h:666
bStatus_t ATT_WriteRsp(uint16 connHandle)
Send Write Response.
uint16 endHandle
Last requested handle number.
Definition: att.h:430
Attribute Type format (2-octet Bluetooth UUID).
Definition: att.h:310
uint16 serverRxMTU
Server receive MTU size.
Definition: att.h:350
uint8 method
Method.
Definition: att.h:297
uint8 * pParams
Attribute Parameters.
Definition: att.h:299
uint16 offset
Offset of the first octet to be written.
Definition: att.h:571
uint8 * pValue
Value of the attribute to be written (0 to ATT_MTU_SIZE-3)
Definition: att.h:545
uint16 len
Length of value.
Definition: att.h:595
Read Blob Request format.
Definition: att.h:473
uint8 cmd
Command Flag.
Definition: att.h:296
uint8 * pValue
Part of the value of the attribute to be written (0 to ATT_MTU_SIZE-5)
Definition: att.h:573
Find By Type Value Response format.
Definition: att.h:416
bStatus_t ATT_PrepareWriteRsp(uint16 connHandle, attPrepareWriteRsp_t *pRsp)
Send Prepare Write Response.
ATT Flow Control Violated Event message format.
Definition: att.h:628
Read By Type Request format.
Definition: att.h:427
uint8 * pValue
Attribute value to find (0 to ATT_MTU_SIZE-7)
Definition: att.h:401
Read Multiple Request format.
Definition: att.h:495
uint8 * pValue
Current value of the attribute (0 to ATT_MTU_SIZE-3)
Definition: att.h:608
uint8 len
Length of UUID (2 or 16)
Definition: att.h:305
uint16 len
Length of value.
Definition: att.h:559
uint16 handle
Attribute handle that generated error response.
Definition: att.h:329
uint8 * pInfo
Information data whose format is determined by format field (4 to ATT_MTU_SIZE-2) ...
Definition: att.h:387
Handle Value Indication format.
Definition: att.h:604
uint16 handle
Handle of the attribute to be read (must be first field)
Definition: att.h:475
attExecuteWriteReq_t executeWriteReq
ATT Execute Write Request.
Definition: att.h:671
Type definitions and macros for BLE stack.
Handle Value Notification format.
Definition: att.h:592
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:429
uint16 handle
Handle of the attribute to be written (must be first field)
Definition: att.h:557
uint16 endHandle
Last requested handle number.
Definition: att.h:520
bStatus_t ATT_ReadBlobReq(uint16 connHandle, attReadBlobReq_t *pReq)
Send Read Blob Request.
ATT Message format.
Definition: att.h:658
attReadBlobRsp_t readBlobRsp
ATT Read Blob Response.
Definition: att.h:680
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:533
uint16 handle
Handle of the attribute to be written (must be first field)
Definition: att.h:543
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:607
bStatus_t ATT_ExecuteWriteRsp(uint16 connHandle)
Send Execute Write Response.
attFlowCtrlViolatedEvt_t flowCtrlEvt
ATT Flow Control Violated Event.
Definition: att.h:690
uint16 handle
Handle of the attribute that has been changed (must be first field)
Definition: att.h:606
bStatus_t ATT_ReadReq(uint16 connHandle, attReadReq_t *pReq)
Send Read Request.
Exchange MTU Request format.
Definition: att.h:338
uint16 grpEndHandle
Group end handle.
Definition: att.h:408
uint16 len
Size of each attribute handle-value pair.
Definition: att.h:442
Attribute Protocol PDU format.
Definition: att.h:293
uint8 * pValue
Value of the attribute with the handle given (0 to ATT_MTU_SIZE-1)
Definition: att.h:465
uint8 * pValue
Part of the value of the attribute with the handle given (0 to ATT_MTU_SIZE-1)
Definition: att.h:487
uint16 dataLen
Length of data written into pDataList. Not part of actual ATT Response.
Definition: att.h:444
attAttrType_t type
Requested type (2 or 16 octet UUID)
Definition: att.h:431
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:517
uint16 handle
Handle.
Definition: att.h:367
attReadByTypeReq_t readByTypeReq
ATT Read By Type Request.
Definition: att.h:664
Handle and its 16-bit Bluetooth UUIDs.
Definition: att.h:365
uint16 len
Length of value.
Definition: att.h:544
attReadByGrpTypeRsp_t readByGrpTypeRsp
ATT Read By Group Type Response.
Definition: att.h:682
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:631
uint8 len
Length of UUID (2)
Definition: att.h:312
Read By Type Response format.
Definition: att.h:439
Prepare Write Response format.
Definition: att.h:568
uint16 handle
Handle.
Definition: att.h:374
uint16 numInfo
Number of handles information found.
Definition: att.h:418
Prepare Write Request format.
Definition: att.h:555
attExchangeMTURsp_t exchangeMTURsp
ATT Exchange MTU Response.
Definition: att.h:675
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:663
bStatus_t ATT_WriteReq(uint16 connHandle, attWriteReq_t *pReq)
Send Write Request.
attReadReq_t readReq
ATT Read Request.
Definition: att.h:665
bStatus_t ATT_HandleValueNoti(uint16 connHandle, attHandleValueNoti_t *pNoti)
Send Handle Value Notification.
attReadMultiRsp_t readMultiRsp
ATT Read Multiple Response.
Definition: att.h:681
attWriteReq_t writeReq
ATT Write Request.
Definition: att.h:669
uint8 * pValues
Set of two or more values (0 to ATT_MTU_SIZE-1)
Definition: att.h:509
uint16 len
Length of value.
Definition: att.h:400
attFindByTypeValueRsp_t findByTypeValueRsp
ATT Find By Type Value Response.
Definition: att.h:677
uint8 * pValue
Current value of the attribute (0 to ATT_MTU_SIZE-3)
Definition: att.h:596
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:407
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:519
uint8 errCode
Reason why the request has generated error response.
Definition: att.h:330
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:581
uint16 handle
Handle of the attribute that has been changed (must be first field)
Definition: att.h:594
bStatus_t ATT_ErrorRsp(uint16 connHandle, attErrorRsp_t *pRsp)
Send Error Response.
Handles Information format.
Definition: att.h:405
© Copyright 1995-2022, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale