aboutsummaryrefslogtreecommitdiffstats
path: root/Demos/BluetoothHost/ConfigDescriptor.c
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2009-03-17 12:58:15 +0000
committerDean Camera <dean@fourwalledcubicle.com>2009-03-17 12:58:15 +0000
commit904ad3abd2df55b8f7da2ab84cee13f087386958 (patch)
treee5f473aab4a990f4f63f14b4bbfc2215c6249ce7 /Demos/BluetoothHost/ConfigDescriptor.c
parent14c5615474b46716d69141ed459c5aa2af3bd65d (diff)
downloadlufa-904ad3abd2df55b8f7da2ab84cee13f087386958.tar.gz
lufa-904ad3abd2df55b8f7da2ab84cee13f087386958.tar.bz2
lufa-904ad3abd2df55b8f7da2ab84cee13f087386958.zip
Incomplete non-functional BluetoothHost demo removed until it has reached a stable state to prevent confusion.
Diffstat (limited to 'Demos/BluetoothHost/ConfigDescriptor.c')
-rw-r--r--Demos/BluetoothHost/ConfigDescriptor.c139
1 files changed, 0 insertions, 139 deletions
diff --git a/Demos/BluetoothHost/ConfigDescriptor.c b/Demos/BluetoothHost/ConfigDescriptor.c
deleted file mode 100644
index 16ba1b060..000000000
--- a/Demos/BluetoothHost/ConfigDescriptor.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2009.
-
- dean [at] fourwalledcubicle [dot] com
- www.fourwalledcubicle.com
-*/
-
-/*
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- Permission to use, copy, modify, and distribute this software
- and its documentation for any purpose and without fee is hereby
- granted, 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
- software without specific, written prior permission.
-
- The author disclaim all warranties with regard to this
- software, including all implied warranties of merchantability
- and fitness. In no event shall the author be liable for any
- special, indirect or consequential damages or any damages
- whatsoever resulting from loss of use, data or profits, whether
- in an action of contract, negligence or other tortious action,
- arising out of or in connection with the use or performance of
- this software.
-*/
-
-#include "ConfigDescriptor.h"
-
-uint8_t ProcessConfigurationDescriptor(void)
-{
- uint8_t* ConfigDescriptorData;
- uint16_t ConfigDescriptorSize;
- uint8_t FoundEndpoints = 0;
-
- /* Get Configuration Descriptor size from the device */
- if (USB_Host_GetDeviceConfigDescriptor(&ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)
- return ControlErrorDuringConfigRead;
-
- /* Ensure that the Configuration Descriptor isn't too large */
- if (ConfigDescriptorSize > MAX_CONFIG_DESCRIPTOR_SIZE)
- return DescriptorTooLarge;
-
- /* Allocate enough memory for the entire config descriptor */
- ConfigDescriptorData = alloca(ConfigDescriptorSize);
-
- /* Retrieve the entire configuration descriptor into the allocated buffer */
- USB_Host_GetDeviceConfigDescriptor(&ConfigDescriptorSize, ConfigDescriptorData);
-
- /* Validate returned data - ensure first entry is a configuration header descriptor */
- if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)
- return InvalidConfigDataReturned;
-
- /* The bluetooth USB transport addendium mandates that the data (not streaming voice) endpoints
- be in the first interface descriptor (interface 0) */
- USB_Host_GetNextDescriptorOfType(&ConfigDescriptorSize, &ConfigDescriptorData, DTYPE_Interface);
-
- /* Ensure that an interface was found, and the end of the descriptor was not reached */
- if (!(ConfigDescriptorSize))
- return NoInterfaceFound;
-
- /* 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) |
- (1 << BLUETOOTH_EVENTS_PIPE)))
- {
- /* Fetch the next endpoint from the current bluetooth interface */
- if (USB_Host_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,
- NextInterfaceBluetoothDataEndpoint))
- {
- /* Descriptor not found, error out */
- return NoEndpointFound;
- }
-
- USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Endpoint_t);
-
- /* Check if the endpoint is a bulk or interrupt type endpoint */
- if ((EndpointData->Attributes & EP_TYPE_MASK) == EP_TYPE_INTERRUPT)
- {
- if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
- {
- /* Configure the events IN pipe */
- Pipe_ConfigurePipe(BLUETOOTH_EVENTS_PIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,
- EndpointData->EndpointAddress, EndpointData->EndpointSize,
- PIPE_BANK_SINGLE);
-
- Pipe_SetInfiniteINRequests();
- Pipe_SetInterruptPeriod(EndpointData->PollingIntervalMS);
-
- /* Set the flag indicating that the events notification pipe has been found */
- FoundEndpoints |= (1 << BLUETOOTH_EVENTS_PIPE);
- }
- }
- else
- {
- if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
- {
- /* Configure the data IN pipe */
- Pipe_ConfigurePipe(BLUETOOTH_DATA_IN_PIPE, EP_TYPE_BULK, PIPE_TOKEN_IN,
- EndpointData->EndpointAddress, EndpointData->EndpointSize,
- PIPE_BANK_SINGLE);
-
- Pipe_SetInfiniteINRequests();
-
- /* Set the flag indicating that the data IN pipe has been found */
- FoundEndpoints |= (1 << BLUETOOTH_DATA_IN_PIPE);
- }
- else
- {
- /* Configure the data OUT pipe */
- Pipe_ConfigurePipe(BLUETOOTH_DATA_OUT_PIPE, EP_TYPE_BULK, PIPE_TOKEN_OUT,
- EndpointData->EndpointAddress, EndpointData->EndpointSize,
- PIPE_BANK_SINGLE);
-
- /* Set the flag indicating that the data OUT pipe has been found */
- FoundEndpoints |= (1 << BLUETOOTH_DATA_OUT_PIPE);
- }
- }
-
- }
-
- /* Valid data found, return success */
- return SuccessfulConfigRead;
-}
-
-DESCRIPTOR_COMPARATOR(NextInterfaceBluetoothDataEndpoint)
-{
- /* PURPOSE: Find next interface endpoint descriptor before next interface descriptor */
-
- if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)
- return Descriptor_Search_Found;
- else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
- return Descriptor_Search_Fail;
-
- return Descriptor_Search_NotFound;
-}
-