diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2010-05-20 13:06:04 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2010-05-20 13:06:04 +0000 |
commit | 3e515cdfa8d8f077c2585c061c6f4a988031c82b (patch) | |
tree | c970426170a82fb64a892d1348e6cd9f735ed8cb /Demos/Host/Incomplete/BluetoothHost/Lib | |
parent | 141d94fa980b6056c1922cbfeb9f5535227331c5 (diff) | |
download | lufa-3e515cdfa8d8f077c2585c061c6f4a988031c82b.tar.gz lufa-3e515cdfa8d8f077c2585c061c6f4a988031c82b.tar.bz2 lufa-3e515cdfa8d8f077c2585c061c6f4a988031c82b.zip |
Short UUIDs are measured in bytes, not bits -- update Service Discovery Protocol code so that it can now correctly match against UUIDs in the service table.
Diffstat (limited to 'Demos/Host/Incomplete/BluetoothHost/Lib')
3 files changed, 16 insertions, 6 deletions
diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.h b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.h index d50f6b480..48e8e47e9 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.h +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.h @@ -55,6 +55,8 @@ /** Bluetooth specification defined channel number for connectionless data */ #define BT_CHANNEL_CONNECTIONLESS 0x0002 + #define BT_ACL_FIRST_AUTOFLUSH (1 << 13) + #define BT_SIGNAL_COMMAND_REJECT 0x01 #define BT_SIGNAL_CONNECTION_REQUEST 0x02 #define BT_SIGNAL_CONNECTION_RESPONSE 0x03 @@ -82,9 +84,7 @@ #define BT_CONFIGURATION_UNKNOWNOPTIONS 0x0003 #define BT_CONFIG_OPTION_MTU 1 - - #define BT_ACL_FIRST_AUTOFLUSH (1 << 13) - + /* Type Defines: */ /** Bluetooth ACL header structure, common to all ACL data packets. */ typedef struct diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.c b/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.c index 4eb262103..c140c17d2 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.c +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.c @@ -76,10 +76,17 @@ const ServiceTable_t SDP_Services_Table[] = }, }; -/* Base UUID value common to all standardized Bluetooth services */ +/** Base UUID value common to all standardized Bluetooth services */ const uint8_t BaseUUID[] = {BASE_96BIT_UUID, 0x00, 0x00, 0x00, 0x00}; +/** Main Service Discovery Protocol packet processing routine. This function processes incomming SDP packets from + * a connected Bluetooth device, and sends back appropriate responses to allow other devices to determine the + * services the local device exposes. + * + * \param[in] Data Incomming packet data containing the SDP request + * \param[in] Channel Channel the request was issued to by the remote device + */ void ServiceDiscovery_ProcessPacket(void* Data, Bluetooth_Channel_t* Channel) { SDP_PDUHeader_t* SDPHeader = (SDP_PDUHeader_t*)Data; @@ -209,7 +216,7 @@ static uint8_t ServiceDiscovery_GetUUIDList(uint8_t UUIDList[][UUID_SIZE_BYTES], uint8_t UUIDLength = ServiceDiscovery_GetDataElementSize(CurrentParameter, &ElementHeaderSize); memcpy(CurrentUUID, BaseUUID, sizeof(BaseUUID)); - memcpy(&CurrentUUID[(UUIDLength <= 32) ? (sizeof(BaseUUID) - 32) : 0], *CurrentParameter, UUIDLength); + memcpy(&CurrentUUID[(UUIDLength <= 4) ? (UUID_SIZE_BYTES - 4) : 0], *CurrentParameter, UUIDLength); BT_SDP_DEBUG(2, "-- UUID (%d): 0x%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X", UUIDLength, diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.h b/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.h index ccbfed41e..7986d5e72 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.h +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/ServiceDiscoveryProtocol.h @@ -59,7 +59,10 @@ #define SDP_ATTRIBUTE_PROVIDER 0x0002 #define SDP_ATTRIBUTE_AVAILABILITY 0x0008 + /** Size of a full 128 bit UUID, in bytes */ #define UUID_SIZE_BYTES 16 + + /** First 96 bits common to all standadized Bluetooth services */ #define BASE_96BIT_UUID 0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00 /** Defines a service attribute as a string of characters. @@ -97,7 +100,7 @@ * \param ... Data to associate with the attribute */ #define SERVICE_ATTRIBUTE_LEN32(name, type, size, ...) const ServiceAttributeData32Bit_t name PROGMEM = \ - {.Header = (type | 7), .Size = size, .Data = __VA_ARGS__} + {.Header = (type | 7), .Size = size, .Data = __VA_ARGS__} /** Terminator for a service attribute table of type \ref ServiceAttributeTable_t. */ #define SERVICE_ATTRIBUTE_TABLE_TERMINATOR {.Data = NULL} |