+/** Adds the given attribute ID and value to the reponse buffer, and advances the response buffer pointer past the added data.
+ *
+ * \param[in] AttributeID Attribute ID to add to the response buffer
+ * \param[in] AttributeValue Pointer to the start of the Attribute's value, located in PROGMEM
+ * \param[in, out] ResponseBuffer Pointer to a buffer where the Attribute and Attribute Value is to be added
+ *
+ * \return Number of bytes added to the response buffer
+ */
+static uint16_t SDP_AddAttributeToResponse(const uint16_t AttributeID, const void* AttributeValue, void** ResponseBuffer)
+{
+ /* Retrieve the size of the attribute value from its container header */
+ uint32_t AttributeValueLength = SDP_GetLocalAttributeContainerSize(AttributeValue);
+
+ /* Add a Data Element header to the response for the Attribute ID */
+ *((uint8_t*)*ResponseBuffer) = (SDP_DATATYPE_UnsignedInt | SDP_DATASIZE_16Bit);
+ *ResponseBuffer += sizeof(uint8_t);
+
+ /* Add the Attribute ID to the created Data Element */
+ *((uint16_t*)*ResponseBuffer) = AttributeID;
+ *ResponseBuffer += sizeof(uint16_t);
+
+ /* Copy over the Attribute value Data Element container to the response */
+ memcpy_P(*ResponseBuffer, AttributeValue, AttributeValueLength);
+ *ResponseBuffer += AttributeValueLength;
+
+ return (sizeof(uint8_t) + sizeof(uint16_t) + AttributeValueLength);
+}
+