summaryrefslogtreecommitdiffstats
path: root/lib/lufa/Demos/Host/LowLevel/StillImageHost
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2019-08-02 14:02:40 -0700
committerskullydazed <skullydazed@users.noreply.github.com>2019-08-30 15:01:52 -0700
commitcf4575b94a3c65e6535a159fc71fc885aebc2620 (patch)
tree2354f2b7a200e02246a564afefedc32357e62b8e /lib/lufa/Demos/Host/LowLevel/StillImageHost
parent75ee8df19e0f14ba466f41ab673dde2fe2fdae9c (diff)
Fix the LUFA lib to use a submodule instead of just files (#6245)
* Remove LUFA files * Update descriptions for newer version of LUFA * Create PR6245.md * Fix CDC(Serial) type errors * Fix missed merge conflict for AUDIO_DTYPE_CSInterface
Diffstat (limited to 'lib/lufa/Demos/Host/LowLevel/StillImageHost')
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/Config/LUFAConfig.h93
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c190
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h72
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/PIMACodes.h45
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c268
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h65
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/StillImageHost.c365
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/StillImageHost.h89
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/StillImageHost.txt65
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/asf.xml54
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/doxyfile2395
-rw-r--r--lib/lufa/Demos/Host/LowLevel/StillImageHost/makefile43
12 files changed, 0 insertions, 3744 deletions
diff --git a/lib/lufa/Demos/Host/LowLevel/StillImageHost/Config/LUFAConfig.h b/lib/lufa/Demos/Host/LowLevel/StillImageHost/Config/LUFAConfig.h
deleted file mode 100644
index 197122fce1..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/StillImageHost/Config/LUFAConfig.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- 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
- 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 disclaims 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.
-*/
-
-/** \file
- * \brief LUFA Library Configuration Header File
- *
- * This header file is used to configure LUFA's compile time options,
- * as an alternative to the compile time constants supplied through
- * a makefile.
- *
- * For information on what each token does, refer to the LUFA
- * manual section "Summary of Compile Tokens".
- */
-
-#ifndef _LUFA_CONFIG_H_
-#define _LUFA_CONFIG_H_
-
- #if (ARCH == ARCH_AVR8)
-
- /* Non-USB Related Configuration Tokens: */
-// #define DISABLE_TERMINAL_CODES
-
- /* USB Class Driver Related Tokens: */
-// #define HID_HOST_BOOT_PROTOCOL_ONLY
-// #define HID_STATETABLE_STACK_DEPTH {Insert Value Here}
-// #define HID_USAGE_STACK_DEPTH {Insert Value Here}
-// #define HID_MAX_COLLECTIONS {Insert Value Here}
-// #define HID_MAX_REPORTITEMS {Insert Value Here}
-// #define HID_MAX_REPORT_IDS {Insert Value Here}
-// #define NO_CLASS_DRIVER_AUTOFLUSH
-
- /* General USB Driver Related Tokens: */
-// #define ORDERED_EP_CONFIG
- #define USE_STATIC_OPTIONS (USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)
-// #define USB_DEVICE_ONLY
- #define USB_HOST_ONLY
-// #define USB_STREAM_TIMEOUT_MS {Insert Value Here}
-// #define NO_LIMITED_CONTROLLER_CONNECT
-// #define NO_SOF_EVENTS
-
- /* USB Device Mode Driver Related Tokens: */
-// #define USE_RAM_DESCRIPTORS
-// #define USE_FLASH_DESCRIPTORS
-// #define USE_EEPROM_DESCRIPTORS
-// #define NO_INTERNAL_SERIAL
-// #define FIXED_CONTROL_ENDPOINT_SIZE {Insert Value Here}
-// #define DEVICE_STATE_AS_GPIOR {Insert Value Here}
-// #define FIXED_NUM_CONFIGURATIONS {Insert Value Here}
-// #define CONTROL_ONLY_DEVICE
-// #define INTERRUPT_CONTROL_ENDPOINT
-// #define NO_DEVICE_REMOTE_WAKEUP
-// #define NO_DEVICE_SELF_POWER
-
- /* USB Host Mode Driver Related Tokens: */
-// #define HOST_STATE_AS_GPIOR {Insert Value Here}
-// #define USB_HOST_TIMEOUT_MS {Insert Value Here}
-// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here}
-// #define NO_AUTO_VBUS_MANAGEMENT
-// #define INVERTED_VBUS_ENABLE_LINE
-
- #else
-
- #error Unsupported architecture for this LUFA configuration file.
-
- #endif
-#endif
diff --git a/lib/lufa/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c b/lib/lufa/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c
deleted file mode 100644
index 8b48257581..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- 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
- 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 disclaims 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.
-*/
-
-/** \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 SI interface descriptor containing bulk IN and OUT data endpoints.
- *
- * \return An error code from the \ref StillImageHost_GetConfigDescriptorDataCodes_t enum.
- */
-uint8_t ProcessConfigurationDescriptor(void)
-{
- uint8_t ConfigDescriptorData[512];
- void* CurrConfigLocation = ConfigDescriptorData;
- uint16_t CurrConfigBytesRem;
-
- USB_Descriptor_Interface_t* StillImageInterface = NULL;
- USB_Descriptor_Endpoint_t* DataINEndpoint = NULL;
- USB_Descriptor_Endpoint_t* DataOUTEndpoint = NULL;
- USB_Descriptor_Endpoint_t* EventsEndpoint = NULL;
-
- /* Retrieve the entire configuration descriptor into the allocated buffer */
- switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))
- {
- case HOST_GETCONFIG_Successful:
- break;
- case HOST_GETCONFIG_InvalidData:
- return InvalidConfigDataReturned;
- case HOST_GETCONFIG_BuffOverflow:
- return DescriptorTooLarge;
- default:
- return ControlError;
- }
-
- while (!(DataINEndpoint) || !(DataOUTEndpoint))
- {
- /* See if we've found a likely compatible interface, and if there is an endpoint within that interface */
- if (!(StillImageInterface) ||
- USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
- DComp_NextStillImageInterfaceDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)
- {
- /* Get the next Still Image interface from the configuration descriptor */
- if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
- DComp_NextStillImageInterface) != DESCRIPTOR_SEARCH_COMP_Found)
- {
- /* Descriptor not found, error out */
- return NoCompatibleInterfaceFound;
- }
-
- /* Save the interface in case we need to refer back to it later */
- StillImageInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
-
- /* Clear any found endpoints */
- DataINEndpoint = NULL;
- DataOUTEndpoint = NULL;
- EventsEndpoint = NULL;
-
- /* Skip the remainder of the loop as we have not found an endpoint yet */
- continue;
- }
-
- /* Retrieve the endpoint address from the endpoint descriptor */
- USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Endpoint_t);
-
- /* If the endpoint is a IN type endpoint */
- if ((EndpointData->EndpointAddress & ENDPOINT_DIR_MASK) == ENDPOINT_DIR_IN)
- {
- /* Check if the found endpoint is a interrupt or bulk type descriptor */
- if ((EndpointData->Attributes & EP_TYPE_MASK) == EP_TYPE_INTERRUPT)
- EventsEndpoint = EndpointData;
- else
- DataINEndpoint = EndpointData;
- }
- else
- {
- DataOUTEndpoint = EndpointData;
- }
- }
-
- /* Configure the Still Image data IN pipe */
- Pipe_ConfigurePipe(SIMAGE_DATA_IN_PIPE, EP_TYPE_BULK, DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, 1);
-
- /* Configure the Still Image data OUT pipe */
- Pipe_ConfigurePipe(SIMAGE_DATA_OUT_PIPE, EP_TYPE_BULK, DataOUTEndpoint->EndpointAddress, DataOUTEndpoint->EndpointSize, 1);
-
- /* Configure the Still Image events pipe */
- Pipe_ConfigurePipe(SIMAGE_EVENTS_PIPE, EP_TYPE_INTERRUPT, EventsEndpoint->EndpointAddress, EventsEndpoint->EndpointSize, 1);
- Pipe_SetInterruptPeriod(EventsEndpoint->PollingIntervalMS);
-
- /* Valid data found, return success */
- return SuccessfulConfigRead;
-}
-
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
- * configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration
- * descriptor processing if an incompatible descriptor configuration is found.
- *
- * This comparator searches for the next Interface descriptor of the correct Still Image Class, Subclass and Protocol values.
- *
- * \return A value from the DSEARCH_Return_ErrorCodes_t enum
- */
-uint8_t DComp_NextStillImageInterface(void* CurrentDescriptor)
-{
- USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
-
- if (Header->Type == DTYPE_Interface)
- {
- USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);
-
- /* Check the descriptor class, subclass and protocol, break out if correct interface found */
- if ((Interface->Class == SI_CSCP_StillImageClass) &&
- (Interface->SubClass == SI_CSCP_StillImageSubclass) &&
- (Interface->Protocol == SI_CSCP_BulkOnlyProtocol))
- {
- return DESCRIPTOR_SEARCH_Found;
- }
- }
-
- return DESCRIPTOR_SEARCH_NotFound;
-}
-
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's
- * configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration
- * descriptor processing if an incompatible descriptor configuration is found.
- *
- * This comparator searches for the next Interrupt or Bulk Endpoint descriptor of the current SI interface, aborting the
- * search if another interface descriptor is found before the next endpoint.
- *
- * \return A value from the DSEARCH_Return_ErrorCodes_t enum
- */
-uint8_t DComp_NextStillImageInterfaceDataEndpoint(void* CurrentDescriptor)
-{
- USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
-
- if (Header->Type == DTYPE_Endpoint)
- {
- USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);
-
- /* Check the endpoint type, break out if correct BULK or INTERRUPT type endpoint found */
- if (((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_BULK) ||
- ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_INTERRUPT))
- {
- return DESCRIPTOR_SEARCH_Found;
- }
- }
- else if (Header->Type == DTYPE_Interface)
- {
- return DESCRIPTOR_SEARCH_Fail;
- }
-
- return DESCRIPTOR_SEARCH_NotFound;
-}
-
diff --git a/lib/lufa/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h b/lib/lufa/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h
deleted file mode 100644
index 6a3a87a208..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- 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
- 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 disclaims 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.
-*/
-
-/** \file
- *
- * Header file for ConfigDescriptor.c.
- */
-
-#ifndef _CONFIGDESCRIPTOR_H_
-#define _CONFIGDESCRIPTOR_H_
-
- /* Includes: */
- #include <LUFA/Drivers/USB/USB.h>
-
- #include "StillImageHost.h"
-
- /* Macros: */
- /** Pipe address of the Still Image data IN pipe. */
- #define SIMAGE_DATA_IN_PIPE (PIPE_DIR_IN | 1)
-
- /** Pipe address of the Still Image data OUT pipe. */
- #define SIMAGE_DATA_OUT_PIPE (PIPE_DIR_OUT | 2)
-
- /** Pipe address of the Still Image events IN pipe. */
- #define SIMAGE_EVENTS_PIPE (PIPE_DIR_IN | 3)
-
- /* Enums: */
- /** Enum for the possible return codes of the \ref ProcessConfigurationDescriptor() function. */
- enum StillImageHost_GetConfigDescriptorDataCodes_t
- {
- SuccessfulConfigRead = 0, /**< Configuration Descriptor was processed successfully */
- ControlError = 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 */
- NoCompatibleInterfaceFound = 4, /**< A compatible interface with the required endpoints was not found */
- };
-
- /* Function Prototypes: */
- uint8_t ProcessConfigurationDescriptor(void);
-
- uint8_t DComp_NextStillImageInterface(void* CurrentDescriptor);
- uint8_t DComp_NextStillImageInterfaceDataEndpoint(void* CurrentDescriptor);
-
-#endif
-
diff --git a/lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/PIMACodes.h b/lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/PIMACodes.h
deleted file mode 100644
index 7c3880b274..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/PIMACodes.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- 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
- 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 disclaims 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.
-*/
-
-/** \file
- *
- * Header containing macros for possible PIMA commands. Refer to the PIMA standard
- * documentation for more information on each PIMA command.
- */
-
-#ifndef _PIMA_CODES_H_
-
- /* Macros: */
- #define PIMA_OPERATION_GETDEVICEINFO 0x1001
- #define PIMA_OPERATION_OPENSESSION 0x1002
- #define PIMA_OPERATION_CLOSESESSION 0x1003
-
-#endif
-
diff --git a/lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c b/lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c
deleted file mode 100644
index d233e27700..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- 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
- 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 disclaims 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.
-*/
-
-/** \file
- *
- * Still Image Device commands, to issue PIMA commands to the device for
- * reading device status, capacity, and other characteristics as well as
- * reading and writing of stored image data.
- */
-
-#include "StillImageCommands.h"
-
-/** PIMA block container for the block to send to the device */
-PIMA_Container_t PIMA_SendBlock;
-
-/** PIMA block container for the last received block from the device */
-PIMA_Container_t PIMA_ReceivedBlock;
-
-/** PIMA block container for the last event block received from the device */
-PIMA_Container_t PIMA_EventBlock;
-
-
-/** Function to send the PIMA command container to the attached still image device. */
-void SImage_SendBlockHeader(void)
-{
- /* Unfreeze the data OUT pipe ready for data transmission */
- Pipe_SelectPipe(SIMAGE_DATA_OUT_PIPE);
- Pipe_Unfreeze();
-
- /* Write the PIMA block to the data OUT pipe */
- Pipe_Write_Stream_LE(&PIMA_SendBlock, PIMA_COMMAND_SIZE(0), NULL);
-
- /* If the block type is a command, send its parameters (if any) */
- if (PIMA_SendBlock.Type == PIMA_CONTAINER_CommandBlock)
- {
- /* Determine the size of the parameters in the block via the data length attribute */
- uint8_t ParamBytes = (PIMA_SendBlock.DataLength - PIMA_COMMAND_SIZE(0));
-
- /* Check if any parameters in the command block */
- if (ParamBytes)
- {
- /* Write the PIMA parameters to the data OUT pipe */
- Pipe_Write_Stream_LE(&PIMA_SendBlock.Params, ParamBytes, NULL);
- }
-
- /* Send the PIMA command block to the attached device */
- Pipe_ClearOUT();
- }
-
- /* Freeze pipe after use */
- Pipe_Freeze();
-}
-
-/** Function to receive a PIMA event container from the attached still image device.
- *
- * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
- */
-uint8_t SImage_ReceiveEventHeader(void)
-{
- uint8_t ErrorCode;
-
- /* Unfreeze the events pipe */
- Pipe_SelectPipe(SIMAGE_EVENTS_PIPE);
- Pipe_Unfreeze();
-
- /* Read in the event data into the global structure */
- ErrorCode = Pipe_Read_Stream_LE(&PIMA_EventBlock, sizeof(PIMA_EventBlock), NULL);
-
- /* Clear the pipe after read complete to prepare for next event */
- Pipe_ClearIN();
-
- /* Freeze the event pipe again after use */
- Pipe_Freeze();
-
- return ErrorCode;
-}
-
-/** Function to receive a PIMA response container from the attached still image device.
- *
- * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
- */
-uint8_t SImage_ReceiveBlockHeader(void)
-{
- uint16_t TimeoutMSRem = COMMAND_DATA_TIMEOUT_MS;
- uint16_t PreviousFrameNumber = USB_Host_GetFrameNumber();
-
- /* Unfreeze the data IN pipe */
- Pipe_SelectPipe(SIMAGE_DATA_IN_PIPE);
- Pipe_Unfreeze();
-
- /* Wait until data received on the IN pipe */
- while (!(Pipe_IsINReceived()))
- {
- uint16_t CurrentFrameNumber = USB_Host_GetFrameNumber();
-
- /* Check to see if a new frame has been issued (1ms elapsed) */
- if (CurrentFrameNumber != PreviousFrameNumber)
- {
- /* Save the new frame number and decrement the timeout period */
- PreviousFrameNumber = CurrentFrameNumber;
- TimeoutMSRem--;
-
- /* Check to see if the timeout period for the command has elapsed */
- if (!(TimeoutMSRem))
- return PIPE_RWSTREAM_Timeout;
- }
-
- Pipe_Freeze();
- Pipe_SelectPipe(SIMAGE_DATA_OUT_PIPE);
- Pipe_Unfreeze();
-
- /* Check if pipe stalled (command failed by device) */
- if (Pipe_IsStalled())
- {
- /* Clear the stall condition on the OUT pipe */
- USB_Host_ClearEndpointStall(Pipe_GetBoundEndpointAddress());
-
- /* Return error code and break out of the loop */
- return PIPE_RWSTREAM_PipeStalled;
- }
-
- Pipe_Freeze();
- Pipe_SelectPipe(SIMAGE_DATA_IN_PIPE);
- Pipe_Unfreeze();
-
- /* Check if pipe stalled (command failed by device) */
- if (Pipe_IsStalled())
- {
- /* Clear the stall condition on the IN pipe */
- USB_Host_ClearEndpointStall(Pipe_GetBoundEndpointAddress());
-
- /* Return error code */
- return PIPE_RWSTREAM_PipeStalled;
- }
-
- /* Check to see if the device was disconnected, if so exit function */
- if (USB_HostState == HOST_STATE_Unattached)
- return PIPE_RWSTREAM_DeviceDisconnected;
- }
-
- /* Load in the response from the attached device */
- Pipe_Read_Stream_LE(&PIMA_ReceivedBlock, PIMA_COMMAND_SIZE(0), NULL);
-
- /* Check if the returned block type is a response block */
- if (PIMA_ReceivedBlock.Type == PIMA_CONTAINER_ResponseBlock)
- {
- /* Determine the size of the parameters in the block via the data length attribute */
- uint8_t ParamBytes = (PIMA_ReceivedBlock.DataLength - PIMA_COMMAND_SIZE(0));
-
- /* Check if the device has returned any parameters */
- if (ParamBytes)
- {
- /* Read the PIMA parameters from the data IN pipe */
- Pipe_Read_Stream_LE(&PIMA_ReceivedBlock.Params, ParamBytes, NULL);
- }
-
- /* Clear pipe bank after use */
- Pipe_ClearIN();
- }
-
- /* Freeze the IN pipe after use */
- Pipe_Freeze();
-
- return PIPE_RWSTREAM_NoError;
-}
-
-/** Function to send the given data to the device, after a command block has been issued.
- *
- * \param[in] Buffer Source data buffer to send to the device
- * \param[in] Bytes Number of bytes to send
- *
- * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
- */
-uint8_t SImage_SendData(void* const Buffer,
- const uint16_t Bytes)
-{
- uint8_t ErrorCode;
-
- /* Unfreeze the data OUT pipe */
- Pipe_SelectPipe(SIMAGE_DATA_OUT_PIPE);
- Pipe_Unfreeze();
-
- /* Write the data contents to the pipe */
- ErrorCode = Pipe_Write_Stream_LE(Buffer, Bytes, NULL);
-
- /* Send the last packet to the attached device */
- Pipe_ClearOUT();
-
- /* Freeze the pipe again after use */
- Pipe_Freeze();
-
- return ErrorCode;
-}
-
-/** Function to receive the given data from the device, after a response block has been received.
- *
- * \param[out] Buffer Destination data buffer to put read bytes from the device
- * \param[in] Bytes Number of bytes to receive
- *
- * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
- */
-uint8_t SImage_ReadData(void* const Buffer,
- const uint16_t Bytes)
-{
- uint8_t ErrorCode;
-
- /* Unfreeze the data IN pipe */
- Pipe_SelectPipe(SIMAGE_DATA_IN_PIPE);
- Pipe_Unfreeze();
-
- /* Read in the data into the buffer */
- ErrorCode = Pipe_Read_Stream_LE(Buffer, Bytes, NULL);
-
- /* Freeze the pipe again after use */
- Pipe_Freeze();
-
- return ErrorCode;
-}
-
-/** Function to test if a PIMA event block is waiting to be read in from the attached device.
- *
- * \return True if an event is waiting to be read in from the device, \c false otherwise
- */
-bool SImage_IsEventReceived(void)
-{
- bool IsEventReceived = false;
-
- /* Unfreeze the Event pipe */
- Pipe_SelectPipe(SIMAGE_EVENTS_PIPE);
- Pipe_Unfreeze();
-
- /* If the pipe contains data, an event has been received */
- if (Pipe_BytesInPipe())
- IsEventReceived = true;
-
- /* Freeze the pipe after use */
- Pipe_Freeze();
-
- return IsEventReceived;
-}
-
diff --git a/lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h b/lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h
deleted file mode 100644
index 15ef75dcfc..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- 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
- 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 disclaims 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.
-*/
-
-/** \file
- *
- * Header file for StillImageCommands.c.
- */
-
-#ifndef _STILL_IMAGE_COMMANDS_H_
-#define _STILL_IMAGE_COMMANDS_H_
-
- /* Includes: */
- #include <LUFA/Drivers/USB/USB.h>
-
- #include "PIMACodes.h"
- #include "../StillImageHost.h"
-
- /* Macros: */
- /** Timeout period between the issuing of a command to a device, and the reception of the first packet. */
- #define COMMAND_DATA_TIMEOUT_MS 10000
-
- /* External Variables: */
- extern PIMA_Container_t PIMA_SendBlock;
- extern PIMA_Container_t PIMA_ReceivedBlock;
- extern PIMA_Container_t PIMA_EventBlock;
-
- /* Function Prototypes: */
- void SImage_SendBlockHeader(void);
- uint8_t SImage_ReceiveBlockHeader(void);
- uint8_t SImage_ReceiveEventHeader(void);
- uint8_t SImage_SendData(void* const Buffer,
- const uint16_t Bytes);
- uint8_t SImage_ReadData(void* const Buffer,
- const uint16_t Bytes);
- bool SImage_IsEventReceived(void);
-
-#endif
-
diff --git a/lib/lufa/Demos/Host/LowLevel/StillImageHost/StillImageHost.c b/lib/lufa/Demos/Host/LowLevel/StillImageHost/StillImageHost.c
deleted file mode 100644
index 9df9531bfc..0000000000
--- a/lib/lufa/Demos/Host/LowLevel/StillImageHost/StillImageHost.c
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- LUFA Library
- Copyright (C) Dean Camera, 2017.
-
- dean [at] fourwalledcubicle [dot] com
- www.lufa-lib.org
-*/
-
-/*
- Copyright 2017 Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
- 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
- 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 disclaims 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.
-*/
-
-/** \file
- *
- * Main source file for the StillImageHost demo. This file contains the main tasks of
- * the demo and is responsible for the initial application hardware configuration.
- */
-
-#include "StillImageHost.h"
-
-/** 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 "Still Image Host Demo running.\r\n" ESC_FG_WHITE));
-
- LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
- GlobalInterruptEnable();
-
- for (;;)
- {
- StillImageHost_Task();
-
- USB_USBTask();
- }
-}
-
-/** Configures the board hardware and chip peripherals for the demo's functionality. */
-void SetupHardware(void)
-{
-#if (ARCH == ARCH_AVR8)
- /* Disable watchdog if enabled by bootloader/fuses */
- MCUSR &= ~(1 << WDRF);
- wdt_disable();
-
- /* Disable clock division */
- clock_prescale_set(clock_div_1);
-#endif
-
- /* Hardware Initialization */
- Serial_Init(9600, false);
- LEDs_Init();
- USB_Init();
-
- /* Create a stdio stream for the serial port for stdin and stdout */
- Serial_CreateStream(NULL);
-}
-
-/** 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)
-{
- puts_P(PSTR("Getting Config Data.\r\n"));
-
- uint8_t ErrorCode;
-
- /* Get and process the configuration descriptor data */
- if ((ErrorCode = ProcessConfigurationDescriptor()) != SuccessfulConfigRead)
- {
- 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"));
-
- printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
-
- LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
- return;
- }
-
- /* Set the device configuration to the first configuration (rarely do devices