BLE-Stack APIs  1.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 
27 #ifndef ATT_H
28 #define ATT_H
29 
30 #ifdef __cplusplus
31 extern "C"
32 {
33 #endif
34 
35 /*********************************************************************
36  * INCLUDES
37  */
38 #include "bcomdef.h"
39 #include "osal.h"
40 
41 #include "l2cap.h"
42 
43 /*********************************************************************
44  * CONSTANTS
45  */
46 
59 #define ATT_MTU_SIZE L2CAP_MTU_SIZE
60 #define ATT_MAX_MTU_SIZE (255-L2CAP_HDR_SIZE)
61 
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 
93 #define ATT_WRITE_CMD 0x52
94 #define ATT_SIGNED_WRITE_CMD 0xD2
95 
100 #define ATT_TRANSACTION_READY_EVENT 0x7D
101 #define ATT_FLOW_CTRL_VIOLATED_EVENT 0x7E
102 #define ATT_MTU_UPDATED_EVENT 0x7F
103 
109 #define ATT_METHOD_BITS 0x3f
110 #define ATT_CMD_FLAG_BIT 0x40
111 #define ATT_AUTHEN_SIG_FLAG_BIT 0x80
112 #define ATT_BT_UUID_SIZE 2
113 #define ATT_UUID_SIZE 16
114 #define ATT_MSG_TIMEOUT 30
115 
121 #define ATT_SIG_NOT_INCLUDED 0x00
122 #define ATT_SIG_VALID 0x01
123 #define ATT_SIG_INVALID 0x02
124 
126 /*********************************************************************
127  * Error Response: Error Code
128  */
129 
133 #define ATT_ERR_INVALID_HANDLE 0x01
134 #define ATT_ERR_READ_NOT_PERMITTED 0x02
135 #define ATT_ERR_WRITE_NOT_PERMITTED 0x03
136 #define ATT_ERR_INVALID_PDU 0x04
137 #define ATT_ERR_INSUFFICIENT_AUTHEN 0x05
138 #define ATT_ERR_UNSUPPORTED_REQ 0x06
139 #define ATT_ERR_INVALID_OFFSET 0x07
140 #define ATT_ERR_INSUFFICIENT_AUTHOR 0x08
141 #define ATT_ERR_PREPARE_QUEUE_FULL 0x09
142 #define ATT_ERR_ATTR_NOT_FOUND 0x0a
143 #define ATT_ERR_ATTR_NOT_LONG 0x0b
144 #define ATT_ERR_INSUFFICIENT_KEY_SIZE 0x0c
145 #define ATT_ERR_INVALID_VALUE_SIZE 0x0d
146 #define ATT_ERR_UNLIKELY 0x0e
147 #define ATT_ERR_INSUFFICIENT_ENCRYPT 0x0f
148 #define ATT_ERR_UNSUPPORTED_GRP_TYPE 0x10
149 #define ATT_ERR_INSUFFICIENT_RESOURCES 0x11
150 
151 /*** Reserved for future use: 0x12 - 0x7F ***/
152 
153 /*** Application error code defined by a higher layer specification: 0x80-0x9F ***/
154 
155 #define ATT_ERR_INVALID_VALUE 0x80
156 
158 /*********************************************************************
159  * Find Information Response: UUID Format
160  */
161 #define ATT_HANDLE_BT_UUID_TYPE 0x01
162 #define ATT_HANDLE_UUID_TYPE 0x02
163 
164 /*********************************************************************
165  * Read Multiple Request: Handles
166  */
167 #define ATT_MIN_NUM_HANDLES 2
168 
169 /*********************************************************************
170  * Execute Write Request: Flags
171  */
172 #define ATT_CANCEL_PREPARED_WRITES 0x00
173 #define ATT_WRITE_PREPARED_VALUES 0x01
174 
175 #if defined ( TESTMODES )
176  #define ATT_TESTMODE_OFF 0
178  #define ATT_TESTMODE_UNAUTHEN_SIG 1
179 #endif
180 
184 #define ATT_OPCODE_SIZE 1
185 #define ATT_EXCHANGE_MTU_REQ_SIZE 2
186 #define ATT_EXCHANGE_MTU_RSP_SIZE 2
187 #define ATT_ERROR_RSP_SIZE 4
188 #define ATT_FIND_INFO_REQ_FIXED_SIZE 4
189 #define ATT_FIND_INFO_RSP_FIXED_SIZE 1
190 #define ATT_FIND_INFO_RSP_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_FIND_INFO_RSP_FIXED_SIZE )
191 #define ATT_FIND_BY_TYPE_VALUE_REQ_FIXED_SIZE 6
192 #define ATT_FIND_BY_TYPE_VALUE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_FIND_BY_TYPE_VALUE_REQ_FIXED_SIZE )
193 #define ATT_READ_BY_TYPE_REQ_FIXED_SIZE 4
194 #define ATT_READ_BY_TYPE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_READ_BY_TYPE_REQ_FIXED_SIZE )
195 #define ATT_READ_BY_TYPE_RSP_FIXED_SIZE 1
196 #define ATT_READ_BY_TYPE_RSP_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_READ_BY_TYPE_RSP_FIXED_SIZE )
197 #define ATT_READ_REQ_SIZE 2
198 #define ATT_READ_BY_GRP_TYPE_RSP_FIXED_SIZE 1
199 #define ATT_READ_BY_GRP_TYPE_RSP_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_READ_BY_GRP_TYPE_RSP_FIXED_SIZE )
200 #define ATT_WRITE_REQ_FIXED_SIZE 2
201 #define ATT_READ_BLOB_REQ_SIZE 4
202 #define ATT_WRITE_REQ_FIXED_SIZE 2
203 #define ATT_WRITE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_WRITE_REQ_FIXED_SIZE )
204 #define ATT_PREPARE_WRITE_REQ_FIXED_SIZE 4
205 #define ATT_PREPARE_WRITE_REQ_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_PREPARE_WRITE_REQ_FIXED_SIZE )
206 #define ATT_PREPARE_WRITE_RSP_FIXED_SIZE 4
207 #define ATT_EXECUTE_WRITE_REQ_SIZE 1
208 #define ATT_HANDLE_VALUE_IND_FIXED_SIZE 2
209 #define ATT_HANDLE_VALUE_IND_HDR_SIZE ( ATT_OPCODE_SIZE + ATT_HANDLE_VALUE_IND_FIXED_SIZE )
210 #define ATT_AUTHEN_SIG_LEN 12
211 
213 /*********************************************************************
214  * VARIABLES
215  */
216 
218 extern CONST uint8 btBaseUUID[ATT_UUID_SIZE];
220 
221 /*********************************************************************
222  * MACROS
223  */
225 #define ATT_WRITE_COMMAND( method, cmd ) ( ( (method) == ATT_WRITE_REQ ) && ( (cmd) == TRUE ) )
226 
227 /*********************************************************************
228  * ATT Find Info Response macros
229  */
230 
232 
233 // Handle and 16-bit Bluetooth UUID pair indexes
234 #define ATT_BT_PAIR_HANDLE_IDX( i ) ( (i) * (2 + ATT_BT_UUID_SIZE) )
235 #define ATT_BT_PAIR_UUID_IDX( i ) ( ATT_BT_PAIR_HANDLE_IDX( (i) ) + 2 )
236 
237 #define ATT_BT_PAIR_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_BT_PAIR_HANDLE_IDX((i))], \
238  (info)[ATT_BT_PAIR_HANDLE_IDX((i))+1] ) )
239 #define ATT_BT_PAIR_UUID( info, i ) ( BUILD_UINT16( (info)[ATT_BT_PAIR_UUID_IDX((i))], \
240  (info)[ATT_BT_PAIR_UUID_IDX((i))+1] ) )
241 
242 // Handle and 128-bit UUID pair indexes
243 #define ATT_PAIR_HANDLE_IDX( i ) ( (i) * (2 + ATT_UUID_SIZE) )
244 #define ATT_PAIR_UUID_IDX( i ) ( ATT_PAIR_HANDLE_IDX( (i) ) + 2 )
245 
246 #define ATT_PAIR_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_PAIR_HANDLE_IDX((i))], \
247  (info)[ATT_PAIR_HANDLE_IDX((i))+1] ) )
248 
249 /*********************************************************************
250  * ATT Find By Type Value Response macros
251  */
252 // Attribute Handle and Group End Handle pair indexes
253 #define ATT_ATTR_HANDLE_IDX( i ) ( (i) * (2 + 2) )
254 #define ATT_GRP_END_HANDLE_IDX( i ) ( ATT_ATTR_HANDLE_IDX( (i) ) + 2 )
255 
256 #define ATT_ATTR_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_ATTR_HANDLE_IDX((i))], \
257  (info)[ATT_ATTR_HANDLE_IDX((i))+1] ) )
258 #define ATT_GRP_END_HANDLE( info, i ) ( BUILD_UINT16( (info)[ATT_GRP_END_HANDLE_IDX((i))], \
259  (info)[ATT_GRP_END_HANDLE_IDX((i))+1] ) )
260 
261 /*********************************************************************
262  * ATT Read Multiple Request macros
263  */
264 // Attribute Handle index
265 #define ATT_HANDLE_IDX( i ) ( (i) * 2 )
266 
267 #define ATT_HANDLE( handles, i ) ( BUILD_UINT16( (handles)[ATT_HANDLE_IDX((i))], \
268  (handles)[ATT_HANDLE_IDX((i))+1] ) )
269 
271 
274 /*********************************************************************
275  * TYPEDEFS
276  */
277 
282 typedef struct
284 {
285  uint8 sig;
286  uint8 cmd;
287  uint8 method;
288  uint16 len;
289  uint8 *pParams;
290 } attPacket_t;
291 
293 typedef struct
294 {
295  uint8 len;
296  uint8 uuid[ATT_UUID_SIZE];
297 } attAttrType_t;
298 
300 typedef struct
301 {
302  uint8 len;
303  uint8 uuid[ATT_BT_UUID_SIZE];
305 
315 typedef struct
316 {
317  uint8 reqOpcode;
318  uint16 handle;
319  uint8 errCode;
320 } attErrorRsp_t;
321 
327 typedef struct
328 {
329  uint16 clientRxMTU;
331 
337 typedef struct
338 {
339  uint16 serverRxMTU;
341 
347 typedef struct
348 {
349  uint16 startHandle;
350  uint16 endHandle;
352 
354 typedef struct
355 {
356  uint16 handle;
357  uint8 uuid[ATT_BT_UUID_SIZE];
359 
361 typedef struct
362 {
363  uint16 handle;
364  uint8 uuid[ATT_UUID_SIZE];
366 
372 typedef struct
373 {
374  uint16 numInfo;
375  uint8 format;
376  uint8 *pInfo;
378 
384 typedef struct
385 {
386  uint16 startHandle;
387  uint16 endHandle;
389  uint16 len;
390  uint8 *pValue;
392 
394 typedef struct
395 {
396  uint16 handle;
397  uint16 grpEndHandle;
399 
405 typedef struct
406 {
407  uint16 numInfo;
408  uint8 *pHandlesInfo;
410 
416 typedef struct
417 {
418  uint16 startHandle;
419  uint16 endHandle;
422 
428 typedef struct
429 {
430  uint16 numPairs;
431  uint16 len;
432  uint8 *pDataList;
433  uint16 dataLen;
435 
441 typedef struct
442 {
443  uint16 handle;
444 } attReadReq_t;
445 
451 typedef struct
452 {
453  uint16 len;
454  uint8 *pValue;
455 } attReadRsp_t;
456 
462 typedef struct
463 {
464  uint16 handle;
465  uint16 offset;
467 
473 typedef struct
474 {
475  uint16 len;
476  uint8 *pValue;
478 
484 typedef struct
485 {
486  uint8 *pHandles;
487  uint16 numHandles;
489 
495 typedef struct
496 {
497  uint16 len;
498  uint8 *pValues;
500 
506 typedef struct
507 {
508  uint16 startHandle;
509  uint16 endHandle;
512 
518 typedef struct
519 {
520  uint16 numGrps;
521  uint16 len;
522  uint8 *pDataList;
524 
530 typedef struct
531 {
532  uint16 handle;
533  uint16 len;
534  uint8 *pValue;
535  uint8 sig;
536  uint8 cmd;
537 } attWriteReq_t;
538 
544 typedef struct
545 {
546  uint16 handle;
547  uint16 offset;
548  uint16 len;
549  uint8 *pValue;
551 
557 typedef struct
558 {
559  uint16 handle;
560  uint16 offset;
561  uint16 len;
562  uint8 *pValue;
564 
570 typedef struct
571 {
572  uint8 flags;
575 
581 typedef struct
582 {
583  uint16 handle;
584  uint16 len;
585  uint8 *pValue;
587 
593 typedef struct
594 {
595  uint16 handle;
596  uint16 len;
597  uint8 *pValue;
599 
617 typedef struct
618 {
619  uint8 opcode;
622 
633 typedef struct
634 {
635  uint16 MTU;
637 
647 typedef union
648 {
649  // Request messages
661 
662  // Response messages
673 
674  // Indication and Notification messages
677 
678  // Locally-generated event messages
681 } attMsg_t;
682 
685 
687 // Function prototype to notify GATT Server or Client about an outgoing ATT message.
688 typedef void (*attNotifyTxCB_t)( uint16 connHandle, uint8 opcode );
689 
690 /*********************************************************************
691  * VARIABLES
692  */
693 
694 /*********************************************************************
695  * API FUNCTIONS
696  */
697 
698 /*-------------------------------------------------------------------
699  * General Utility APIs
700  */
701 
702 /*
703  * Parse an attribute protocol message.
704  */
705 extern uint8 ATT_ParsePacket( l2capDataEvent_t *pL2capMsg, attPacket_t *pPkt );
706 
707 /*
708  * Compare two UUIDs. The UUIDs are converted if necessary.
709  */
710 extern uint8 ATT_CompareUUID( const uint8 *pUUID1, uint16 len1,
711  const uint8 *pUUID2, uint16 len2 );
712 /*
713  * Convert a 16-bit UUID to 128-bit UUID.
714  */
715 extern uint8 ATT_ConvertUUIDto128( const uint8 *pUUID16, uint8 *pUUID128 );
716 
717 /*
718  * Convert a 128-bit UUID to 16-bit UUID.
719  */
720 extern uint8 ATT_ConvertUUIDto16( const uint8 *pUUID128, uint8 *pUUID16 );
721 
722 
723 /*-------------------------------------------------------------------
724  * Attribute Client Utility APIs
725  */
726 
727 /*
728  * Build Error Response.
729  */
730 extern uint16 ATT_BuildErrorRsp( uint8 *pBuf, uint8 *pMsg );
731 
732 /*
733  * Parse Error Response.
734  */
735 extern bStatus_t ATT_ParseErrorRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
736 
737 /*
738  * Build Exchange MTU Request.
739  */
740 extern uint16 ATT_BuildExchangeMTUReq( uint8 *pBuf, uint8 *pMsg );
741 
742 /*
743  * Build Exchange MTU Response.
744  */
745 extern uint16 ATT_BuildExchangeMTURsp( uint8 *pBuf, uint8 *pMsg );
746 
747 /*
748  * Parse Exchange MTU Response.
749  */
750 extern bStatus_t ATT_ParseExchangeMTURsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
751 
752 /*
753  * Build Find Information Request.
754  */
755 extern uint16 ATT_BuildFindInfoReq( uint8 *pBuf, uint8 *pMsg );
756 
757 /*
758  * Parse Find Information Response.
759  */
760 extern bStatus_t ATT_ParseFindInfoRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
761 
762 /*
763  * Build Find Information Response.
764  */
765 extern uint16 ATT_BuildFindInfoRsp( uint8 *pBuf, uint8 *pMsg );
766 
767 /*
768  * Build Find By Type Value Request.
769  */
770 extern uint16 ATT_BuildFindByTypeValueReq( uint8 *pBuf, uint8 *pMsg );
771 
772 /*
773  * Build Find By Type Value Response.
774  */
775 extern uint16 ATT_BuildFindByTypeValueRsp( uint8 *pBuf, uint8 *pMsg );
776 
777 /*
778  * Parse Find By Type Value Response.
779  */
780 extern bStatus_t ATT_ParseFindByTypeValueRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
781 
782 /*
783  * Build Read By Type Request.
784  */
785 extern uint16 ATT_BuildReadByTypeReq( uint8 *pBuf, uint8 *pMsg );
786 
787 /*
788  * Build Read By Type Response.
789  */
790 extern uint16 ATT_BuildReadByTypeRsp( uint8 *pBuf, uint8 *pMsg );
791 
792 /*
793  * Parse Read By Type Response.
794  */
795 extern bStatus_t ATT_ParseReadByTypeRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
796 
797 /*
798  * Build Read Request.
799  */
800 extern uint16 ATT_BuildReadReq( uint8 *pBuf, uint8 *pMsg );
801 
802 /*
803  * Build Read Response.
804  */
805 extern uint16 ATT_BuildReadRsp( uint8 *pBuf, uint8 *pMsg );
806 
807 /*
808  * Parse Read Response.
809  */
810 extern bStatus_t ATT_ParseReadRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
811 
812 /*
813  * Build Read Blob Request.
814  */
815 extern uint16 ATT_BuildReadBlobReq( uint8 *pBuf, uint8 *pMsg );
816 
817 /*
818  * Build Read Blob Response.
819  */
820 extern uint16 ATT_BuildReadBlobRsp( uint8 *pBuf, uint8 *pMsg );
821 
822 /*
823  * Parse Read Blob Response.
824  */
825 extern bStatus_t ATT_ParseReadBlobRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
826 
827 /*
828  * Build Read Multiple Request.
829  */
830 extern uint16 ATT_BuildReadMultiReq( uint8 *pBuf, uint8 *pMsg );
831 
832 /*
833  * Build Read Multiple Response.
834  */
835 extern uint16 ATT_BuildReadMultiRsp( uint8 *pBuf, uint8 *pMsg );
836 
837 /*
838  * Parse Read Multiple Response.
839  */
840 extern bStatus_t ATT_ParseReadMultiRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
841 
842 /*
843  * Build Read By Group Type Response.
844  */
845 extern uint16 ATT_BuildReadByGrpTypeRsp( uint8 *pBuf, uint8 *pMsg );
846 
847 /*
848  * Parse Read By Group Type Response.
849  */
850 extern bStatus_t ATT_ParseReadByGrpTypeRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
851 
852 /*
853  * Build Write Request.
854  */
855 extern uint16 ATT_BuildWriteReq( uint8 *pBuf, uint8 *pMsg );
856 
857 /*
858  * Parse Write Response.
859  */
860 extern bStatus_t ATT_ParseWriteRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
861 
862 /*
863  * Build Prepare Write Request.
864  */
865 extern uint16 ATT_BuildPrepareWriteReq( uint8 *pBuf, uint8 *pMsg );
866 
867 /*
868  * Build Prepare Write Response.
869  */
870 extern uint16 ATT_BuildPrepareWriteRsp( uint8 *pBuf, uint8 *pMsg );
871 
872 /*
873  * Parse Prepare Write Response.
874  */
875 extern bStatus_t ATT_ParsePrepareWriteRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
876 
877 /*
878  * Build Execute Write Request.
879  */
880 extern uint16 ATT_BuildExecuteWriteReq( uint8 *pBuf, uint8 *pMsg );
881 
882 /*
883  * Parse Execute Write Response.
884  */
885 extern bStatus_t ATT_ParseExecuteWriteRsp( uint8 *pParams, uint16 len, attMsg_t *pMsg );
886 
887 /*
888  * Build Handle Value Indication.
889  */
890 extern uint16 ATT_BuildHandleValueInd( uint8 *pBuf, uint8 *pMsg );
891 
892 /*
893  * Parse Handle Value Indication.
894  */
895 extern bStatus_t ATT_ParseHandleValueInd( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
896 
897 
898 /*-------------------------------------------------------------------
899  * Attribute Server Utility APIs
900  */
901 
902 /*
903  * Parse Exchange MTU Request.
904  */
905 extern bStatus_t ATT_ParseExchangeMTUReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
906 
907 /*
908  * Parse Find Information Request.
909  */
910 extern bStatus_t ATT_ParseFindInfoReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
911 
912 /*
913  * Parse Find By Type Value Request.
914  */
915 extern bStatus_t ATT_ParseFindByTypeValueReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
916 
917 /*
918  * Parse Read By Type Request.
919  */
920 extern bStatus_t ATT_ParseReadByTypeReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
921 
922 /*
923  * Parse Read Request.
924  */
925 extern bStatus_t ATT_ParseReadReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
926 
927 /*
928  * Parse Write Blob Request.
929  */
930 extern bStatus_t ATT_ParseReadBlobReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
931 
932 /*
933  * Parse Read Multiple Request.
934  */
935 extern bStatus_t ATT_ParseReadMultiReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
936 
937 /*
938  * Parse Write Request.
939  */
940 extern bStatus_t ATT_ParseWriteReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
941 
942 /*
943  * Parse Execute Write Request.
944  */
945 extern bStatus_t ATT_ParseExecuteWriteReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
946 
947 /*
948  * Parse Prepare Write Request.
949  */
950 extern bStatus_t ATT_ParsePrepareWriteReq( uint8 sig, uint8 cmd, uint8 *pParams, uint16 len, attMsg_t *pMsg );
951 
952 /*
953  * Parse Handle Value Confirmation.
954  */
955 extern bStatus_t ATT_ParseHandleValueCfm( uint8 *pParams, uint16 len, attMsg_t *pMsg );
956 
958 
959 /*-------------------------------------------------------------------
960  * Attribute Client Public APIs
961  */
962 
981 extern bStatus_t ATT_ExchangeMTUReq( uint16 connHandle, attExchangeMTUReq_t *pReq );
982 
995 extern bStatus_t ATT_FindInfoReq( uint16 connHandle, attFindInfoReq_t *pReq );
996 
1009 extern bStatus_t ATT_FindByTypeValueReq( uint16 connHandle, attFindByTypeValueReq_t *pReq );
1010 
1023 extern bStatus_t ATT_ReadByTypeReq( uint16 connHandle, attReadByTypeReq_t *pReq );
1024 
1037 extern bStatus_t ATT_ReadReq( uint16 connHandle, attReadReq_t *pReq );
1038 
1051 extern bStatus_t ATT_ReadBlobReq( uint16 connHandle, attReadBlobReq_t *pReq );
1052 
1065 extern bStatus_t ATT_ReadMultiReq( uint16 connHandle, attReadMultiReq_t *pReq );
1066 
1079 extern bStatus_t ATT_ReadByGrpTypeReq( uint16 connHandle, attReadByGrpTypeReq_t *pReq );
1080 
1094 extern bStatus_t ATT_WriteReq( uint16 connHandle, attWriteReq_t *pReq );
1095 
1108 extern bStatus_t ATT_PrepareWriteReq( uint16 connHandle, attPrepareWriteReq_t *pReq );
1109 
1122 extern bStatus_t ATT_ExecuteWriteReq( uint16 connHandle, attExecuteWriteReq_t *pReq );
1123 
1135 extern bStatus_t ATT_HandleValueCfm( uint16 connHandle );
1136 
1137 
1138 /*-------------------------------------------------------------------
1139  * Attribute Server Public APIs
1140  */
1141 
1154 extern bStatus_t ATT_ErrorRsp( uint16 connHandle, attErrorRsp_t *pRsp );
1155 
1168 extern bStatus_t ATT_ExchangeMTURsp( uint16 connHandle, attExchangeMTURsp_t *pRsp );
1169 
1182 extern bStatus_t ATT_FindInfoRsp( uint16 connHandle, attFindInfoRsp_t *pRsp );
1183 
1196 extern bStatus_t ATT_FindByTypeValueRsp( uint16 connHandle, attFindByTypeValueRsp_t *pRsp );
1197 
1210 extern bStatus_t ATT_ReadByTypeRsp( uint16 connHandle, attReadByTypeRsp_t *pRsp );
1211 
1224 extern bStatus_t ATT_ReadRsp( uint16 connHandle, attReadRsp_t *pRsp );
1225 
1238 extern bStatus_t ATT_ReadBlobRsp( uint16 connHandle, attReadBlobRsp_t *pRsp );
1239 
1252 extern bStatus_t ATT_ReadMultiRsp( uint16 connHandle, attReadMultiRsp_t *pRsp ) ;
1253 
1266 extern bStatus_t ATT_ReadByGrpTypeRsp( uint16 connHandle, attReadByGrpTypeRsp_t *pRsp );
1267 
1279 extern bStatus_t ATT_WriteRsp( uint16 connHandle );
1280 
1293 extern bStatus_t ATT_PrepareWriteRsp( uint16 connHandle, attPrepareWriteRsp_t *pRsp );
1294 
1306 extern bStatus_t ATT_ExecuteWriteRsp( uint16 connHandle );
1307 
1320 extern bStatus_t ATT_HandleValueNoti( uint16 connHandle, attHandleValueNoti_t *pNoti );
1321 
1334 extern bStatus_t ATT_HandleValueInd( uint16 connHandle, attHandleValueInd_t *pInd );
1335 
1336 /*-------------------------------------------------------------------
1337  * Attribute Common Public APIs
1338  */
1339 
1349 extern uint8 ATT_UpdateMTU( uint16 connHandle, uint16 MTU );
1350 
1358 extern uint16 ATT_GetMTU( uint16 connHandle );
1359 
1366 extern void ATT_SetParamValue( uint16 value );
1367 
1373 extern uint16 ATT_GetParamValue( void );
1374 
1380 extern void ATT_RegisterServer( attNotifyTxCB_t pfnNotifyTx );
1381 
1387 extern void ATT_RegisterClient( attNotifyTxCB_t pfnNotifyTx );
1388 
1391 /*********************************************************************
1392 *********************************************************************/
1393 
1394 #ifdef __cplusplus
1395 }
1396 #endif
1397 
1398 #endif /* ATT_H */
1399 
uint16 endHandle
Last requested handle number.
Definition: att.h:350
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:443
uint16 len
Length of each attribute handle, end group handle and value set.
Definition: att.h:521
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:665
uint16 numInfo
Number of attribute handle-UUID pairs found.
Definition: att.h:374
attPrepareWriteRsp_t prepareWriteRsp
ATT Prepare Write Response.
Definition: att.h:672
L2CAP layer interface.
Exchange MTU Response format.
Definition: att.h:337
bStatus_t ATT_FindByTypeValueRsp(uint16 connHandle, attFindByTypeValueRsp_t *pRsp)
Send Find By Type Value Response.
Read Request.
Definition: att.h:441
uint16 numGrps
Number of attribute handle, end group handle and value sets found.
Definition: att.h:520
Find Information Response format.
Definition: att.h:372
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:408
bStatus_t ATT_ExchangeMTUReq(uint16 connHandle, attExchangeMTUReq_t *pReq)
Send Exchange MTU Request.
uint16 MTU
new MTU size
Definition: att.h:635
attReadByGrpTypeReq_t readByGrpTypeReq
ATT Read By Group Type Request.
Definition: att.h:657
uint16 numHandles
Number of attribute handles.
Definition: att.h:487
attPrepareWriteReq_t prepareWriteReq
ATT Prepare Write Request.
Definition: att.h:659
attAttrBtType_t type
2-octet UUID to find
Definition: att.h:388
uint8 reqOpcode
Request that generated this error response.
Definition: att.h:317
bStatus_t ATT_FindInfoRsp(uint16 connHandle, attFindInfoRsp_t *pRsp)
Send Find Information Response.
attMtuUpdatedEvt_t mtuEvt
ATT MTU Updated Event.
Definition: att.h:680
Find Information Request format.
Definition: att.h:347
Read Response.
Definition: att.h:451
Handle and its 128-bit UUID.
Definition: att.h:361
attErrorRsp_t errorRsp
ATT Error Response.
Definition: att.h:663
bStatus_t ATT_ExchangeMTURsp(uint16 connHandle, attExchangeMTURsp_t *pRsp)
Send Exchange MTU Response.
attHandleValueNoti_t handleValueNoti
ATT Handle Value Notification.
Definition: att.h:675
Error Response format.
Definition: att.h:315
attAttrType_t type
Requested group type (2 or 16 octet UUID)
Definition: att.h:510
Find By Type Value Request format.
Definition: att.h:384
uint8 sig
Authentication Signature status (not included (0), valid (1), invalid (2))
Definition: att.h:285
uint8 * pHandles
Set of two or more attribute handles (4 to ATT_MTU_SIZE-1) - must be first field. ...
Definition: att.h:486
#define ATT_BT_UUID_SIZE
Size of 16-bit Bluetooth UUID.
Definition: att.h:112
uint16 offset
Offset of the first octet to be written.
Definition: att.h:547
#define ATT_UUID_SIZE
Size of 128-bit UUID.
Definition: att.h:113
Write Request format.
Definition: att.h:530
uint8 flags
Definition: att.h:572
void ATT_RegisterClient(attNotifyTxCB_t pfnNotifyTx)
Register the client's notify Tx function with the ATT layer.
uint8 cmd
Command Flag.
Definition: att.h:536
uint16 len
Length of value.
Definition: att.h:475
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:561
uint8 * pDataList
List of 1 or more attribute handle-value pairs (2 to ATT_MTU_SIZE-2)
Definition: att.h:432
attReadMultiReq_t readMultiReq
ATT Read Multiple Request.
Definition: att.h:656
uint8 * pValue
Part of the value of the attribute to be written (0 to ATT_MTU_SIZE-5) - must be allocated.
Definition: att.h:549
uint16 len
Length of value.
Definition: att.h:453
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:386
uint16 handle
Handle of the attribute that has been read.
Definition: att.h:559
uint8 opcode
opcode of message that caused flow control violation
Definition: att.h:619
attFindInfoReq_t findInfoReq
ATT Find Information Request.
Definition: att.h:651
uint16 numPairs
Number of attribute handle-UUID pairs found.
Definition: att.h:430
attReadRsp_t readRsp
ATT Read Response.
Definition: att.h:668
bStatus_t ATT_PrepareWriteReq(uint16 connHandle, attPrepareWriteReq_t *pReq)
Send Prepare Write Request.
attHandleValueInd_t handleValueInd
ATT Handle Value Indication.
Definition: att.h:676
uint16 clientRxMTU
Client receive MTU size.
Definition: att.h:329
uint8 format
Format of information data.
Definition: att.h:375
uint16 offset
Offset of the first octet to be read.
Definition: att.h:465
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:349
uint16 len
Length of Attribute Parameters.
Definition: att.h:288
uint8 sig
Authentication Signature status (not included (0), valid (1), invalid (2))
Definition: att.h:535
Read By Group Type Response format.
Definition: att.h:518
attReadByTypeRsp_t readByTypeRsp
ATT Read By Type Response.
Definition: att.h:667
uint16 ATT_GetParamValue(void)
Get a ATT Parameter value.
ATT MTU Updated Event message format.
Definition: att.h:633
bStatus_t ATT_FindByTypeValueReq(uint16 connHandle, attFindByTypeValueReq_t *pReq)
Send Find By Type Value Request.
uint16 len
Length of values.
Definition: att.h:497
attExchangeMTUReq_t exchangeMTUReq
ATT Exchange MTU Request.
Definition: att.h:650
uint16 endHandle
Last requested handle number.
Definition: att.h:387
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:293
Read Multiple Response format.
Definition: att.h:495
bStatus_t ATT_HandleValueInd(uint16 connHandle, attHandleValueInd_t *pInd)
Send Handle Value Indication.
Read Blob Response format.
Definition: att.h:473
bStatus_t ATT_ReadByTypeRsp(uint16 connHandle, attReadByTypeRsp_t *pRsp)
Send Read By Type Respond.
attReadBlobReq_t readBlobReq
ATT Read Blob Request.
Definition: att.h:655
bStatus_t ATT_WriteRsp(uint16 connHandle)
Send Write Response.
uint16 endHandle
Last requested handle number.
Definition: att.h:419
Attribute Type format (2-octet Bluetooth UUID).
Definition: att.h:300
uint16 serverRxMTU
Server receive MTU size.
Definition: att.h:339
uint8 method
Method.
Definition: att.h:287
uint8 * pParams
Attribute Parameters.
Definition: att.h:289
uint16 offset
Offset of the first octet to be written.
Definition: att.h:560
uint8 * pValue
Value of the attribute to be written (0 to ATT_MTU_SIZE-3)
Definition: att.h:534
uint16 len
Length of value.
Definition: att.h:584
Read Blob Request format.
Definition: att.h:462
uint8 cmd
Command Flag.
Definition: att.h:286
uint8 * pValue
Part of the value of the attribute to be written (0 to ATT_MTU_SIZE-5)
Definition: att.h:562
Find By Type Value Response format.
Definition: att.h:405
bStatus_t ATT_PrepareWriteRsp(uint16 connHandle, attPrepareWriteRsp_t *pRsp)
Send Prepare Write Response.
ATT Flow Control Violated Event message format.
Definition: att.h:617
Read By Type Request format.
Definition: att.h:416
uint8 * pValue
Attribute value to find (0 to ATT_MTU_SIZE-7)
Definition: att.h:390
Read Multiple Request format.
Definition: att.h:484
uint8 * pValue
Current value of the attribute (0 to ATT_MTU_SIZE-3)
Definition: att.h:597
uint8 len
Length of UUID (2 or 16)
Definition: att.h:295
uint16 len
Length of value.
Definition: att.h:548
uint16 handle
Attribute handle that generated error response.
Definition: att.h:318
uint8 * pInfo
Information data whose format is determined by format field (4 to ATT_MTU_SIZE-2) ...
Definition: att.h:376
Handle Value Indication format.
Definition: att.h:593
uint16 handle
Handle of the attribute to be read (must be first field)
Definition: att.h:464
attExecuteWriteReq_t executeWriteReq
ATT Execute Write Request.
Definition: att.h:660
Type definitions and macros for BLE stack.
Handle Value Notification format.
Definition: att.h:581
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:418
uint16 handle
Handle of the attribute to be written (must be first field)
Definition: att.h:546
uint16 endHandle
Last requested handle number.
Definition: att.h:509
bStatus_t ATT_ReadBlobReq(uint16 connHandle, attReadBlobReq_t *pReq)
Send Read Blob Request.
ATT Message format.
Definition: att.h:647
attReadBlobRsp_t readBlobRsp
ATT Read Blob Response.
Definition: att.h:669
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:522
uint16 handle
Handle of the attribute to be written (must be first field)
Definition: att.h:532
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:596
bStatus_t ATT_ExecuteWriteRsp(uint16 connHandle)
Send Execute Write Response.
attFlowCtrlViolatedEvt_t flowCtrlEvt
ATT Flow Control Violated Event.
Definition: att.h:679
uint16 handle
Handle of the attribute that has been changed (must be first field)
Definition: att.h:595
bStatus_t ATT_ReadReq(uint16 connHandle, attReadReq_t *pReq)
Send Read Request.
Exchange MTU Request format.
Definition: att.h:327
uint16 grpEndHandle
Group end handle.
Definition: att.h:397
uint16 len
Size of each attribute handle-value pair.
Definition: att.h:431
Attribute Protocol PDU format.
Definition: att.h:283
uint8 * pValue
Value of the attribute with the handle given (0 to ATT_MTU_SIZE-1)
Definition: att.h:454
uint8 * pValue
Part of the value of the attribute with the handle given (0 to ATT_MTU_SIZE-1)
Definition: att.h:476
uint16 dataLen
Length of data written into pDataList. Not part of actual ATT Response.
Definition: att.h:433
attAttrType_t type
Requested type (2 or 16 octet UUID)
Definition: att.h:420
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:506
uint16 handle
Handle.
Definition: att.h:356
attReadByTypeReq_t readByTypeReq
ATT Read By Type Request.
Definition: att.h:653
Handle and its 16-bit Bluetooth UUIDs.
Definition: att.h:354
uint16 len
Length of value.
Definition: att.h:533
attReadByGrpTypeRsp_t readByGrpTypeRsp
ATT Read By Group Type Response.
Definition: att.h:671
bStatus_t ATT_ReadBlobRsp(uint16 connHandle, attReadBlobRsp_t *pRsp)
Send Read Blob Response.
Status_t bStatus_t
BLE Generic Status return.
Definition: bcomdef.h:225
uint8 pendingOpcode
opcode of pending message
Definition: att.h:620
uint8 len
Length of UUID (2)
Definition: att.h:302
Read By Type Response format.
Definition: att.h:428
Prepare Write Response format.
Definition: att.h:557
uint16 handle
Handle.
Definition: att.h:363
uint16 numInfo
Number of handles information found.
Definition: att.h:407
Prepare Write Request format.
Definition: att.h:544
attExchangeMTURsp_t exchangeMTURsp
ATT Exchange MTU Response.
Definition: att.h:664
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:652
bStatus_t ATT_WriteReq(uint16 connHandle, attWriteReq_t *pReq)
Send Write Request.
attReadReq_t readReq
ATT Read Request.
Definition: att.h:654
bStatus_t ATT_HandleValueNoti(uint16 connHandle, attHandleValueNoti_t *pNoti)
Send Handle Value Notification.
attReadMultiRsp_t readMultiRsp
ATT Read Multiple Response.
Definition: att.h:670
attWriteReq_t writeReq
ATT Write Request.
Definition: att.h:658
uint8 * pValues
Set of two or more values (0 to ATT_MTU_SIZE-1)
Definition: att.h:498
uint16 len
Length of value.
Definition: att.h:389
attFindByTypeValueRsp_t findByTypeValueRsp
ATT Find By Type Value Response.
Definition: att.h:666
uint8 * pValue
Current value of the attribute (0 to ATT_MTU_SIZE-3)
Definition: att.h:585
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:396
uint16 startHandle
First requested handle number (must be first field)
Definition: att.h:508
uint8 errCode
Reason why the request has generated error response.
Definition: att.h:319
OSAL L2CAP_DATA_EVENT message format.
Definition: l2cap.h:564
bStatus_t ATT_HandleValueCfm(uint16 connHandle)
Send Handle Value Confirmation.
Execute Write Request format.
Definition: att.h:570
uint16 handle
Handle of the attribute that has been changed (must be first field)
Definition: att.h:583
bStatus_t ATT_ErrorRsp(uint16 connHandle, attErrorRsp_t *pRsp)
Send Error Response.
Handles Information format.
Definition: att.h:394
Copyright 2017, Texas Instruments Incorporated