From fd96b288824caaa3ee4e5e03887f016de9df80cf Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Thu, 1 Apr 2010 04:30:21 +0000 Subject: More improvements to the incomplete BluetoothHost demo - add Disconnection Event processing. Remove unused macro in the host mode demos for the maximum Configuration Descriptor size. --- .../Host/Incomplete/BluetoothHost/BluetoothHost.c | 47 +++++--- .../Host/Incomplete/BluetoothHost/BluetoothHost.h | 15 +-- .../Incomplete/BluetoothHost/ConfigDescriptor.c | 23 +++- .../Incomplete/BluetoothHost/ConfigDescriptor.h | 25 ++-- .../Incomplete/BluetoothHost/DeviceDescriptor.c | 17 ++- .../Incomplete/BluetoothHost/DeviceDescriptor.h | 18 ++- .../BluetoothHost/Lib/BluetoothACLPackets.c | 63 +++++----- .../BluetoothHost/Lib/BluetoothACLPackets.h | 2 + .../BluetoothHost/Lib/BluetoothHCICommands.c | 128 ++++++++++++--------- .../BluetoothHost/Lib/BluetoothHCICommands.h | 31 ++--- .../Incomplete/BluetoothHost/Lib/BluetoothStack.h | 6 +- .../LowLevel/GenericHIDHost/ConfigDescriptor.h | 3 - .../JoystickHostWithParser/ConfigDescriptor.h | 3 - .../Host/LowLevel/KeyboardHost/ConfigDescriptor.h | 3 - .../KeyboardHostWithParser/ConfigDescriptor.h | 3 - Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h | 3 - .../LowLevel/MassStorageHost/ConfigDescriptor.h | 3 - Demos/Host/LowLevel/MouseHost/ConfigDescriptor.h | 3 - .../MouseHostWithParser/ConfigDescriptor.h | 5 +- Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.h | 3 - .../LowLevel/RNDISEthernetHost/ConfigDescriptor.h | 3 - .../LowLevel/StillImageHost/ConfigDescriptor.h | 3 - .../LowLevel/VirtualSerialHost/ConfigDescriptor.h | 3 - Projects/MissileLauncher/ConfigDescriptor.h | 3 - 24 files changed, 229 insertions(+), 187 deletions(-) diff --git a/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.c b/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.c index e49281538..312d7166e 100644 --- a/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.c +++ b/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.c @@ -28,11 +28,11 @@ this software. */ -/* - Bluetooth Dongle host demo application. - - ** NOT CURRENTLY FUNCTIONAL - DO NOT USE ** -*/ +/** \file + * + * Main source file for the BluetoothHost demo. This file contains the main tasks of + * the demo and is responsible for the initial application hardware configuration. + */ #include "BluetoothHost.h" @@ -43,23 +43,26 @@ Bluetooth_Device_t Bluetooth_DeviceConfiguration = Name: "LUFA Bluetooth Demo" }; - +/** Main program entry point. This routine configures the hardware required by the application, then + * enters a loop to run the application tasks in sequence. + */ int main(void) { SetupHardware(); + + puts_P(PSTR(ESC_FG_CYAN "Bluetooth Host Demo running.\r\n" ESC_FG_WHITE)); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); - puts_P(PSTR(ESC_FG_CYAN "Bluetooth Host Demo running.\r\n" ESC_FG_WHITE)); - for (;;) { Bluetooth_Stack_Task(); - Bluetooth_Management_Task(); + Bluetooth_Host_Task(); USB_USBTask(); } } +/** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { /* Disable watchdog if enabled by bootloader/fuses */ @@ -75,26 +78,34 @@ void SetupHardware(void) USB_Init(); } +/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and + * starts the library USB task to begin the enumeration and USB management process. + */ void EVENT_USB_Host_DeviceAttached(void) { puts_P(PSTR(ESC_FG_GREEN "Device Attached.\r\n" ESC_FG_WHITE)); - LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); } +/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and + * stops the library USB task management process. + */ void EVENT_USB_Host_DeviceUnattached(void) { puts_P(PSTR(ESC_FG_GREEN "\r\nDevice Unattached.\r\n" ESC_FG_WHITE)); - LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); } +/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully + * enumerated by the host and is now ready to be used by the application. + */ void EVENT_USB_Host_DeviceEnumerationComplete(void) { LEDs_SetAllLEDs(LEDMASK_USB_READY); } -void EVENT_USB_Host_HostError(uint8_t ErrorCode) +/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */ +void EVENT_USB_Host_HostError(const uint8_t ErrorCode) { USB_ShutDown(); @@ -105,7 +116,10 @@ void EVENT_USB_Host_HostError(uint8_t ErrorCode) for(;;); } -void EVENT_USB_Host_DeviceEnumerationFailed(uint8_t ErrorCode, uint8_t SubErrorCode) +/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while + * enumerating an attached USB device. + */ +void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode) { printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n" " -- Error Code %d\r\n" @@ -115,7 +129,8 @@ void EVENT_USB_Host_DeviceEnumerationFailed(uint8_t ErrorCode, uint8_t SubErrorC LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } -void Bluetooth_Management_Task(void) +/** Task to set the configuration of the attached device after it has been enumerated. */ +void Bluetooth_Host_Task(void) { uint8_t ErrorCode; @@ -127,7 +142,7 @@ void Bluetooth_Management_Task(void) /* Get and process the configuration descriptor data */ if ((ErrorCode = ProcessDeviceDescriptor()) != SuccessfulDeviceRead) { - if (ErrorCode == ControlErrorDuringDeviceRead) + if (ErrorCode == DevControlError) puts_P(PSTR(ESC_FG_RED "Control Error (Get Device).\r\n")); else puts_P(PSTR(ESC_FG_RED "Invalid Device.\r\n")); @@ -163,7 +178,7 @@ void Bluetooth_Management_Task(void) /* Get and process the configuration descriptor data */ if ((ErrorCode = ProcessConfigurationDescriptor()) != SuccessfulConfigRead) { - if (ErrorCode == ControlErrorDuringConfigRead) + if (ErrorCode == ControlError) puts_P(PSTR(ESC_FG_RED "Control Error (Get Configuration).\r\n")); else puts_P(PSTR(ESC_FG_RED "Invalid Device.\r\n")); diff --git a/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.h b/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.h index b5bfa0ef3..a24b67a20 100644 --- a/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.h +++ b/Demos/Host/Incomplete/BluetoothHost/BluetoothHost.h @@ -28,6 +28,11 @@ this software. */ +/** \file + * + * Header file for BluetoothHost.c. + */ + #ifndef _BLUETOOTH_HOST_H_ #define _BLUETOOTH_HOST_H_ @@ -62,19 +67,15 @@ /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */ #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3) - #define BLUETOOTH_DATA_IN_PIPE 1 - #define BLUETOOTH_DATA_OUT_PIPE 2 - #define BLUETOOTH_EVENTS_PIPE 3 - /* Task Definitions: */ - void Bluetooth_Management_Task(void); + void Bluetooth_Host_Task(void); /* Event Handlers: */ void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceEnumerationComplete(void); - void EVENT_USB_Host_HostError(uint8_t ErrorCode); - void EVENT_USB_Host_DeviceEnumerationFailed(uint8_t ErrorCode, uint8_t SubErrorCode); + void EVENT_USB_Host_HostError(const uint8_t ErrorCode); + void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode); /* Function Prototypes: */ void SetupHardware(void); diff --git a/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.c b/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.c index ba4ac4d3b..4c94eaaba 100644 --- a/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.c +++ b/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.c @@ -28,8 +28,23 @@ this software. */ +/** \file + * + * USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations + * needed to communication with an attached USB device. Descriptors are special computer-readable structures + * which the host requests upon device enumeration, to determine the device's capabilities and functions. + */ + #include "ConfigDescriptor.h" +/** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This + * routine will read in the entire configuration descriptor, and configure the hosts pipes to correctly communicate + * with compatible devices. + * + * This routine searches for a BT interface descriptor containing bulk IN and OUT data endpoints. + * + * \return An error code from the \ref Bluetooth_GetConfigDescriptorDataCodes_t enum. + */ uint8_t ProcessConfigurationDescriptor(void) { uint8_t ConfigDescriptorData[512]; @@ -47,7 +62,7 @@ uint8_t ProcessConfigurationDescriptor(void) case HOST_GETCONFIG_BuffOverflow: return DescriptorTooLarge; default: - return ControlErrorDuringConfigRead; + return ControlError; } /* The bluetooth USB transport addendum mandates that the data (not streaming voice) endpoints @@ -56,7 +71,7 @@ uint8_t ProcessConfigurationDescriptor(void) /* Ensure that an interface was found, and the end of the descriptor was not reached */ if (!(CurrConfigBytesRem)) - return NoInterfaceFound; + return NoBTInterfaceFound; /* Get the data IN, data OUT and event notification endpoints for the bluetooth interface */ while (FoundEndpoints != ((1 << BLUETOOTH_DATA_IN_PIPE) | (1 << BLUETOOTH_DATA_OUT_PIPE) | @@ -64,7 +79,7 @@ uint8_t ProcessConfigurationDescriptor(void) { /* Fetch the next endpoint from the current bluetooth interface */ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation, - NextInterfaceBluetoothDataEndpoint)) + DComp_NextInterfaceBluetoothDataEndpoint)) { /* Descriptor not found, error out */ return NoEndpointFound; @@ -118,7 +133,7 @@ uint8_t ProcessConfigurationDescriptor(void) return SuccessfulConfigRead; } -uint8_t NextInterfaceBluetoothDataEndpoint(void* CurrentDescriptor) +uint8_t DComp_NextInterfaceBluetoothDataEndpoint(void* CurrentDescriptor) { /* PURPOSE: Find next interface endpoint descriptor before next interface descriptor */ diff --git a/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.h b/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.h index c72f010ae..a54727d48 100644 --- a/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.h +++ b/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.h @@ -28,6 +28,11 @@ this software. */ +/** \file + * + * Header file for ConfigDescriptor.c. + */ + #ifndef _CONFIGDESCRIPTOR_H_ #define _CONFIGDESCRIPTOR_H_ @@ -35,24 +40,24 @@ #include #include "BluetoothHost.h" - - /* Macros: */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 /* Enums: */ + /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */ enum BluetoothHost_GetConfigDescriptorDataCodes_t { - SuccessfulConfigRead = 0, - ControlErrorDuringConfigRead = 1, - InvalidConfigDataReturned = 2, - DescriptorTooLarge = 3, - NoInterfaceFound = 4, - NoEndpointFound = 5, + SuccessfulConfigRead = 0, /**< Configuration Descriptor was processed successfully */ + DevControlError = 1, /**< A control request to the device failed to complete successfully */ + DescriptorTooLarge = 2, /**< The device's Configuration Descriptor is too large to process */ + InvalidConfigDataReturned = 3, /**< The device returned an invalid Configuration Descriptor */ + NoBTInterfaceFound = 4, /**< A compatible Blutooth interface was not found in the device's Configuration Descriptor */ + NoEndpointFound = 5, /**< A compatible set of Bluetooth endpoints were not found in the + * device's Bluetooth interface + */ }; /* Function Prototypes: */ uint8_t ProcessConfigurationDescriptor(void); - uint8_t NextInterfaceBluetoothDataEndpoint(void* CurrentDescriptor); + uint8_t DComp_NextInterfaceBluetoothDataEndpoint(void* CurrentDescriptor); #endif diff --git a/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.c b/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.c index 877684013..65d5b3311 100644 --- a/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.c +++ b/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.c @@ -28,15 +28,28 @@ this software. */ +/** \file + * + * USB Device Descriptor processing routines, to determine the overall device parameters. Descriptors are special + * computer-readable structures which the host requests upon device enumeration, to determine information about + * the attached device. + */ + #include "DeviceDescriptor.h" +/** Reads and processes an attached device's Device Descriptor, to determine compatibility + * + * This routine checks to ensure that the attached device's class codes match those for Bluetooth devices. + * + * \return An error code from the \ref BluetoothHost_GetDeviceDescriptorDataCodes_t enum. + */ uint8_t ProcessDeviceDescriptor(void) { USB_Descriptor_Device_t DeviceDescriptor; /* Send the request to retrieve the device descriptor */ if (USB_Host_GetDeviceDescriptor(&DeviceDescriptor) != HOST_SENDCONTROL_Successful) - return ControlErrorDuringDeviceRead; + return DevControlError; /* Validate returned data - ensure the returned data is a device descriptor */ if (DeviceDescriptor.Header.Type != DTYPE_Device) @@ -47,7 +60,7 @@ uint8_t ProcessDeviceDescriptor(void) (DeviceDescriptor.SubClass != BLUETOOTH_DEVICE_SUBCLASS) || (DeviceDescriptor.Protocol != BLUETOOTH_DEVICE_PROTOCOL)) { - return IncorrectDevice; + return IncorrectBTDevice; } return SuccessfulDeviceRead; diff --git a/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.h b/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.h index def9042b5..a87085a3a 100644 --- a/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.h +++ b/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.h @@ -28,6 +28,11 @@ this software. */ +/** \file + * + * Header file for DeviceDescriptor.c. + */ + #ifndef _DEVICEDESCRIPTOR_H_ #define _DEVICEDESCRIPTOR_H_ @@ -37,17 +42,22 @@ #include "BluetoothHost.h" /* Macros: */ + /** Device Class value for the Bluetooth Device class */ #define BLUETOOTH_DEVICE_CLASS 0xE0 + + /** Device Subclass value for the Bluetooth Device class */ #define BLUETOOTH_DEVICE_SUBCLASS 0x01 + + /** Device Protocol value for the Bluetooth Device class */ #define BLUETOOTH_DEVICE_PROTOCOL 0x01 /* Enums: */ enum BluetoothHost_GetDeviceDescriptorDataCodes_t { - SuccessfulDeviceRead = 0, - ControlErrorDuringDeviceRead = 1, - InvalidDeviceDataReturned = 2, - IncorrectDevice = 3, + SuccessfulDeviceRead = 0, /**< Device Descriptor was processed successfully */ + ControlError = 1, /**< A control request to the device failed to complete successfully */ + InvalidDeviceDataReturned = 2, /**< The device returned an invalid Device Descriptor */ + IncorrectBTDevice = 3, /**< The attached device is not a Bluetooth class device */ }; /* Function Prototypes: */ diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c index 3292a53d7..e8daa0533 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.c @@ -33,11 +33,10 @@ void Bluetooth_ProcessACLPackets(void) { - Bluetooth_ACL_Header_t ACLPacketHeader; + Bluetooth_ACL_Header_t ACLPacketHeader; Bluetooth_DataPacket_Header_t DataHeader; Pipe_SelectPipe(BLUETOOTH_DATA_IN_PIPE); - Pipe_SetPipeToken(PIPE_TOKEN_IN); Pipe_Unfreeze(); if (!(Pipe_IsReadWriteAllowed())) @@ -49,11 +48,11 @@ void Bluetooth_ProcessACLPackets(void) Pipe_Read_Stream_LE(&ACLPacketHeader, sizeof(ACLPacketHeader)); Pipe_Read_Stream_LE(&DataHeader, sizeof(DataHeader)); - BT_DEBUG("(ACL) Packet Received", NULL); - BT_DEBUG("(ACL) -- Connection Handle: 0x%04X", ACLPacketHeader.ConnectionHandle); - BT_DEBUG("(ACL) -- Data Length: 0x%04X", ACLPacketHeader.DataLength); - BT_DEBUG("(ACL) -- Destination Channel: 0x%04X", DataHeader.DestinationChannel); - BT_DEBUG("(ACL) -- Payload Length: 0x%04X", DataHeader.PayloadLength); + BT_ACL_DEBUG("Packet Received", NULL); + BT_ACL_DEBUG("-- Connection Handle: 0x%04X", (ACLPacketHeader.ConnectionHandle & 0x0FFF)); + BT_ACL_DEBUG("-- Data Length: 0x%04X", ACLPacketHeader.DataLength); + BT_ACL_DEBUG("-- Destination Channel: 0x%04X", DataHeader.DestinationChannel); + BT_ACL_DEBUG("-- Payload Length: 0x%04X", DataHeader.PayloadLength); if (DataHeader.DestinationChannel == BLUETOOTH_CHANNEL_SIGNALING) { @@ -69,14 +68,14 @@ void Bluetooth_ProcessACLPackets(void) Bluetooth_ProcessSignalPacket_ConfigurationRequest(&ACLPacketHeader, &DataHeader, &SignalCommandHeader); break; case BLUETOOTH_SIGNAL_INFORMATION_REQUEST: - BT_DEBUG("(ACL) -- Information Request, Discarded", NULL); + BT_ACL_DEBUG(">> Information Request, Discarded", NULL); Pipe_Discard_Stream(ACLPacketHeader.DataLength); Pipe_ClearIN(); Pipe_Freeze(); break; default: - BT_DEBUG("(ACL) >> Unknown Signaling Command 0x%02X", SignalCommandHeader.Code); + BT_ACL_DEBUG(">> Unknown Signaling Command 0x%02X", SignalCommandHeader.Code); Pipe_Discard_Stream(ACLPacketHeader.DataLength); Pipe_ClearIN(); @@ -90,10 +89,10 @@ void Bluetooth_ProcessACLPackets(void) Pipe_Read_Stream_LE(&DataPayload, sizeof(DataPayload)); DataHeader.PayloadLength = 0; - BT_DEBUG("(ACL) -- Data Payload: ", NULL); + BT_ACL_DEBUG("-- Data Payload: ", NULL); for (uint16_t B = 0; B < sizeof(DataPayload); B++) printf("0x%02X ", DataPayload[B]); - BT_DEBUG("", NULL); + printf("\r\n"); Pipe_Discard_Stream(ACLPacketHeader.DataLength); Pipe_ClearIN(); @@ -109,14 +108,13 @@ static inline void Bluetooth_ProcessSignalPacket_ConnectionRequest(Bluetooth_ACL Pipe_Read_Stream_LE(&ConnectionRequest, sizeof(ConnectionRequest)); - BT_DEBUG("(ACL) >> L2CAP Connection Request", NULL); - BT_DEBUG("(ACL) -- PSM: 0x%04X", ConnectionRequest.PSM); - BT_DEBUG("(ACL) -- Source Channel: 0x%04X", ConnectionRequest.SourceChannel); + BT_ACL_DEBUG(">> L2CAP Connection Request", NULL); + BT_ACL_DEBUG("-- PSM: 0x%04X", ConnectionRequest.PSM); + BT_ACL_DEBUG("-- Source Channel: 0x%04X", ConnectionRequest.SourceChannel); Pipe_ClearIN(); Pipe_Freeze(); Pipe_SelectPipe(BLUETOOTH_DATA_OUT_PIPE); - Pipe_SetPipeToken(PIPE_TOKEN_OUT); Pipe_Unfreeze(); Bluetooth_SignalCommand_ConnectionResponse_t ConnectionResponse; @@ -143,14 +141,14 @@ static inline void Bluetooth_ProcessSignalPacket_ConnectionRequest(Bluetooth_ACL Pipe_ClearOUT(); Pipe_Freeze(); - BT_DEBUG("(ACL) Packet Sent", NULL); - BT_DEBUG("(ACL) -- Connection Handle: 0x%04X", ACLPacketHeader->ConnectionHandle); - BT_DEBUG("(ACL) -- Data Length: 0x%04X", ACLPacketHeader->DataLength); - BT_DEBUG("(ACL) -- Destination Channel: 0x%04X", DataHeader->DestinationChannel); - BT_DEBUG("(ACL) -- Payload Length: 0x%04X", DataHeader->PayloadLength); - BT_DEBUG("(ACL) >> L2CAP Connection Response", NULL); - BT_DEBUG("(ACL) -- Source Channel: 0x%04X", ConnectionResponse.SourceChannel); - BT_DEBUG("(ACL) -- Destination Channel: 0x%04X", ConnectionResponse.DestinationChannel); + BT_ACL_DEBUG("Packet Sent", NULL); + BT_ACL_DEBUG("-- Connection Handle: 0x%04X", (ACLPacketHeader->ConnectionHandle & 0x0FFF)); + BT_ACL_DEBUG("-- Data Length: 0x%04X", ACLPacketHeader->DataLength); + BT_ACL_DEBUG("-- Destination Channel: 0x%04X", DataHeader->DestinationChannel); + BT_ACL_DEBUG("-- Payload Length: 0x%04X", DataHeader->PayloadLength); + BT_ACL_DEBUG(">> L2CAP Connection Response", NULL); + BT_ACL_DEBUG("-- Source Channel: 0x%04X", ConnectionResponse.SourceChannel); + BT_ACL_DEBUG("-- Destination Channel: 0x%04X", ConnectionResponse.DestinationChannel); } static inline void Bluetooth_ProcessSignalPacket_ConfigurationRequest(Bluetooth_ACL_Header_t* ACLPacketHeader, @@ -161,13 +159,12 @@ static inline void Bluetooth_ProcessSignalPacket_ConfigurationRequest(Bluetooth_ Pipe_Read_Stream_LE(&ConfigurationRequest, sizeof(ConfigurationRequest)); - BT_DEBUG("(ACL) >> L2CAP Configuration Request", NULL); - BT_DEBUG("(ACL) -- Destination Channel: 0x%04X", ConfigurationRequest.DestinationChannel); + BT_ACL_DEBUG(">> L2CAP Configuration Request", NULL); + BT_ACL_DEBUG("-- Destination Channel: 0x%04X", ConfigurationRequest.DestinationChannel); Pipe_ClearIN(); Pipe_Freeze(); Pipe_SelectPipe(BLUETOOTH_DATA_OUT_PIPE); - Pipe_SetPipeToken(PIPE_TOKEN_OUT); Pipe_Unfreeze(); Bluetooth_SignalCommand_ConfigurationResponse_t ConfigurationResponse; @@ -183,7 +180,7 @@ static inline void Bluetooth_ProcessSignalPacket_ConfigurationRequest(Bluetooth_ if (ChannelData != NULL) ChannelData->State = Channel_Open; - // TODO: Add channel config data to the tail of ConfigurationResponse + // TODO: Add channel config data to the tail of ConfigurationResponse ConfigurationResponse.SourceChannel = ChannelData->RemoteNumber; ConfigurationResponse.Flags = 0x00; @@ -197,10 +194,10 @@ static inline void Bluetooth_ProcessSignalPacket_ConfigurationRequest(Bluetooth_ Pipe_ClearOUT(); Pipe_Freeze(); - BT_DEBUG("(ACL) Packet Sent", NULL); - BT_DEBUG("(ACL) -- Connection Handle: 0x%04X", ACLPacketHeader->ConnectionHandle); - BT_DEBUG("(ACL) -- Data Length: 0x%04X", ACLPacketHeader->DataLength); - BT_DEBUG("(ACL) -- Destination Channel: 0x%04X", DataHeader->DestinationChannel); - BT_DEBUG("(ACL) -- Payload Length: 0x%04X", DataHeader->PayloadLength); - BT_DEBUG("(ACL) >> L2CAP Configuration Response", NULL); + BT_ACL_DEBUG("Packet Sent", NULL); + BT_ACL_DEBUG("-- Connection Handle: 0x%04X", (ACLPacketHeader->ConnectionHandle & 0x0FFF)); + BT_ACL_DEBUG("-- Data Length: 0x%04X", ACLPacketHeader->DataLength); + BT_ACL_DEBUG("-- Destination Channel: 0x%04X", DataHeader->DestinationChannel); + BT_ACL_DEBUG("-- Payload Length: 0x%04X", DataHeader->PayloadLength); + BT_ACL_DEBUG(">> L2CAP Configuration Response", NULL); } diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.h b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.h index 74924e0dc..c0fd1f620 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.h +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothACLPackets.h @@ -41,6 +41,8 @@ #include "BluetoothStack.h" /* Macros: */ + #define BT_ACL_DEBUG(s, ...) printf_P(PSTR("(ACL) " s "\r\n"), __VA_ARGS__) + #define BLUETOOTH_CHANNEL_SIGNALING 0x0001 #define BLUETOOTH_CHANNEL_CONNECTIONLESS 0x0002 diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c index 8fb7367e9..dd2a3e5cf 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.c @@ -30,15 +30,15 @@ #include "BluetoothHCICommands.h" -static Bluetooth_HCICommand_Header_t HCICommandHeader; -static Bluetooth_HCIEvent_Header_t HCIEventHeader; +static Bluetooth_HCICommand_Header_t HCICommandHeader; - uint8_t Bluetooth_HCIProcessingState; - uint8_t Bluetooth_HCINextState; -static uint8_t Bluetooth_TempDeviceAddress[6]; + uint8_t Bluetooth_HCIProcessingState; +static uint8_t Bluetooth_HCINextState; +static uint8_t Bluetooth_TempDeviceAddress[6]; -static uint8_t Bluetooth_SendHCICommand(void* Parameters, uint8_t ParamLength) +static uint8_t Bluetooth_SendHCICommand(void* Parameters, uint16_t ParameterLength) { + /* Need to reserve the amount of bytes given in the header for the complete payload */ uint8_t CommandBuffer[sizeof(HCICommandHeader) + HCICommandHeader.ParameterLength]; USB_ControlRequest = (USB_Request_Header_t) @@ -49,21 +49,23 @@ static uint8_t Bluetooth_SendHCICommand(void* Parameters, uint8_t ParamLength) .wIndex = 0, .wLength = sizeof(CommandBuffer) }; - - memset(CommandBuffer, 0x00, sizeof(CommandBuffer)); + + /* Copy over the HCI command header to the allocated buffer */ memcpy(CommandBuffer, &HCICommandHeader, sizeof(HCICommandHeader)); - if (ParamLength) - memcpy(&CommandBuffer[sizeof(HCICommandHeader)], Parameters, ParamLength); + /* Zero out the parameter section of the response to ensure that any padding bytes do not expose private RAM contents */ + memset(&CommandBuffer[sizeof(HCICommandHeader)], 0x00, HCICommandHeader.ParameterLength); + /* Copy over the command parameters (if any) to the command buffer - note, the number of actual source parameter bytes + may differ to those in the header; any difference in length is filled with 0x00 padding bytes */ + memcpy(&CommandBuffer[sizeof(HCICommandHeader)], Parameters, ParameterLength); + Pipe_SelectPipe(PIPE_CONTROLPIPE); return USB_Host_SendControlRequest(CommandBuffer); } void Bluetooth_ProcessHCICommands(void) { - uint8_t ErrorCode; - switch (Bluetooth_HCIProcessingState) { case Bluetooth_ProcessEvents: @@ -72,68 +74,87 @@ void Bluetooth_ProcessHCICommands(void) if (Pipe_IsReadWriteAllowed()) { + Bluetooth_HCIEvent_Header_t HCIEventHeader; + + /* Read in the event header to fetch the event code and payload length */ Pipe_Read_Stream_LE(&HCIEventHeader, sizeof(HCIEventHeader)); + /* Create a temporary buffer for the event parameters */ uint8_t EventParams[HCIEventHeader.ParameterLength]; + /* Read in the event parameters into the temporary buffer */ Pipe_Read_Stream_LE(&EventParams, HCIEventHeader.ParameterLength); Pipe_ClearIN(); - BT_DEBUG("(HCI) Event Code: 0x%02X", HCIEventHeader.EventCode); + BT_HCI_DEBUG("Event Code: 0x%02X", HCIEventHeader.EventCode); switch (HCIEventHeader.EventCode) { case EVENT_COMMAND_COMPLETE: Bluetooth_HCIProcessingState = Bluetooth_HCINextState; - BT_DEBUG("(HCI) >> Command Complete (Opcode 0x%04x)", + BT_HCI_DEBUG(">> Command Complete (Opcode 0x%04x)", ((Bluetooth_HCIEvent_CommandComplete_t*)&EventParams)->Opcode); break; case EVENT_COMMAND_STATUS: + /* If the execution of a command failed, reset the stack */ if (((Bluetooth_HCIEvent_CommandStatus_t*)&EventParams)->Status) Bluetooth_HCIProcessingState = Bluetooth_Init; - BT_DEBUG("(HCI) >> Command Status: 0x%02X", + BT_HCI_DEBUG(">> Command Status: 0x%02X", ((Bluetooth_HCIEvent_CommandStatus_t*)&EventParams)->Status); break; case EVENT_CONNECTION_REQUEST: + /* Need to store the remote device's BT address in a temporary buffer for later use */ memcpy(Bluetooth_TempDeviceAddress, &((Bluetooth_HCIEvent_ConnectionRequest_t*)&EventParams)->RemoteAddress, sizeof(Bluetooth_TempDeviceAddress)); + /* Only accept the connection if it is a ACL (data) connection */ Bluetooth_HCIProcessingState = (Bluetooth_Connection.IsConnected || (((Bluetooth_HCIEvent_ConnectionRequest_t*)&EventParams)->LinkType != 0x01)) ? Bluetooth_Conn_RejectConnection : Bluetooth_Conn_AcceptConnection; - BT_DEBUG("(HCI) >> Connection Request from Device %02X:%02X:%02X:%02X:%02X:%02X", + BT_HCI_DEBUG(">> Connection Request from Device %02X:%02X:%02X:%02X:%02X:%02X", Bluetooth_TempDeviceAddress[5], Bluetooth_TempDeviceAddress[4], Bluetooth_TempDeviceAddress[3], Bluetooth_TempDeviceAddress[2], Bluetooth_TempDeviceAddress[1], Bluetooth_TempDeviceAddress[0]); break; case EVENT_PIN_CODE_REQUEST: + /* Need to store the remote device's BT address in a temporary buffer for later use */ memcpy(Bluetooth_TempDeviceAddress, &((Bluetooth_HCIEvent_PinCodeRequest_t*)&EventParams)->RemoteAddress, sizeof(Bluetooth_TempDeviceAddress)); Bluetooth_HCIProcessingState = Bluetooth_Conn_SendPINCode; - BT_DEBUG("(HCI) >> PIN Request from Device %02X:%02X:%02X:%02X:%02X:%02X", + BT_HCI_DEBUG(">> PIN Request from Device %02X:%02X:%02X:%02X:%02X:%02X", Bluetooth_TempDeviceAddress[5], Bluetooth_TempDeviceAddress[4], Bluetooth_TempDeviceAddress[3], Bluetooth_TempDeviceAddress[2], Bluetooth_TempDeviceAddress[1], Bluetooth_TempDeviceAddress[0]); break; case EVENT_CONNECTION_COMPLETE: + /* Need to store the remote device's BT address in a temporary buffer for later use */ memcpy(Bluetooth_Connection.RemoteAddress, &((Bluetooth_HCIEvent_ConnectionComplete_t*)&EventParams)->RemoteAddress, sizeof(Bluetooth_TempDeviceAddress)); + /* Store the created connection handle and indicate that the connection has been established */ Bluetooth_Connection.ConnectionHandle = ((Bluetooth_HCIEvent_ConnectionComplete_t*)&EventParams)->ConnectionHandle; Bluetooth_Connection.IsConnected = true; - BT_DEBUG("(HCI) >> Connection Complete to Device %02X:%02X:%02X:%02X:%02X:%02X, Handle 0x%04x", + BT_HCI_DEBUG(">> Connection Complete to Device %02X:%02X:%02X:%02X:%02X:%02X, Handle 0x%04x", Bluetooth_Connection.RemoteAddress[5], Bluetooth_Connection.RemoteAddress[4], Bluetooth_Connection.RemoteAddress[3], Bluetooth_Connection.RemoteAddress[2], Bluetooth_Connection.RemoteAddress[1], Bluetooth_Connection.RemoteAddress[0], Bluetooth_Connection.ConnectionHandle); break; + case EVENT_DISCONNECTION_COMPLETE: + BT_HCI_DEBUG(">> Disconnection Complete", NULL); + + /* Device disconnected, indicate connection information no longer valid */ + Bluetooth_Connection.IsConnected = false; + + Bluetooth_HCIProcessingState = Bluetooth_Init; + break; } } @@ -141,6 +162,7 @@ void Bluetooth_ProcessHCICommands(void) break; case Bluetooth_Init: + /* Reset the connection information structure to destroy any previous connection state */ memset(&Bluetooth_Connection, 0x00, sizeof(Bluetooth_Connection)); Bluetooth_HCIProcessingState = Bluetooth_Init_Reset; @@ -152,24 +174,11 @@ void Bluetooth_ProcessHCICommands(void) ParameterLength: 0, }; - BT_DEBUG("(HCI) Enter State: Bluetooth_Init_Reset", NULL); + BT_HCI_DEBUG("Enter State: Bluetooth_Init_Reset", NULL); - ErrorCode = Bluetooth_SendHCICommand(NULL, 0); + /* Send the command to reset the bluetooth dongle controller */ + Bluetooth_SendHCICommand(NULL, 0); - Bluetooth_HCINextState = Bluetooth_Init_ReadBufferSize; - Bluetooth_HCIProcessingState = Bluetooth_ProcessEvents; - break; - case Bluetooth_Init_ReadBufferSize: - HCICommandHeader = (Bluetooth_HCICommand_Header_t) - { - OpCode: {OGF: OGF_CTRLR_INFORMATIONAL, OCF: OGF_CTRLR_INFORMATIONAL_READBUFFERSIZE}, - ParameterLength: 0, - }; - - BT_DEBUG("(HCI) Enter State: Bluetooth_Init_ReadBufferSize", NULL); - - ErrorCode = Bluetooth_SendHCICommand(NULL, 0); - Bluetooth_HCINextState = Bluetooth_Init_SetLocalName; Bluetooth_HCIProcessingState = Bluetooth_ProcessEvents; break; @@ -180,10 +189,11 @@ void Bluetooth_ProcessHCICommands(void) ParameterLength: 248, }; - BT_DEBUG("(HCI) Enter State: Bluetooth_Init_SetLocalName", NULL); - BT_DEBUG("(HCI) -- Name: %s", Bluetooth_DeviceConfiguration.Name); + BT_HCI_DEBUG("Enter State: Bluetooth_Init_SetLocalName", NULL); + BT_HCI_DEBUG("-- Name: %s", Bluetooth_DeviceConfiguration.Name); - ErrorCode = Bluetooth_SendHCICommand(Bluetooth_DeviceConfiguration.Name, strlen(Bluetooth_DeviceConfiguration.Name)); + /* Send the command to set the bluetooth dongle's name for other devices to see */ + Bluetooth_SendHCICommand(Bluetooth_DeviceConfiguration.Name, strlen(Bluetooth_DeviceConfiguration.Name)); Bluetooth_HCINextState = Bluetooth_Init_SetDeviceClass; Bluetooth_HCIProcessingState = Bluetooth_ProcessEvents; @@ -195,9 +205,10 @@ void Bluetooth_ProcessHCICommands(void) ParameterLength: 3, }; - BT_DEBUG("(HCI) Enter State: Bluetooth_Init_SetDeviceClass", NULL); + BT_HCI_DEBUG("Enter State: Bluetooth_Init_SetDeviceClass", NULL); - ErrorCode = Bluetooth_SendHCICommand(&Bluetooth_DeviceConfiguration.Class, 3); + /* Send the command to set the class of the device for other devices to see */ + Bluetooth_SendHCICommand(&Bluetooth_DeviceConfiguration.Class, 3); Bluetooth_HCINextState = Bluetooth_Init_WriteScanEnable; Bluetooth_HCIProcessingState = Bluetooth_ProcessEvents; @@ -209,10 +220,12 @@ void Bluetooth_ProcessHCICommands(void) ParameterLength: 1, }; - BT_DEBUG("(HCI) Enter State: Bluetooth_Init_WriteScanEnable", NULL); + BT_HCI_DEBUG("Enter State: Bluetooth_Init_WriteScanEnable", NULL); - uint8_t Interval = InquiryAndPageScans; - ErrorCode = Bluetooth_SendHCICommand(&Interval, 1); + uint8_t Interval = BT_SCANMODE_InquiryAndPageScans; + + /* Send the command to set the remote device scanning mode */ + Bluetooth_SendHCICommand(&Interval, 1); Bluetooth_HCINextState = Bluetooth_ProcessEvents; Bluetooth_HCIProcessingState = Bluetooth_ProcessEvents; @@ -224,14 +237,17 @@ void Bluetooth_ProcessHCICommands(void) ParameterLength: sizeof(Bluetooth_HCICommand_AcceptConnectionRequest_t), }; - BT_DEBUG("(HCI) Enter State: Bluetooth_Conn_AcceptConnection", NULL); + BT_HCI_DEBUG("Enter State: Bluetooth_Conn_AcceptConnection", NULL); + /* Copy over the temporary BT device address saved from the Connection Request event, indicate slave + connection role */ Bluetooth_HCICommand_AcceptConnectionRequest_t AcceptConnectionParams; - - memcpy(AcceptConnectionParams.RemoteAddress, Bluetooth_TempDeviceAddress, sizeof(Bluetooth_TempDeviceAddress)); + memcpy(AcceptConnectionParams.RemoteAddress, Bluetooth_TempDeviceAddress, + sizeof(AcceptConnectionParams.RemoteAddress)); AcceptConnectionParams.SlaveRole = true; - ErrorCode = Bluetooth_SendHCICommand(&AcceptConnectionParams, sizeof(AcceptConnectionParams)); + /* Send the command to accept the remote connection request */ + Bluetooth_SendHCICommand(&AcceptConnectionParams, sizeof(Bluetooth_HCICommand_AcceptConnectionRequest_t)); Bluetooth_HCIProcessingState = Bluetooth_ProcessEvents; break; @@ -242,14 +258,16 @@ void Bluetooth_ProcessHCICommands(void) ParameterLength: sizeof(Bluetooth_HCICommand_RejectConnectionRequest_t), }; - BT_DEBUG("(HCI) Enter State: Bluetooth_Conn_RejectConnection", NULL); + BT_HCI_DEBUG("Enter State: Bluetooth_Conn_RejectConnection", NULL); + /* Copy over the temporary BT device address saved from the Connection Request event, indicate failure + to accept the connection due to limited device resources */ Bluetooth_HCICommand_RejectConnectionRequest_t RejectConnectionParams; - memcpy(RejectConnectionParams.RemoteAddress, Bluetooth_TempDeviceAddress, sizeof(RejectConnectionParams.RemoteAddress)); RejectConnectionParams.Reason = ERROR_LIMITED_RESOURCES; - ErrorCode = Bluetooth_SendHCICommand(&RejectConnectionParams, sizeof(RejectConnectionParams)); + /* Send the command to reject the remote connection request */ + Bluetooth_SendHCICommand(&RejectConnectionParams, sizeof(Bluetooth_HCICommand_RejectConnectionRequest_t)); Bluetooth_HCIProcessingState = Bluetooth_ProcessEvents; break; @@ -260,16 +278,18 @@ void Bluetooth_ProcessHCICommands(void) ParameterLength: sizeof(Bluetooth_HCICommand_PinCodeResponse_t), }; - BT_DEBUG("(HCI) Enter State: Bluetooth_Conn_SendPINCode", NULL); - BT_DEBUG("(HCI) -- PIN: %s", Bluetooth_DeviceConfiguration.PINCode); + BT_HCI_DEBUG("Enter State: Bluetooth_Conn_SendPINCode", NULL); + BT_HCI_DEBUG("-- PIN: %s", Bluetooth_DeviceConfiguration.PINCode); + /* Copy over the temporary BT device address saved from the PIN Code Request event, copy over the + local PIN authentication code to the response */ Bluetooth_HCICommand_PinCodeResponse_t PINCodeRequestParams; - - memcpy(PINCodeRequestParams.RemoteAddress, Bluetooth_TempDeviceAddress, sizeof(Bluetooth_TempDeviceAddress)); + memcpy(PINCodeRequestParams.RemoteAddress, Bluetooth_TempDeviceAddress, sizeof(PINCodeRequestParams.RemoteAddress)); PINCodeRequestParams.PINCodeLength = strlen(Bluetooth_DeviceConfiguration.PINCode); memcpy(PINCodeRequestParams.PINCode, Bluetooth_DeviceConfiguration.PINCode, sizeof(PINCodeRequestParams.PINCode)); - ErrorCode = Bluetooth_SendHCICommand(&PINCodeRequestParams, sizeof(PINCodeRequestParams)); + /* Send the command to transmit the device's local PIN number for authentication */ + Bluetooth_SendHCICommand(&PINCodeRequestParams, sizeof(Bluetooth_HCICommand_PinCodeResponse_t)); Bluetooth_HCIProcessingState = Bluetooth_ProcessEvents; break; diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.h b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.h index 03a6505cb..4df5861cf 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.h +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothHCICommands.h @@ -42,6 +42,8 @@ #include "BluetoothClassCodes.h" /* Macros: */ + #define BT_HCI_DEBUG(s, ...) printf_P(PSTR("(HCI) " s "\r\n"), __VA_ARGS__) + #define OGF_LINK_CONTROL 0x01 #define OGF_CTRLR_BASEBAND 0x03 #define OGF_CTRLR_INFORMATIONAL 0x04 @@ -164,24 +166,23 @@ /* Enums: */ enum Bluetooth_ScanEnable_Modes_t { - NoScansEnabled = 0, - InquiryScanOnly = 1, - PageScanOnly = 2, - InquiryAndPageScans = 3, + BT_SCANMODE_NoScansEnabled = 0, + BT_SCANMODE_InquiryScanOnly = 1, + BT_SCANMODE_PageScanOnly = 2, + BT_SCANMODE_InquiryAndPageScans = 3, }; enum BluetoothStack_States_t { - Bluetooth_ProcessEvents = 0, - Bluetooth_Init = 1, - Bluetooth_Init_Reset = 2, - Bluetooth_Init_ReadBufferSize = 3, - Bluetooth_Init_SetLocalName = 4, - Bluetooth_Init_SetDeviceClass = 5, - Bluetooth_Init_WriteScanEnable = 6, - Bluetooth_Conn_AcceptConnection = 7, - Bluetooth_Conn_RejectConnection = 8, - Bluetooth_Conn_SendPINCode = 9, + Bluetooth_ProcessEvents = 0, + Bluetooth_Init = 1, + Bluetooth_Init_Reset = 2, + Bluetooth_Init_SetLocalName = 3, + Bluetooth_Init_SetDeviceClass = 4, + Bluetooth_Init_WriteScanEnable = 5, + Bluetooth_Conn_AcceptConnection = 6, + Bluetooth_Conn_RejectConnection = 7, + Bluetooth_Conn_SendPINCode = 8, }; /* External Variables: */ @@ -192,7 +193,7 @@ void Bluetooth_ProcessHCIEvents(void); #if defined(INCLUDE_FROM_BLUETOOTHHCICOMMANDS_C) - static uint8_t Bluetooth_SendHCICommand(void* Parameters, uint8_t ParamLength); + static uint8_t Bluetooth_SendHCICommand(void* Parameters, uint16_t ParameterLength); #endif #endif diff --git a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothStack.h b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothStack.h index 0fc2dd2c2..20bc95696 100644 --- a/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothStack.h +++ b/Demos/Host/Incomplete/BluetoothHost/Lib/BluetoothStack.h @@ -39,14 +39,16 @@ #include "BluetoothACLPackets.h" /* Macros: */ + #define BLUETOOTH_DATA_IN_PIPE 1 + #define BLUETOOTH_DATA_OUT_PIPE 2 + #define BLUETOOTH_EVENTS_PIPE 3 + #define BLUETOOTH_MAX_OPEN_CHANNELS 2 #define BLUETOOTH_CHANNELNUMBER_BASEOFFSET 0x0040 #define CHANNEL_LOOKUP_BY_SOURCE true #define CHANNEL_LOOKUP_BY_DESTINATION false - #define BT_DEBUG(s, ...) printf_P(PSTR(s "\r\n"), __VA_ARGS__) - /* Enums: */ enum Bluetooth_Channel_State_t { diff --git a/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.h b/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.h index 5a442ffa9..3f6591635 100644 --- a/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.h @@ -44,9 +44,6 @@ /* Macros: */ /** Interface Class value for the Human Interface Device class */ #define HID_CLASS 0x03 - - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 /* Enums: */ /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */ diff --git a/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h b/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h index 530c7ded1..bb31cc131 100644 --- a/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h @@ -48,9 +48,6 @@ /** Interface Protocol value for a Boot Protocol Mouse compliant device */ #define JOYSTICK_PROTOCOL 0x02 - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 - /** Descriptor header type constant for a HID descriptor */ #define DTYPE_HID 0x21 diff --git a/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.h b/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.h index 2a86dbfc3..24ceeb541 100644 --- a/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.h @@ -47,9 +47,6 @@ /** Interface Protocol value for a Boot Protocol Keyboard compliant device */ #define KEYBOARD_PROTOCOL 0x01 - - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 /* Enums: */ /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */ diff --git a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h index e8914b61d..70d1c1055 100644 --- a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h @@ -47,9 +47,6 @@ /** Interface Protocol value for a Boot Protocol Keyboard compliant device */ #define KEYBOARD_PROTOCOL 0x01 - - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 /** Descriptor header type constant for a HID descriptor */ #define DTYPE_HID 0x21 diff --git a/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h b/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h index 1e0ea2cd9..548d52694 100644 --- a/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h @@ -50,9 +50,6 @@ /** Interface Class value for the MIDI Audio Streaming protocol */ #define MIDI_STREAMING_PROTOCOL 0x00 - - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 /* Enums: */ /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */ diff --git a/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.h b/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.h index ec5fe6add..fb1a2111b 100644 --- a/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.h @@ -50,9 +50,6 @@ /** Interface Protocol value for the Bulk Only transport protocol */ #define MASS_STORE_PROTOCOL 0x50 - - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 /* Enums: */ /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */ diff --git a/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.h b/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.h index 31e07cfe5..e092a4534 100644 --- a/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.h @@ -47,9 +47,6 @@ /** Interface Protocol value for a Boot Protocol Mouse compliant device */ #define MOUSE_PROTOCOL 0x02 - - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 /* Enums: */ /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */ diff --git a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h index a7a734134..69753aba7 100644 --- a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h @@ -47,10 +47,7 @@ /** Interface Protocol value for a Boot Protocol Mouse compliant device */ #define MOUSE_PROTOCOL 0x02 - - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 - + /** Descriptor header type constant for a HID descriptor */ #define DTYPE_HID 0x21 diff --git a/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.h b/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.h index dc2f3e9e9..471cbb5f3 100644 --- a/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/PrinterHost/ConfigDescriptor.h @@ -46,9 +46,6 @@ /** Interface Protocol value for a Bidirectional communication encapsulation */ #define PRINTER_PROTOCOL 0x02 - - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 /* Enums: */ /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */ diff --git a/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h b/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h index 47822319d..520c048b7 100644 --- a/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h @@ -59,9 +59,6 @@ /** Interface Class value for the CDC data protocol */ #define CDC_DATA_PROTOCOL 0x00 - - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 /* Enums: */ /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */ diff --git a/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h b/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h index 0c0237879..ca3d32941 100644 --- a/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h @@ -50,9 +50,6 @@ /** Interface Class value for the Still Image Device protocol */ #define SIMAGE_PROTOCOL 0x01 - - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 /* Enums: */ /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */ diff --git a/Demos/Host/LowLevel/VirtualSerialHost/ConfigDescriptor.h b/Demos/Host/LowLevel/VirtualSerialHost/ConfigDescriptor.h index 1b3b13858..b65ac0d2d 100644 --- a/Demos/Host/LowLevel/VirtualSerialHost/ConfigDescriptor.h +++ b/Demos/Host/LowLevel/VirtualSerialHost/ConfigDescriptor.h @@ -59,9 +59,6 @@ /** Interface Class value for the CDC data protocol */ #define CDC_DATA_PROTOCOL 0x00 - - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 /* Enums: */ /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */ diff --git a/Projects/MissileLauncher/ConfigDescriptor.h b/Projects/MissileLauncher/ConfigDescriptor.h index 7c84b7e78..2d86c0b97 100644 --- a/Projects/MissileLauncher/ConfigDescriptor.h +++ b/Projects/MissileLauncher/ConfigDescriptor.h @@ -45,9 +45,6 @@ /** Interface Class value for the Human Interface Device class */ #define HID_CLASS 0x03 - /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */ - #define MAX_CONFIG_DESCRIPTOR_SIZE 512 - /* Enums: */ /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */ enum GenericHIDHost_GetConfigDescriptorDataCodes_t -- cgit v1.2.3