X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/6276d5f82a600c9047df4a8894a257181abad5e7..ec537fd84d6ad3fd0dfa1b55efa2c2d554c1db48:/Demos/Host/Incomplete/BluetoothHost/Lib/SDP.h diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/SDP.h b/Demos/Host/Incomplete/BluetoothHost/Lib/SDP.h index 52795b847..62a8d1ef4 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/SDP.h +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/SDP.h @@ -1,21 +1,21 @@ /* LUFA Library Copyright (C) Dean Camera, 2010. - + dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com + www.lufa-lib.org */ /* Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - Permission to use, copy, modify, distribute, and sell this + Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in + without fee, provided that the above copyright notice appear in all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the software without specific, written prior permission. The author disclaim all warranties with regard to this @@ -48,11 +48,11 @@ #include "BluetoothStack.h" #include "SDPServices.h" - + /* Macros: */ #define BT_SDP_DEBUG(l, s, ...) do { if (SDP_DEBUG_LEVEL >= l) printf_P(PSTR("(SDP) " s "\r\n"), ##__VA_ARGS__); } while (0) #define SDP_DEBUG_LEVEL 0 - + #define SDP_PDU_ERRORRESPONSE 0x01 #define SDP_PDU_SERVICESEARCHREQUEST 0x02 #define SDP_PDU_SERVICESEARCHRESPONSE 0x03 @@ -103,42 +103,45 @@ uint16_t TransactionID; /**< Unique transaction ID number to associate requests and responses */ uint16_t ParameterLength; /**< Length of the data following the SDP header */ } SDP_PDUHeader_t; - + /* Inline Functions: */ /** Writes 8 bits of raw data to the given buffer, incrementing the buffer position afterwards. * * \param[in, out] BufferPos Current position in the buffer where the data is to be written to * \param[in] Data Data to write to the buffer */ - static inline void SDP_WriteData8(void** BufferPos, uint8_t Data) + static inline void SDP_WriteData8(void** BufferPos, + const uint8_t Data) { *((uint8_t*)*BufferPos) = Data; *BufferPos += sizeof(uint8_t); } - + /** Writes 16 bits of raw data to the given buffer, incrementing the buffer position afterwards. * * \param[in, out] BufferPos Current position in the buffer where the data is to be written to * \param[in] Data Data to write to the buffer */ - static inline void SDP_WriteData16(void** BufferPos, uint16_t Data) + static inline void SDP_WriteData16(void** BufferPos, + const uint16_t Data) { *((uint16_t*)*BufferPos) = SwapEndian_16(Data); *BufferPos += sizeof(uint16_t); - } + } /** Writes 32 bits of raw data to the given buffer, incrementing the buffer position afterwards. * * \param[in, out] BufferPos Current position in the buffer where the data is to be written to * \param[in] Data Data to write to the buffer */ - static inline void SDP_WriteData32(void** BufferPos, uint32_t Data) + static inline void SDP_WriteData32(void** BufferPos, + const uint32_t Data) { *((uint32_t*)*BufferPos) = SwapEndian_32(Data); *BufferPos += sizeof(uint32_t); } - /** Reads 8 bits of raw data frpm the given buffer, incrementing the buffer position afterwards. + /** Reads 8 bits of raw data from the given buffer, incrementing the buffer position afterwards. * * \param[in, out] BufferPos Current position in the buffer where the data is to be read from * @@ -148,11 +151,11 @@ { uint8_t Data = *((const uint8_t*)*BufferPos); *BufferPos += sizeof(uint8_t); - + return Data; } - /** Reads 16 bits of raw data frpm the given buffer, incrementing the buffer position afterwards. + /** Reads 16 bits of raw data from the given buffer, incrementing the buffer position afterwards. * * \param[in, out] BufferPos Current position in the buffer where the data is to be read from * @@ -162,11 +165,11 @@ { uint16_t Data = SwapEndian_16(*((const uint16_t*)*BufferPos)); *BufferPos += sizeof(uint16_t); - + return Data; } - /** Reads 32 bits of raw data frpm the given buffer, incrementing the buffer position afterwards. + /** Reads 32 bits of raw data from the given buffer, incrementing the buffer position afterwards. * * \param[in, out] BufferPos Current position in the buffer where the data is to be read from * @@ -176,13 +179,13 @@ { uint32_t Data = SwapEndian_32(*((const uint32_t*)*BufferPos)); *BufferPos += sizeof(uint32_t); - + return Data; } - /** Adds a new Data Element Sequence container with a 16-bit size header to the buffer. The buffer + /** Adds a new Data Element Sequence container with a 16-bit size header to the buffer. The buffer * pointer's position is advanced past the added header once the element has been added. The returned - * size header value is pre-zeroed out so that it can be incremented as data is placed into the Data + * size header value is pre-zeroed out so that it can be incremented as data is placed into the Data * Element Sequence container. * * The total added size of the container header is three bytes, regardless of the size of its contents @@ -190,41 +193,58 @@ * * \param[in, out] BufferPos Pointer to a buffer where the container header is to be placed * - * \return Pointer to the 16-bit size value of the contaner header, which has been pre-zeroed + * \return Pointer to the 16-bit size value of the container header, which has been pre-zeroed */ static inline uint16_t* SDP_AddSequence16(void** BufferPos) { SDP_WriteData8(BufferPos, (SDP_DATASIZE_Variable16Bit | SDP_DATATYPE_Sequence)); - uint16_t* SizePos = *BufferPos; + uint16_t* SizePos = *BufferPos; SDP_WriteData16(BufferPos, 0); return SizePos; } - + /* Function Prototypes: */ - void SDP_ProcessPacket(void* Data, Bluetooth_Channel_t* const Channel); + void SDP_ProcessPacket(void* Data, + Bluetooth_Channel_t* const Channel); #if defined(INCLUDE_FROM_SERVICEDISCOVERYPROTOCOL_C) - static void SDP_ProcessServiceSearch(const SDP_PDUHeader_t* const SDPHeader, Bluetooth_Channel_t* const Channel); - static void SDP_ProcessServiceAttribute(const SDP_PDUHeader_t* const SDPHeader, Bluetooth_Channel_t* const Channel); - static void SDP_ProcessServiceSearchAttribute(const SDP_PDUHeader_t* const SDPHeader, Bluetooth_Channel_t* const Channel); - - static uint16_t SDP_AddListedAttributesToResponse(const ServiceAttributeTable_t* AttributeTable, uint16_t AttributeList[][2], - const uint8_t TotalAttributes, void** const BufferPos); - static uint16_t SDP_AddAttributeToResponse(const uint16_t AttributeID, const void* AttributeValue, void** ResponseBuffer); - static void* SDP_GetAttributeValue(const ServiceAttributeTable_t* AttributeTable, const uint16_t AttributeID); - - static bool SDP_SearchServiceTable(uint8_t UUIDList[][UUID_SIZE_BYTES], const uint8_t TotalUUIDs, + static void SDP_ProcessServiceSearch(const SDP_PDUHeader_t* const SDPHeader, + Bluetooth_Channel_t* const Channel); + static void SDP_ProcessServiceAttribute(const SDP_PDUHeader_t* const SDPHeader, + Bluetooth_Channel_t* const Channel); + static void SDP_ProcessServiceSearchAttribute(const SDP_PDUHeader_t* const SDPHeader, + Bluetooth_Channel_t* const Channel); + + static uint16_t SDP_AddListedAttributesToResponse(const ServiceAttributeTable_t* AttributeTable, + uint16_t AttributeList[][2], + const uint8_t TotalAttributes, + void** const BufferPos); + static uint16_t SDP_AddAttributeToResponse(const uint16_t AttributeID, + const void* AttributeValue, + void** ResponseBuffer); + static void* SDP_GetAttributeValue(const ServiceAttributeTable_t* AttributeTable, + const uint16_t AttributeID); + + static bool SDP_SearchServiceTable(uint8_t UUIDList[][UUID_SIZE_BYTES], + const uint8_t TotalUUIDs, const ServiceAttributeTable_t* CurrAttributeTable); - static void SDP_CheckUUIDMatch(uint8_t UUIDList[][UUID_SIZE_BYTES], const uint8_t TotalUUIDs, - uint16_t* const UUIDMatchFlags, const void* CurrAttribute); - - static uint8_t SDP_GetAttributeList(uint16_t AttributeList[][2], const void** const CurrentParameter); - static uint8_t SDP_GetUUIDList(uint8_t UUIDList[][UUID_SIZE_BYTES], const void** const CurrentParameter); - - static uint32_t SDP_GetLocalAttributeContainerSize(const void* const AttributeData, uint8_t* const HeaderSize); - static uint32_t SDP_GetDataElementSize(const void** const AttributeHeader, uint8_t* const ElementHeaderSize); + static void SDP_CheckUUIDMatch(uint8_t UUIDList[][UUID_SIZE_BYTES], + const uint8_t TotalUUIDs, + uint16_t* const UUIDMatchFlags, + const void* CurrAttribute); + + static uint8_t SDP_GetAttributeList(uint16_t AttributeList[][2], + const void** const CurrentParameter); + static uint8_t SDP_GetUUIDList(uint8_t UUIDList[][UUID_SIZE_BYTES], + const void** const CurrentParameter); + + static uint32_t SDP_GetLocalAttributeContainerSize(const void* const AttributeData, + uint8_t* const HeaderSize); + static uint32_t SDP_GetDataElementSize(const void** const AttributeHeader, + uint8_t* const ElementHeaderSize); #endif #endif +