45 #define GATT_PERMIT_READ 0x01 46 #define GATT_PERMIT_WRITE 0x02 47 #define GATT_PERMIT_AUTHEN_READ 0x04 48 #define GATT_PERMIT_AUTHEN_WRITE 0x08 49 #define GATT_PERMIT_AUTHOR_READ 0x10 50 #define GATT_PERMIT_AUTHOR_WRITE 0x20 51 #define GATT_PERMIT_ENCRYPT_READ 0x40 52 #define GATT_PERMIT_ENCRYPT_WRITE 0x80 55 #if !defined( GATT_MAX_NUM_PREPARE_WRITES ) 56 #define GATT_MAX_NUM_PREPARE_WRITES 5 62 #define GATT_MIN_ENCRYPT_KEY_SIZE 7 63 #define GATT_MAX_ENCRYPT_KEY_SIZE 16 66 #define GATT_MAX_ATTR_SIZE 512 68 #define GATT_BASE_METHOD 0x40 70 #define GATT_INVALID_HANDLE 0x0000 71 #define GATT_MIN_HANDLE 0x0001 72 #define GATT_MAX_HANDLE 0xFFFF 74 #define GATT_ATTR_HANDLE_SIZE 0x02 76 #define GATT_MAX_MTU 0xFFFF 77 // end of ATT_GATT_Constants 90 #define gattPermitRead( a ) ( (a) & GATT_PERMIT_READ ) 91 #define gattPermitWrite( a ) ( (a) & GATT_PERMIT_WRITE ) 92 #define gattPermitEncryptRead( a ) ( (a) & GATT_PERMIT_ENCRYPT_READ ) 93 #define gattPermitEncryptWrite( a ) ( (a) & GATT_PERMIT_ENCRYPT_WRITE ) 94 #define gattPermitAuthorRead( a ) ( (a) & GATT_PERMIT_AUTHOR_READ ) 95 #define gattPermitAuthorWrite( a ) ( (a) & GATT_PERMIT_AUTHOR_WRITE ) 96 #define gattPermitAuthenRead( a ) ( (a) & GATT_PERMIT_AUTHEN_READ ) 97 #define gattPermitAuthenWrite( a ) ( (a) & GATT_PERMIT_AUTHEN_WRITE ) 100 #define gattPrimaryServiceType( t ) ( MAP_ATT_CompareUUID( primaryServiceUUID, ATT_BT_UUID_SIZE, \ 101 (t).uuid, (t).len ) ) 102 #define gattSecondaryServiceType( t ) ( MAP_ATT_CompareUUID( secondaryServiceUUID, ATT_BT_UUID_SIZE, \ 103 (t).uuid, (t).len ) ) 104 #define gattCharacterType( t ) ( MAP_ATT_CompareUUID( characterUUID, ATT_BT_UUID_SIZE, \ 105 (t).uuid, (t).len ) ) 106 #define gattIncludeType( t ) ( MAP_ATT_CompareUUID( includeUUID, ATT_BT_UUID_SIZE, \ 107 (t).uuid, (t).len ) ) 108 #define gattServiceType( t ) ( gattPrimaryServiceType( (t) ) || \ 109 gattSecondaryServiceType( (t) ) ) 265 extern uint8 gattNumConns;
463 uint16 len, uint16 *pHandle );
487 uint16 service, uint16 *pLastHandle );
570 uint8 authenticated, uint8 taskId );
607 uint8 authenticated );
721 uint8 len, uint8 taskId );
758 uint16 endHandle, uint8 taskId );
797 uint16 endHandle, uint8 taskId );
875 uint16 endHandle, uint8 taskId );
1225 uint8 numReqs, uint8 flags, uint8 taskId );
1435 extern void *
GATT_bm_alloc( uint16 connHandle, uint8 opcode, uint16 size, uint16 *pSizeAlloc );
1464 extern void GATT_SetHostToAppFlowCtrl( uint16 heapSize, uint8 flowCtrlMode );
1487 extern void GATT_SetNextHandle( uint16
handle );
1496 extern uint16 GATT_GetNextHandle(
void );
1511 extern void GATT_Init( uint8 taskId );
1523 extern uint16 GATT_ProcessEvent( uint8 taskId, uint16 events );
GATT Read By Type Request format.
Definition: gatt.h:133
This API allows the software components in the Z-Stack to be written independently of the specifics o...
attReadByGrpTypeReq_t readByGrpTypeReq
ATT Read By Group Type Request.
Definition: gatt.h:175
gattAttrType_t type
Attribute type (2 or 16 octet UUIDs)
Definition: gatt.h:242
Exchange MTU Response format.
Definition: att.h:335
uint8 index
Index of last Prepare Write Request sent.
Definition: gatt.h:153
Read Request.
Definition: att.h:439
attHandleValueNoti_t handleValueNoti
ATT Handle Value Notification.
Definition: gatt.h:197
Find Information Response format.
Definition: att.h:370
bStatus_t GATT_NotifyEvent(uint16 connHandle, uint8 status, uint8 method, gattMsg_t *pMsg)
Send an event to upper layer application/protocol.
attExchangeMTURsp_t exchangeMTURsp
ATT Exchange MTU Response.
Definition: gatt.h:186
attFindByTypeValueReq_t findByTypeValueReq
ATT Find By Type Value Request.
Definition: gatt.h:170
uint16 GATT_ServiceNumAttrs(uint16 handle)
Get the number of attributes for a given service.
attPrepareWriteReq_t * pReqs
Array of Prepare Write Requests (must be allocated)
Definition: gatt.h:151
struct attAttribute_t gattAttribute_t
GATT Attribute format.
uint8 GATT_ServiceEncKeySize(uint16 handle)
Get the minimum encryption key size required by a given service.
GATT Reliable Writes Request format. Do not change the order of the members.
Definition: gatt.h:148
Find Information Request format.
Definition: att.h:345
Read Response.
Definition: att.h:449
uint8 encKeySize
Minimum encryption key size required by service (7-16 bytes)
Definition: gatt.h:254
GATT Attribute Type format.
Definition: gatt.h:227
GATT Write Long Request format. Do not change the order of the members.
Definition: gatt.h:140
void GATT_RegisterForReq(uint8 taskId)
Register to receive incoming ATT Requests.
uint16 handle
Attribute handle - assigned internally by attribute server.
Definition: gatt.h:244
bStatus_t GATT_DiscAllPrimaryServices(uint16 connHandle, uint8 taskId)
Discovery All Primary Services.
Error Response format.
Definition: att.h:313
attPrepareWriteReq_t prepareWriteReq
ATT Prepare Write Request.
Definition: gatt.h:177
bStatus_t GATT_ReliableWrites(uint16 connHandle, attPrepareWriteReq_t *pReqs, uint8 numReqs, uint8 flags, uint8 taskId)
Do a Reliable Write.
attReadMultiRsp_t readMultiRsp
ATT Read Multiple Response.
Definition: gatt.h:192
attReadBlobRsp_t readBlobRsp
ATT Read Blob Response.
Definition: gatt.h:191
bStatus_t GATT_Indication(uint16 connHandle, attHandleValueInd_t *pInd, uint8 authenticated, uint8 taskId)
Send a GATT Indication.
attPrepareWriteRsp_t prepareWriteRsp
ATT Prepare Write Response.
Definition: gatt.h:194
Find By Type Value Request format.
Definition: att.h:382
const uint8 * uuid
Pointer to UUID.
Definition: gatt.h:230
bStatus_t GATT_ReadUsingCharUUID(uint16 connHandle, attReadByTypeReq_t *pReq, uint8 taskId)
Read Using Characteristic UUID.
bStatus_t GATT_WriteLongCharValue(uint16 connHandle, attPrepareWriteReq_t *pReq, uint8 taskId)
Write Long Characteristic Value.
attFindInfoRsp_t findInfoRsp
ATT Find Information Response.
Definition: gatt.h:187
uint16 endHandle
Last requested handle number.
Definition: gatt.h:128
gattReadByTypeReq_t gattReadByTypeReq
GATT Read By Type Request.
Definition: gatt.h:180
Write Request format.
Definition: att.h:528
uint16 lastOffset
Offset of last Prepare Write Request sent.
Definition: gatt.h:144
bStatus_t GATT_ReadCharValue(uint16 connHandle, attReadReq_t *pReq, uint8 taskId)
Read Characteristic Value.
attReadBlobReq_t readBlobReq
ATT Read Blob Request.
Definition: gatt.h:173
uint8 reliable
Whether reliable writes requested (always FALSE for Write Long)
Definition: gatt.h:142
attExchangeMTUReq_t exchangeMTUReq
ATT Exchange MTU Request.
Definition: gatt.h:168
uint16 connHandle
Connection message was received on.
Definition: gatt.h:214
attReadReq_t readReq
ATT Read Request.
Definition: gatt.h:172
attReadByTypeReq_t readByTypeReq
ATT Read By Type Request.
Definition: gatt.h:171
bStatus_t GATT_ExecuteWriteReq(uint16 connHandle, attExecuteWriteReq_t *pReq, uint8 taskId)
ATT_ExecuteWriteReq
bStatus_t GATT_SignedWriteNoRsp(uint16 connHandle, attWriteReq_t *pReq)
Signed Write No Response.
bStatus_t GATT_SendRsp(uint16 connHandle, uint8 method, gattMsg_t *pRsp)
Send an ATT Response message out.
GATT Message format.
Definition: gatt.h:165
bStatus_t GATT_DiscAllCharDescs(uint16 connHandle, uint16 startHandle, uint16 endHandle, uint8 taskId)
Discovery All Characteristic Descriptors.
uint8 numReqs
Number of Prepare Write Requests.
Definition: gatt.h:152
attFindInfoReq_t findInfoReq
ATT Find Information Request.
Definition: gatt.h:169
Read By Group Type Response format.
Definition: att.h:516
attErrorRsp_t errorRsp
ATT Error Response.
Definition: gatt.h:185
ATT MTU Updated Event message format.
Definition: att.h:631
attWriteReq_t writeReq
ATT Write Request.
Definition: gatt.h:176
bStatus_t GATT_InitClient(void)
Initialize the Generic Attribute Profile Client.
uint16 startHandle
First requested handle number (must be first field)
Definition: gatt.h:127
attHandleValueInd_t handleValueInd
ATT Handle Value Indication.
Definition: gatt.h:198
gattAttribute_t * attrs
Array of attribute records;.
Definition: gatt.h:255
uint8 GATT_ServiceChangedInd(uint16 connHandle, uint8 taskId)
Send out a Service Changed Indication.
Attribute Type format (2 or 16 octet UUID).
Definition: att.h:291
Read Multiple Response format.
Definition: att.h:493
Read Blob Response format.
Definition: att.h:471
attAttrType_t value
Primary service UUID value (2 or 16 octets)
Definition: gatt.h:129
GATT Find By Type Value Request format.
Definition: gatt.h:125
uint8 discCharsByUUID
Whether this is a GATT Discover Characteristics by UUID sub-procedure.
Definition: gatt.h:135
attExecuteWriteReq_t executeWriteReq
ATT Execute Write Request.
Definition: gatt.h:178
uint8 *const pValue
Definition: gatt.h:245
bStatus_t GATT_Notification(uint16 connHandle, attHandleValueNoti_t *pNoti, uint8 authenticated)
Send a GATT Notification.
Read Blob Request format.
Definition: att.h:460
gattFindByTypeValueReq_t gattFindByTypeValueReq
GATT Find By Type Value Request.
Definition: gatt.h:179
Find By Type Value Response format.
Definition: att.h:403
ATT Flow Control Violated Event message format.
Definition: att.h:615
uint8 permissions
Attribute permissions.
Definition: gatt.h:243
Read By Type Request format.
Definition: att.h:414
Read Multiple Request format.
Definition: att.h:482
bStatus_t GATT_ReadLongCharDesc(uint16 connHandle, attReadBlobReq_t *pReq, uint8 taskId)
Read Long Characteristic Descriptor.
bStatus_t GATT_ExchangeMTU(uint16 connHandle, attExchangeMTUReq_t *pReq, uint8 taskId)
Exchange MTU Request.
Handle Value Indication format.
Definition: att.h:591
bStatus_t GATT_PrepareWriteReq(uint16 connHandle, attPrepareWriteReq_t *pReq, uint8 taskId)
Request the server to prepare to write the value of an attribute.
bStatus_t GATT_WriteNoRsp(uint16 connHandle, attWriteReq_t *pReq)
Write No Response.
gattMsg_t msg
Attribute protocol/profile message.
Definition: gatt.h:216
attReadByGrpTypeRsp_t readByGrpTypeRsp
ATT Read By Group Type Response.
Definition: gatt.h:193
Type definitions and macros for BLE stack.
Handle Value Notification format.
Definition: att.h:579
bStatus_t GATT_WriteCharValue(uint16 connHandle, attWriteReq_t *pReq, uint8 taskId)
Write Characteristic Value.
attReadByTypeRsp_t readByTypeRsp
ATT Read By Type Response.
Definition: gatt.h:189
uint8 flags
Definition: gatt.h:154
bStatus_t GATT_WriteLongCharDesc(uint16 connHandle, attPrepareWriteReq_t *pReq, uint8 taskId)
Write Long Characteristic Descriptor.
bStatus_t GATT_DiscPrimaryServiceByUUID(uint16 connHandle, uint8 *pUUID, uint8 len, uint8 taskId)
Discovery Primary Service by UUID.
OSAL Event Header.
Definition: osal.h:92
attFindByTypeValueRsp_t findByTypeValueRsp
ATT Find By Type Value Response.
Definition: gatt.h:188
uint8 reliable
Whether reliable writes requested (always TRUE for Reliable Writes)
Definition: gatt.h:150
void GATT_RegisterForMsgs(uint8 taskID)
GATT Register for Messages.
attReadMultiReq_t readMultiReq
ATT Read Multiple Request.
Definition: gatt.h:174
attFlowCtrlViolatedEvt_t flowCtrlEvt
ATT Flow Control Violated Event.
Definition: gatt.h:201
Exchange MTU Request format.
Definition: att.h:325
bStatus_t GATT_ReadCharDesc(uint16 connHandle, attReadReq_t *pReq, uint8 taskId)
Read Characteristic Descriptor.
attPrepareWriteReq_t req
ATT Prepare Write Request.
Definition: gatt.h:143
bStatus_t GATT_DiscCharsByUUID(uint16 connHandle, attReadByTypeReq_t *pReq, uint8 taskId)
Discovery Characteristics by UUID.
bStatus_t GATT_FindIncludedServices(uint16 connHandle, uint16 startHandle, uint16 endHandle, uint8 taskId)
This sub-procedure is used by a client to find include service declarations within a service definiti...
bStatus_t GATT_VerifyReadPermissions(uint16 connHandle, uint8 permissions, uint16 service)
Verify the permissions of an attribute for reading.
GATT GATT_MSG_EVENT message format.
Definition: gatt.h:211
bStatus_t GATT_InitServer(void)
Initialize the Generic Attribute Profile Server.
bStatus_t GATT_RegisterService(gattService_t *pService)
Register a service attribute list with the GATT Server.
GATT Service format.
Definition: gatt.h:251
Read By Group Type Request format.
Definition: att.h:504
gattWriteLongReq_t gattWriteLongReq
GATT Long Write Request.
Definition: gatt.h:181
GATT Attribute format.
Definition: gatt.h:240
Status_t bStatus_t
BLE Generic Status return.
Definition: bcomdef.h:227
void GATT_bm_free(gattMsg_t *pMsg, uint8 opcode)
GATT implementation of the de-allocator functionality.
Read By Type Response format.
Definition: att.h:426
osal_event_hdr_t hdr
GATT_MSG_EVENT and status.
Definition: gatt.h:213
Prepare Write Response format.
Definition: att.h:555
Prepare Write Request format.
Definition: att.h:542
bStatus_t GATT_WriteCharDesc(uint16 connHandle, attWriteReq_t *pReq, uint8 taskId)
Write Characteristic Descriptor.
bStatus_t GATT_ReadLongCharValue(uint16 connHandle, attReadBlobReq_t *pReq, uint8 taskId)
Read Long Characteristic Value.
bStatus_t GATT_DeregisterService(uint16 handle, gattService_t *pService)
Deregister a service attribute list with the GATT Server.
gattAttribute_t * GATT_FindHandle(uint16 handle, uint16 *pHandle)
Find the attribute record for a given handle.
gattAttribute_t * GATT_FindHandleUUID(uint16 startHandle, uint16 endHandle, const uint8 *pUUID, uint16 len, uint16 *pHandle)
Find the attribute record for a given handle and UUID.
uint8 method
Type of message.
Definition: gatt.h:215
uint8 len
Length of UUID (2 or 6)
Definition: gatt.h:229
bStatus_t GATT_VerifyWritePermissions(uint16 connHandle, uint8 permissions, uint16 service, attWriteReq_t *pReq)
Verify the permissions of an attribute for writing.
gattAttribute_t * GATT_FindNextAttr(gattAttribute_t *pAttr, uint16 endHandle, uint16 service, uint16 *pLastHandle)
Find the next attribute of the same type for a given attribute.
uint16 numAttrs
Number of attributes in attrs.
Definition: gatt.h:253
attMtuUpdatedEvt_t mtuEvt
ATT MTU Updated Event.
Definition: gatt.h:202
void * GATT_bm_alloc(uint16 connHandle, uint8 opcode, uint16 size, uint16 *pSizeAlloc)
GATT implementation of the allocator functionality.
gattReliableWritesReq_t gattReliableWritesReq
GATT Reliable Writes Request.
Definition: gatt.h:182
Execute Write Request format.
Definition: att.h:568
attReadByTypeReq_t req
Read By Type Request.
Definition: gatt.h:136
bStatus_t GATT_ReadMultiCharValues(uint16 connHandle, attReadMultiReq_t *pReq, uint8 taskId)
Read Multiple Characteristic Values.
attReadRsp_t readRsp
ATT Read Response.
Definition: gatt.h:190
void GATT_UpdateMTU(uint16 connHandle, uint16 mtuSize)
Update ATT_MTU size for a given connection.
bStatus_t GATT_DiscAllChars(uint16 connHandle, uint16 startHandle, uint16 endHandle, uint8 taskId)
Discover all Characteristics.
void GATT_RegisterForInd(uint8 taskId)
Register to receive incoming ATT Indications or Notifications of attribute values.