+ struct
+ {
+ SDP_PDUHeader_t SDPHeader;
+ uint8_t ResponseData[100];
+ } ResponsePacket;
+
+ ResponsePacket.SDPHeader.PDU = SDP_PDU_SERVICESEARCHATTRIBUTERESPONSE;
+ ResponsePacket.SDPHeader.TransactionID = SDPHeader->TransactionID;
+
+ if (MaxAttributeSize > sizeof(ResponsePacket.ResponseData))
+ MaxAttributeSize = sizeof(ResponsePacket.ResponseData);
+
+ ResponsePacket.SDPHeader.ParameterLength = ServiceDiscovery_ProcessAttributes(UUIDList, TotalUUIDs,
+ ResponsePacket.ResponseData,
+ MaxAttributeSize, &CurrentParameter);
+
+ Bluetooth_SendPacket(&ResponsePacket, (sizeof(ResponsePacket.SDPHeader) + ResponsePacket.SDPHeader.ParameterLength),
+ Channel);
+}
+
+static uint8_t ServiceDiscovery_ProcessAttributes(uint8_t UUIDList[12][16], const uint8_t TotalUUIDs, uint8_t* ResponseBuffer,
+ uint8_t MaxResponseSize, const void** CurrentParameter)
+{
+ uint8_t ElementHeaderSize;
+ uint8_t TotalResponseSize = 0;
+
+ uint16_t AttributeIDListLength = ServiceDiscovery_GetDataElementSize(CurrentParameter, &ElementHeaderSize);