9 #ifndef _ATT_PRIVATE_H_ 10 #define _ATT_PRIVATE_H_ 16 #define FEA_SUPPORT_ATT_CLIENT_ROLE (1)//(FALSE)// 17 #define FEA_SUPPORT_APP_GATT_EVENT (1)//(FALSE)// 21 #define ATT_L2CAP_OPCODE_OFFSET 0 22 #define ATT_PARAM_OFFSET (ATT_L2CAP_OPCODE_OFFSET+1) 23 #define ATT_L2CAP_PACKET_LENGTH(ptr) (gATT_ctl.currPduLen) 27 #define UUID_TYPE(a) (uint8_t)(a->uuid_t.type) 28 #define UUID_uint16_t(a) (uint16_t)(a->uuid_t.uuid.uuid16) 29 #define UUID_PTR(a) (uint8_t *)(a->uuid_t.uuid.addr) 32 #define ATT_R_PMT(p) ((p)&0x0F) 33 #define ATT_W_PMT(p) ((p)&0xF0) 36 #define ATT_ERROR_RSP 0x01 37 #define ATT_EXCHANGE_MTU_REQ 0x02 38 #define ATT_EXCHANGE_MTU_RSP 0x03 39 #define ATT_FIND_INFO_REQ 0x04 40 #define ATT_FIND_INFO_RSP 0x05 41 #define ATT_FIND_BY_TYPE_VALUE_REQ 0x06 42 #define ATT_FIND_BY_TYPE_VALUE_RSP 0x07 43 #define ATT_READ_BY_TYPE_REQ 0x08 44 #define ATT_READ_BY_TYPE_RSP 0x09 45 #define ATT_READ_REQ 0x0A 46 #define ATT_READ_RSP 0x0B 47 #define ATT_READ_BLOB_REQ 0x0C 48 #define ATT_READ_BLOB_RSP 0x0D 49 #define ATT_READ_MULTI_REQ 0x0E 50 #define ATT_READ_MULTI_RSP 0x0F 51 #define ATT_READ_BY_GRP_TYPE_REQ 0x10 52 #define ATT_READ_BY_GRP_TYPE_RSP 0x11 53 #define ATT_WRITE_REQ 0x12 54 #define ATT_WRITE_RSP 0x13 55 #define ATT_PREPARE_WRITE_REQ 0x16 56 #define ATT_PREPARE_WRITE_RSP 0x17 57 #define ATT_EXECUTE_WRITE_REQ 0x18 58 #define ATT_EXECUTE_WRITE_RSP 0x19 59 #define ATT_HANDLE_VALUE_NOTI 0x1B 60 #define ATT_HANDLE_VALUE_IND 0x1D 61 #define ATT_HANDLE_VALUE_CFM 0x1E 62 #define ATT_WRITE_CMD 0x52 63 #define ATT_SIGNED_WRITE_CMD 0xD2 65 typedef void(*fATT_HANDLER)(uint8_t*);
66 typedef void(*fGATT_HANDLER)(void);
70 #define ATT_DEVICE_RX_MTU 115 // must between 23 and 245 71 #define MAX_ATT_VALUE_LENGTH 512 72 #define ATT_REPORT_HEADER_LEN 3 //[opcode:1][handle:2] 74 #define ATT_INVALID_INDEX 0x0000 76 #define L2CAP_CID_ATT 0x0004 81 #define PACKED_STRUCT __attribute__((packed)) 85 __pragma(pack(push, 1))
86 #define __attribute__(x) 92 uint8_t ReqOpcodeInErr;
93 uint8_t AttHandleInErr[2];
95 }PACKED_STRUCT ATT_ERR_RSP_T;
99 uint8_t clientRxMTU[2];
100 }PACKED_STRUCT ATT_EXCHANGE_MTU_REQ_T;
104 uint8_t serverRxMTU[2];
105 }PACKED_STRUCT ATT_EXCHANGE_MTU_RSP_T;
109 uint8_t startHandle[2];
110 uint8_t endHandle[2];
111 }PACKED_STRUCT ATT_FIND_INFO_REQ_T;
116 uint8_t pInfoData[ATT_DEVICE_RX_MTU-2];
117 }PACKED_STRUCT ATT_FIND_INFO_RSP_T;
121 uint8_t startHandle[2];
122 uint8_t endHandle[2];
125 }PACKED_STRUCT ATT_FIND_BY_TYPE_VALUE_REQ_T;
130 uint8_t pHdlList[ATT_DEVICE_RX_MTU-1];
131 } PACKED_STRUCT ATT_FIND_BY_TYPE_VALUE_RSP_T;
135 uint8_t startHandle[2];
136 uint8_t endHandle[2];
138 }PACKED_STRUCT ATT_READ_BY_TYPE_REQ_T;
143 uint8_t pDataList[ATT_DEVICE_RX_MTU-2];
144 }PACKED_STRUCT ATT_READ_BY_TYPE_RSP_T;
149 }PACKED_STRUCT ATT_READ_REQ_T;
154 }PACKED_STRUCT ATT_READ_RSP_T;
160 }PACKED_STRUCT ATT_READ_BLOB_REQ_T;
165 }PACKED_STRUCT ATT_READ_BLOB_RSP_T;
169 uint8_t handle[ATT_DEVICE_RX_MTU-1];
170 }PACKED_STRUCT ATT_READ_MULTI_REQ_T;
174 uint8_t pSetOfValue[ATT_DEVICE_RX_MTU-1];
175 }PACKED_STRUCT ATT_READ_MULTI_RSP_T;
179 uint8_t startHandle[2];
180 uint8_t endHandle[2];
182 }PACKED_STRUCT ATT_READ_BY_GROUP_TYPE_REQ_T;
187 uint8_t pAttDataList[ATT_DEVICE_RX_MTU-2];
188 }PACKED_STRUCT ATT_READ_BY_GROUP_TYPE_RSP_T;
194 }PACKED_STRUCT ATT_WRITEDATA_U;
199 ATT_WRITEDATA_U uData;
200 }PACKED_STRUCT ATT_WRITE_REQ_T;
207 }PACKED_STRUCT ATT_SIGNED_WRITE_CMD_T;
213 uint8_t pPartValue[1];
214 }PACKED_STRUCT ATT_PREPARE_WRITE_REQ_T;
220 uint8_t pPartValue[1];
221 }PACKED_STRUCT ATT_PREPARE_WRITE_RSP_T;
227 }PACKED_STRUCT ATT_HANDLE_VALUE_REPORT_T;
231 uint8_t msgBodyPtr[1];
232 ATT_ERR_RSP_T AttErrRsp;
233 ATT_PREPARE_WRITE_RSP_T AttPrepareWriteRsp;
234 ATT_HANDLE_VALUE_REPORT_T AttHandleValueReport;
235 ATT_EXCHANGE_MTU_REQ_T AttExchangeMtuReq;
236 ATT_EXCHANGE_MTU_RSP_T AttExchangeMtuRsp;
237 ATT_READ_BY_TYPE_REQ_T AttReadByTypeReq;
238 ATT_READ_BY_GROUP_TYPE_REQ_T AttReadByGrpTypeReq;
239 ATT_FIND_BY_TYPE_VALUE_REQ_T AttFindByTypeValueReq;
240 ATT_FIND_INFO_REQ_T AttFindInfoReq;
241 ATT_READ_REQ_T AttReadReq;
242 ATT_READ_BLOB_REQ_T AttReadBlobReq;
243 ATT_READ_MULTI_REQ_T AttReadMultiReq;
244 ATT_WRITE_REQ_T AttWrtieReq;
245 ATT_PREPARE_WRITE_REQ_T AttPrepareWriteReq;
246 }PACKED_STRUCT ATT_PDU_PARA;
253 typedef struct att_pwq_stru
255 struct att_pwq_stru * pNextPWQ;
259 uint8_t pPartValue[1];
260 }ATT_PREPAREWRITEQUEUE_T;
262 #define ATT_SIGNWRITE_NEW_CMD 0 263 #define ATT_SIGNWRITE_VERIFYING 1 264 #define ATT_SIGNWRITE_VERIFIED 2 267 __pragma(pack(push, 1))
268 #define __attribute__(x) 273 uint8_t *ATTRsvMemPtr;
277 uint8_t currPduLinkIdx;
278 uint8_t signWriteStatus;
279 }PACKED_STRUCT ATT_CTL_TYPE;
289 GATT_PROC_OFFSET = 0xFF00,
291 GATT_DISC_ALL_PRIMARY_SERVICES,
292 GATT_DISC_PRIMARY_SERVICE_BY_UUID,
293 GATT_FIND_INCLUDED_SERVICES,
295 GATT_DISC_CHARS_BY_UUID,
296 GATT_DISC_ALL_CHAR_DESCS,
297 GATT_READ_CHAR_VALUE,
298 GATT_READ_USING_CHAR_UUID,
299 GATT_READ_LONG_CHAR_VALUE,
300 GATT_READ_MULTI_CHAR_VALUES,
302 GATT_SIGNED_WRITE_NO_RSP,
303 GATT_WRITE_CHAR_VALUE,
304 GATT_WRITE_LONG_CHAR_VALUE,
305 GATT_RELIABLE_WRITES,
307 GATT_READ_LONG_CHAR_DESC,
308 GATT_WRITE_CHAR_DESC,
309 GATT_WRITE_LONG_CHAR_DESC,
310 }GATT_PROCEDURE_ENUM;
316 }GATT_PROC_PARA_DISC_PRIMARY_SERVICE_BY_UUID;
319 __pragma(pack(push, 1))
320 #define __attribute__(x) 326 uint8_t startHandle[2];
327 uint8_t endHandle[2];
328 }PACKED_STRUCT GATT_PROC_PARA_FIND_INCLUDED_SERVICES;
332 uint8_t startHandle[2];
333 uint8_t endHandle[2];
334 }PACKED_STRUCT GATT_PROC_PARA_DISC_ALL_CHARS;
338 uint8_t startHandle[2];
339 uint8_t endHandle[2];
342 }PACKED_STRUCT GATT_PROC_PARA_DISC_CHARS_BY_UUID;
346 uint8_t startHandle[2];
347 uint8_t endHandle[2];
348 }PACKED_STRUCT GATT_PROC_PARA_DISC_ALL_CHAR_DESCS;
353 }PACKED_STRUCT GATT_PROC_PARA_READ_CHAR_VALUE;
357 uint8_t startHandle[2];
358 uint8_t endHandle[2];
361 }PACKED_STRUCT GATT_PROC_PARA_READ_USING_CHAR_UUID;
367 }PACKED_STRUCT GATT_PROC_PARA_READ_LONG_CHAR_VALUE;
373 }GATT_PROC_READ_MULTI_CHAR_VALUES;
380 }PACKED_STRUCT GATT_PROC_PARA_WRITE_NO_RSP;
387 }PACKED_STRUCT GATT_PROC_PARA_WRITE_CHAR_VALUE;
395 }PACKED_STRUCT GATT_PROC_PARA_WRITE_LONG_CHAR_VALUE;
399 #define MAX_NUM_OF_REQ 5 402 uint8_t handle[MAX_NUM_OF_REQ*2];
403 uint8_t offset[MAX_NUM_OF_REQ*2];
404 uint8_t valueLen[MAX_NUM_OF_REQ*2];
405 uint8_t pValueBank[50];
406 }PACKED_STRUCT GATT_PROC_PARA_RELIABLE_WRITES;
411 }PACKED_STRUCT GATT_PROC_PARA_READ_CHAR_DESC;
417 }PACKED_STRUCT GATT_PROC_PARA_READ_LONG_CHAR_DESC;
424 }PACKED_STRUCT GATT_PROC_PARA_WRITE_CHAR_DESC;
431 typedef void(*gatt_procedure_cb)(uint8_t * resp);
436 gatt_procedure_cb gatt_proc_cb;
437 }ATT_CLIENT_CTL_TYPE;
443 #define GATT_UUID_PRIM_SERVICE (uint16_t)0x2800 444 #define GATT_UUID_SND_SERVICE (uint16_t)0x2801 445 #define GATT_UUID_INCLUDE (uint16_t)0x2802 446 #define GATT_UUID_CHARACTERISTIC (uint16_t)0x2803 452 __pragma(pack(push, 1))
453 #define __attribute__(x) 460 ATT_PDU_PARA Parameter;
461 }PACKED_STRUCT ATT_OUT_PKT_T;
466 #define UUID_B_016 0x02 467 #define UUID_B_128 0x10 468 #define UUID_B_032 0x04 473 }PACKED_STRUCT UUID_U;
478 }__attribute__((packed)) UUID_T;
525 extern uint16_t ATT_SDK_SERVER_SIZE;
526 extern uint16_t ATT_DEFAULT_MTU_SIZE;
void(* ATTCB)(ATT_CB_TYPE type, uint8_t linkindex, uint16_t handle)
attribute value accessed call back function.
Definition: ble_att.h:111
Definition: att_private.h:509
void(* INDI_CB)(uint8_t link_index)
characteristic value indication confirmed call back function.
Definition: ble_att.h:118
#define MAX_NUM_LE_LINK
Maximal Link number.
Definition: bt_constants.h:52