Service Discovery ServiceSearchAttribute requests require the response to be grouped by UUID, so the response can't be generated as the attributes are read in. Buffer both UUIDs and Attributes instead and generate the response afterwards.
This commit is contained in:
parent
3e515cdfa8
commit
83b5c916c6
2 changed files with 76 additions and 46 deletions
|
@ -195,11 +195,9 @@
|
|||
static void ServiceDiscovery_ProcessServiceAttribute(SDP_PDUHeader_t* SDPHeader, Bluetooth_Channel_t* Channel);
|
||||
static void ServiceDiscovery_ProcessServiceSearchAttribute(SDP_PDUHeader_t* SDPHeader, Bluetooth_Channel_t* Channel);
|
||||
|
||||
static uint8_t ServiceDiscovery_ProcessAttributes(uint8_t UUIDList[][UUID_SIZE_BYTES], const uint8_t TotalUUIDs,
|
||||
uint8_t* ResponseBuffer, uint8_t MaxResponseSize,
|
||||
const void** CurrentParameter);
|
||||
static uint8_t ServiceDiscovery_GetAttribute(uint8_t UUIDList[][UUID_SIZE_BYTES], const uint8_t TotalUUIDs,
|
||||
const uint32_t Attribute, uint8_t** DataBuffer, uint8_t BufferLen);
|
||||
static void* ServiceDiscovery_GetAttributeValue(ServiceAttributeTable_t* AttributeTable, uint16_t AttributeID);
|
||||
static ServiceAttributeTable_t* ServiceDiscovery_GetAttributeTable(uint8_t* UUID);
|
||||
static uint8_t ServiceDiscovery_GetAttributeList(uint16_t AttributeList[][2], const void** CurrentParameter);
|
||||
static uint8_t ServiceDiscovery_GetUUIDList(uint8_t UUIDList[][UUID_SIZE_BYTES], const void** CurrentParameter);
|
||||
static uint32_t ServiceDiscovery_GetDataElementSize(const void** AttributeHeader, uint8_t* ElementHeaderSize);
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue