Run wspurify script on /trunk/ and /branches/ C source files, to remove any trailing whitespace at the end of each line.

This commit is contained in:
Dean Camera 2011-12-23 01:51:39 +00:00
parent 77f354609f
commit f201f6697b
278 changed files with 1000 additions and 910 deletions

View File

@ -40,9 +40,9 @@
#include <avr/io.h>
#include <avr/boot.h>
#include <stdbool.h>
#include <LUFA/Common/Common.h>
/* Function Prototypes: */
void BootloaderAPI_ErasePage(const uint32_t Address);
void BootloaderAPI_WritePage(const uint32_t Address);

View File

@ -104,10 +104,10 @@ void SetupHardware(void)
/* Initialize USB Subsystem */
USB_Init();
LEDs_Init();
/* Bootloader active LED toggle timer initialization */
TIMSK1 = (1 << TOIE1);
TCCR1B = ((1 << CS11) | (1 << CS10));
TCCR1B = ((1 << CS11) | (1 << CS10));
}
/** ISR to periodically toggle the LEDs on the board to indicate that the bootloader is active. */
@ -266,7 +266,7 @@ static void ReadWriteMemoryBlock(const uint8_t Command)
{
LowByte = FetchNextCommandByte();
}
HighByte = !HighByte;
}
else
@ -365,7 +365,7 @@ void CDC_Task(void)
if (Command == 'E')
{
RunBootloader = false;
/* Send confirmation byte back to the host */
WriteNextResponseByte('\r');
}

View File

@ -46,7 +46,7 @@
#include <stdbool.h>
#include "Descriptors.h"
#include "BootloaderAPI.h"
#include "BootloaderAPI.h"
#include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/Board/LEDs.h>

View File

@ -115,14 +115,14 @@
typedef struct
{
USB_Descriptor_Configuration_Header_t Config;
// CDC Control Interface
USB_Descriptor_Interface_t CDC_CCI_Interface;
USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header;
USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM;
USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union;
USB_Descriptor_Endpoint_t CDC_NotificationEndpoint;
// CDC Data Interface
USB_Descriptor_Interface_t CDC_DCI_Interface;
USB_Descriptor_Endpoint_t CDC_DataOutEndpoint;

View File

@ -40,9 +40,9 @@
#include <avr/io.h>
#include <avr/boot.h>
#include <stdbool.h>
#include <LUFA/Common/Common.h>
/* Function Prototypes: */
void BootloaderAPI_ErasePage(const uint32_t Address);
void BootloaderAPI_WritePage(const uint32_t Address);

View File

@ -113,10 +113,10 @@ int main(void)
/* If the TCK pin is not jumpered to ground, start the user application instead */
RunBootloader = (!(PINF & (1 << 4)));
/* Re-enable JTAG debugging */
MCUCR &= ~(1 << JTD);
MCUCR &= ~(1 << JTD);
MCUCR &= ~(1 << JTD);
#endif
/* Turn on first LED on the board to indicate that the bootloader has started */
@ -153,7 +153,7 @@ void SetupHardware(void)
/* Initialize the USB subsystem */
USB_Init();
LEDs_Init();
/* Bootloader active LED toggle timer initialization */
TIMSK1 = (1 << TOIE1);
TCCR1B = ((1 << CS11) | (1 << CS10));
@ -181,7 +181,7 @@ ISR(TIMER1_OVF_vect, ISR_BLOCK)
* internally.
*/
void EVENT_USB_Device_ControlRequest(void)
{
{
/* Ignore any requests that aren't directed to the DFU interface */
if ((USB_ControlRequest.bmRequestType & (CONTROL_REQTYPE_TYPE | CONTROL_REQTYPE_RECIPIENT)) !=
(REQTYPE_CLASS | REQREC_INTERFACE))
@ -742,3 +742,4 @@ static void ProcessReadCommand(void)
else if (IS_ONEBYTE_COMMAND(SentCommand.Data, 0x01)) // Read signature byte
ResponseByte = SignatureInfo[DataIndexToRead - 0x30];
}

View File

@ -159,11 +159,11 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
Address = &DeviceDescriptor;
Size = sizeof(USB_Descriptor_Device_t);
break;
case DTYPE_Configuration:
case DTYPE_Configuration:
Address = &ConfigurationDescriptor;
Size = sizeof(USB_Descriptor_Configuration_t);
break;
case DTYPE_String:
case DTYPE_String:
if (!(DescriptorNumber))
{
Address = &LanguageString;
@ -174,10 +174,10 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
Address = &ProductString;
Size = ProductString.Header.Size;
}
break;
}
*DescriptorAddress = Address;
return Size;
}

View File

@ -161,7 +161,7 @@
typedef struct
{
USB_Descriptor_Configuration_Header_t Config;
// DFU Interface
USB_Descriptor_Interface_t DFU_Interface;
USB_Descriptor_DFU_Functional_t DFU_Functional;

View File

@ -9,13 +9,13 @@
/*
Copyright 2011 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
@ -32,7 +32,7 @@
*
* Main source file for the HID class bootloader. This file contains the complete bootloader logic.
*/
#include "BootloaderHID.h"
/** Flag to indicate if the bootloader should be running, or should exit and allow the application code to run
@ -41,20 +41,20 @@
*/
static bool RunBootloader = true;
/** Main program entry point. This routine configures the hardware required by the bootloader, then continuously
/** Main program entry point. This routine configures the hardware required by the bootloader, then continuously
* runs the bootloader processing routine until instructed to soft-exit.
*/
int main(void)
{
/* Setup hardware required for the bootloader */
SetupHardware();
/* Enable global interrupts so that the USB stack can function */
sei();
while (RunBootloader)
USB_USBTask();
/* Disconnect from the host - USB interface will be reset later along with the AVR */
USB_Detach();
@ -108,17 +108,17 @@ void EVENT_USB_Device_ControlRequest(void)
{
case HID_REQ_SetReport:
Endpoint_ClearSETUP();
/* Wait until the command has been sent by the host */
while (!(Endpoint_IsOUTReceived()));
/* Read in the write destination address */
#if (FLASHEND > 0xFFFF)
uint32_t PageAddress = ((uint32_t)Endpoint_Read_16_LE() << 8);
#else
uint16_t PageAddress = Endpoint_Read_16_LE();
#endif
/* Check if the command is a program page command, or a start application command */
#if (FLASHEND > 0xFFFF)
if ((uint16_t)(PageAddress >> 8) == COMMAND_STARTAPPLICATION)
@ -133,9 +133,9 @@ void EVENT_USB_Device_ControlRequest(void)
/* Erase the given FLASH page, ready to be programmed */
boot_page_erase(PageAddress);
boot_spm_busy_wait();
/* Write each of the FLASH page's bytes in sequence */
for (uint8_t PageWord = 0; PageWord < (SPM_PAGESIZE / 2); PageWord++)
for (uint8_t PageWord = 0; PageWord < (SPM_PAGESIZE / 2); PageWord++)
{
/* Check if endpoint is empty - if so clear it and wait until ready for next packet */
if (!(Endpoint_BytesInEndpoint()))
@ -162,3 +162,4 @@ void EVENT_USB_Device_ControlRequest(void)
break;
}
}

View File

@ -8,14 +8,14 @@
/*
Copyright 2011 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
@ -32,7 +32,7 @@
*
* Header file for TeensyHID.c.
*/
#ifndef _TEENSYHID_H_
#define _TEENSYHID_H_
@ -47,15 +47,16 @@
#include "Descriptors.h"
#include <LUFA/Drivers/USB/USB.h>
/* Macros: */
/* Macros: */
/** Bootloader special address to start the user application */
#define COMMAND_STARTAPPLICATION 0xFFFF
/* Function Prototypes: */
void SetupHardware(void);
void EVENT_USB_Device_ConfigurationChanged(void);
void EVENT_USB_Device_UnhandledControlRequest(void);
#endif

View File

@ -8,14 +8,14 @@
/*
Copyright 2011 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
@ -30,9 +30,9 @@
/** \file
*
* USB Device Descriptors, for library use when in USB device mode. Descriptors are special
* USB Device Descriptors, for library use when in USB device mode. Descriptors are special
* computer-readable structures which the host requests upon device enumeration, to determine
* the device's capabilities and functions.
* the device's capabilities and functions.
*/
#include "Descriptors.h"
@ -52,7 +52,7 @@ const USB_Descriptor_HIDReport_Datatype_t HIDReport[] =
HID_RI_LOGICAL_MINIMUM(8, 0x00),
HID_RI_LOGICAL_MAXIMUM(8, 0xFF),
HID_RI_REPORT_SIZE(8, 0x08),
HID_RI_REPORT_COUNT(16, (sizeof(uint16_t) + SPM_PAGESIZE)),
HID_RI_REPORT_COUNT(16, (sizeof(uint16_t) + SPM_PAGESIZE)),
HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE),
HID_RI_END_COLLECTION(0),
};
@ -91,49 +91,49 @@ const USB_Descriptor_Device_t DeviceDescriptor =
*/
const USB_Descriptor_Configuration_t ConfigurationDescriptor =
{
.Config =
.Config =
{
.Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
.TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
.TotalInterfaces = 1,
.ConfigurationNumber = 1,
.ConfigurationStrIndex = NO_DESCRIPTOR,
.ConfigAttributes = USB_CONFIG_ATTR_BUSPOWERED,
.MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
},
.HID_Interface =
.HID_Interface =
{
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
.InterfaceNumber = 0x00,
.AlternateSetting = 0x00,
.TotalEndpoints = 1,
.Class = HID_CSCP_HIDClass,
.SubClass = HID_CSCP_NonBootSubclass,
.Protocol = HID_CSCP_NonBootProtocol,
.InterfaceStrIndex = NO_DESCRIPTOR
},
.HID_VendorHID =
{
.HID_VendorHID =
{
.Header = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID},
.HIDSpec = VERSION_BCD(01.11),
.CountryCode = 0x00,
.TotalReportDescriptors = 1,
.HIDReportType = HID_DTYPE_Report,
.HIDReportLength = sizeof(HIDReport)
},
.HID_ReportINEndpoint =
.HID_ReportINEndpoint =
{
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
@ -158,17 +158,17 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const void* Address = NULL;
uint16_t Size = NO_DESCRIPTOR;
/* If/Else If chain compiles slightly smaller than a switch case */
if (DescriptorType == DTYPE_Device)
{
Address = &DeviceDescriptor;
Size = sizeof(USB_Descriptor_Device_t);
Size = sizeof(USB_Descriptor_Device_t);
}
else if (DescriptorType == DTYPE_Configuration)
{
Address = &ConfigurationDescriptor;
Size = sizeof(USB_Descriptor_Configuration_t);
Size = sizeof(USB_Descriptor_Configuration_t);
}
else if (DescriptorType == HID_DTYPE_HID)
{
@ -184,3 +184,4 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
*DescriptorAddress = Address;
return Size;
}

View File

@ -8,14 +8,14 @@
/*
Copyright 2011 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
@ -47,18 +47,18 @@
typedef struct
{
USB_Descriptor_Configuration_Header_t Config;
// Generic HID Interface
USB_Descriptor_Interface_t HID_Interface;
USB_HID_Descriptor_HID_t HID_VendorHID;
USB_Descriptor_Endpoint_t HID_ReportINEndpoint;
} USB_Descriptor_Configuration_t;
/* Macros: */
/** Endpoint number of the HID data IN endpoint. */
#define HID_IN_EPNUM 1
/** Size in bytes of the HID reporting IN endpoint. */
/** Size in bytes of the HID reporting IN endpoint. */
#define HID_IN_EPSIZE 64
/* Function Prototypes: */
@ -68,3 +68,4 @@
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif

View File

@ -710,10 +710,10 @@ int teensy_open(void)
{
teensy_close();
uhid_teensy_fd = open_usb_device(0x16C0, 0x0478);
if (uhid_teensy_fd < 0)
uhid_teensy_fd = open_usb_device(0x03eb, 0x2067);
if (uhid_teensy_fd < 0) return 0;
return 1;
}
@ -826,7 +826,7 @@ parse_hex_line(char *line)
int addr, code, num;
int sum, len, cksum, i;
char *ptr;
num = 0;
if (line[0] != ':') return 0;
if (strlen(line) < 11) return 0;

View File

@ -106,11 +106,11 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
#if defined(USE_TEST_TONE)
static uint8_t SquareWaveSampleCount;
static int16_t CurrentWaveValue;
/* In test tone mode, generate a square wave at 1/256 of the sample rate */
if (SquareWaveSampleCount++ == 0xFF)
CurrentWaveValue ^= 0x8000;
/* Only generate audio if the board button is being pressed */
AudioSample = (Buttons_GetStatus() & BUTTONS_BUTTON1) ? CurrentWaveValue : 0;
#else
@ -122,7 +122,7 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
AudioSample -= (SAMPLE_MAX_RANGE / 2);
#endif
#endif
Audio_Device_WriteSample16(&Microphone_Audio_Interface, AudioSample);
}
@ -211,10 +211,10 @@ bool CALLBACK_Audio_Device_GetSetEndpointProperty(USB_ClassInfo_Audio_Device_t*
CurrentAudioSampleFrequency = (((uint32_t)Data[2] << 16) | ((uint32_t)Data[1] << 8) | (uint32_t)Data[0]);
/* Adjust sample reload timer to the new frequency */
OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
}
return true;
return true;
case AUDIO_REQ_GetCurrent:
/* Check if we are just testing for a valid property, or actually reading it */
if (DataLength != NULL)
@ -223,13 +223,14 @@ bool CALLBACK_Audio_Device_GetSetEndpointProperty(USB_ClassInfo_Audio_Device_t*
Data[2] = (CurrentAudioSampleFrequency >> 16);
Data[1] = (CurrentAudioSampleFrequency >> 8);
Data[0] = (CurrentAudioSampleFrequency & 0xFF);
Data[0] = (CurrentAudioSampleFrequency & 0xFF);
}
return true;
}
}
}
return false;
}

View File

@ -204,7 +204,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.TotalDiscreteSampleRates = (sizeof(ConfigurationDescriptor.Audio_AudioFormatSampleRates) / sizeof(USB_Audio_SampleFreq_t))
},
.Audio_AudioFormatSampleRates =
{
AUDIO_SAMPLE_FREQ(8000),

View File

@ -91,7 +91,7 @@ void SetupHardware(void)
ISR(TIMER0_COMPA_vect, ISR_BLOCK)
{
uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint();
/* Check that the USB bus is ready for the next sample to read */
if (Audio_Device_IsSampleReceived(&Speaker_Audio_Interface))
{
@ -128,8 +128,8 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
LEDs_SetAllLEDs(LEDMask);
}
Endpoint_SelectEndpoint(PrevEndpoint);
Endpoint_SelectEndpoint(PrevEndpoint);
}
/** Event handler for the library USB Connection event. */
@ -248,10 +248,10 @@ bool CALLBACK_Audio_Device_GetSetEndpointProperty(USB_ClassInfo_Audio_Device_t*
CurrentAudioSampleFrequency = (((uint32_t)Data[2] << 16) | ((uint32_t)Data[1] << 8) | (uint32_t)Data[0]);
/* Adjust sample reload timer to the new frequency */
OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
}
return true;
return true;
case AUDIO_REQ_GetCurrent:
/* Check if we are just testing for a valid property, or actually reading it */
if (DataLength != NULL)
@ -260,13 +260,14 @@ bool CALLBACK_Audio_Device_GetSetEndpointProperty(USB_ClassInfo_Audio_Device_t*
Data[2] = (CurrentAudioSampleFrequency >> 16);
Data[1] = (CurrentAudioSampleFrequency >> 8);
Data[0] = (CurrentAudioSampleFrequency & 0xFF);
Data[0] = (CurrentAudioSampleFrequency & 0xFF);
}
return true;
}
}
}
return false;
}

View File

@ -204,7 +204,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.TotalDiscreteSampleRates = (sizeof(ConfigurationDescriptor.Audio_AudioFormatSampleRates) / sizeof(USB_Audio_SampleFreq_t)),
},
.Audio_AudioFormatSampleRates =
{
AUDIO_SAMPLE_FREQ(8000),

View File

@ -83,3 +83,4 @@
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif

View File

@ -109,3 +109,4 @@
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif

View File

@ -145,7 +145,7 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
{
uint8_t* Data = (uint8_t*)ReportData;
uint8_t CurrLEDMask = LEDs_GetLEDs();
Data[0] = ((CurrLEDMask & LEDS_LED1) ? 1 : 0);
Data[1] = ((CurrLEDMask & LEDS_LED2) ? 1 : 0);
Data[2] = ((CurrLEDMask & LEDS_LED3) ? 1 : 0);
@ -171,7 +171,7 @@ void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDI
{
uint8_t* Data = (uint8_t*)ReportData;
uint8_t NewLEDMask = LEDS_NO_LEDS;
if (Data[0])
NewLEDMask |= LEDS_LED1;
@ -183,7 +183,7 @@ void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDI
if (Data[3])
NewLEDMask |= LEDS_LED1;
LEDs_SetAllLEDs(NewLEDMask);
}

View File

@ -42,7 +42,7 @@
* descriptor is parsed by the host and its contents used to determine what data (and in what encoding)
* the device will send, and what it may be sent back from the host. Refer to the HID specification for
* more details on HID report descriptors.
*/
*/
const USB_Descriptor_HIDReport_Datatype_t PROGMEM JoystickReport[] =
{
/* Use the HID class driver's standard Joystick report.

View File

@ -8,7 +8,7 @@
/*
Copyright 2011 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

View File

@ -279,7 +279,7 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
Address = &ConfigurationDescriptor.HID2_MouseHID;
Size = sizeof(USB_HID_Descriptor_HID_t);
}
break;
case HID_DTYPE_Report:
if (!(wIndex))

View File

@ -258,3 +258,4 @@ void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDI
LEDs_SetAllLEDs(LEDMask);
}
}

View File

@ -77,7 +77,7 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM HIDReport[] =
HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE),
HID_RI_END_COLLECTION(0),
HID_RI_END_COLLECTION(0),
/* Keyboard Report */
HID_RI_USAGE_PAGE(8, 0x01), /* Generic Desktop */
HID_RI_USAGE(8, 0x06), /* Keyboard */
@ -280,7 +280,7 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
break;
case HID_DTYPE_HID:
Address = &ConfigurationDescriptor.HID_HIDData;
Size = sizeof(USB_HID_Descriptor_HID_t);
Size = sizeof(USB_HID_Descriptor_HID_t);
break;
case HID_DTYPE_Report:
Address = &HIDReport;

View File

@ -62,7 +62,7 @@
/** Size in bytes of each of the HID reporting IN endpoint. */
#define HID_EPSIZE 8
/* Enums: */
/** Enum for the HID report IDs used in the device. */
enum

View File

@ -148,7 +148,7 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
uint8_t ButtonStatus_LCL = Buttons_GetStatus();
if (!(ButtonStatus_LCL & BUTTONS_BUTTON1))
{
{
USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;
KeyboardReport->Modifier = HID_KEYBOARD_MODIFIER_LEFTSHIFT;
@ -221,3 +221,4 @@ void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDI
LEDs_SetAllLEDs(LEDMask);
}

View File

@ -287,7 +287,7 @@ static bool SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfa
SCSI_ASENSE_WRITE_PROTECTED,
SCSI_ASENSEQ_NO_QUALIFIER);
return false;
return false;
}
/* Load in the 32-bit block address (SCSI uses big-endian, so have to reverse the byte order) */
@ -311,7 +311,7 @@ static bool SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfa
/* Adjust the given block address to the real media address based on the selected LUN */
BlockAddress += ((uint32_t)MSInterfaceInfo->State.CommandBlock.LUN * LUN_MEDIA_BLOCKS);
#endif
/* Determine if the packet is a READ (10) or WRITE (10) command, call appropriate function */
if (IsDataRead == DATA_READ)
DataflashManager_ReadBlocks(MSInterfaceInfo, BlockAddress, TotalBlocks);
@ -345,3 +345,4 @@ static bool SCSI_Command_ModeSense_6(USB_ClassInfo_MS_Device_t* const MSInterfac
return true;
}

View File

@ -73,7 +73,7 @@
/** Blocks in each LUN, calculated from the total capacity divided by the total number of Logical Units in the device. */
#define LUN_MEDIA_BLOCKS (VIRTUAL_MEMORY_BLOCKS / TOTAL_LUNS)
/** Indicates if the disk is write protected or not. */
#define DISK_READ_ONLY false

View File

@ -287,7 +287,7 @@ static bool SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfa
SCSI_ASENSE_WRITE_PROTECTED,
SCSI_ASENSEQ_NO_QUALIFIER);
return false;
return false;
}
/* Load in the 32-bit block address (SCSI uses big-endian, so have to reverse the byte order) */
@ -345,3 +345,4 @@ static bool SCSI_Command_ModeSense_6(USB_ClassInfo_MS_Device_t* const MSInterfac
return true;
}

View File

@ -81,7 +81,7 @@
/** Indicates if the disk is write protected or not. */
#define DISK_READ_ONLY false
/* Function Prototypes: */
void SetupHardware(void);

View File

@ -87,16 +87,16 @@ int main(void)
if (RNDIS_Device_IsPacketReceived(&Ethernet_RNDIS_Interface))
{
LEDs_SetAllLEDs(LEDMASK_USB_BUSY);
RNDIS_Device_ReadPacket(&Ethernet_RNDIS_Interface, &FrameIN.FrameData, &FrameIN.FrameLength);
Ethernet_ProcessPacket(&FrameIN, &FrameOUT);
if (FrameOUT.FrameLength)
{
RNDIS_Device_SendPacket(&Ethernet_RNDIS_Interface, &FrameOUT.FrameData, FrameOUT.FrameLength);
RNDIS_Device_SendPacket(&Ethernet_RNDIS_Interface, &FrameOUT.FrameData, FrameOUT.FrameLength);
FrameOUT.FrameLength = 0;
}
LEDs_SetAllLEDs(LEDMASK_USB_READY);
}

View File

@ -287,7 +287,7 @@ static bool SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfa
SCSI_ASENSE_WRITE_PROTECTED,
SCSI_ASENSEQ_NO_QUALIFIER);
return false;
return false;
}
/* Load in the 32-bit block address (SCSI uses big-endian, so have to reverse the byte order) */
@ -311,7 +311,7 @@ static bool SCSI_Command_ReadWrite_10(USB_ClassInfo_MS_Device_t* const MSInterfa
/* Adjust the given block address to the real media address based on the selected LUN */
BlockAddress += ((uint32_t)MSInterfaceInfo->State.CommandBlock.LUN * LUN_MEDIA_BLOCKS);
#endif
/* Determine if the packet is a READ (10) or WRITE (10) command, call appropriate function */
if (IsDataRead == DATA_READ)
DataflashManager_ReadBlocks(MSInterfaceInfo, BlockAddress, TotalBlocks);
@ -345,3 +345,4 @@ static bool SCSI_Command_ModeSense_6(USB_ClassInfo_MS_Device_t* const MSInterfac
return true;
}

View File

@ -59,7 +59,7 @@ USB_ClassInfo_CDC_Device_t VirtualSerial_CDC_Interface =
.NotificationEndpointDoubleBank = false,
},
};
/** LUFA Mass Storage Class driver interface configuration and state information. This structure is
* passed to all Mass Storage Class driver functions, so that multiple instances of the same class
* within a device can be differentiated from one another.
@ -211,3 +211,4 @@ bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* const MSI
return CommandSuccess;
}

View File

@ -47,7 +47,7 @@
#include "Lib/SCSI.h"
#include "Lib/DataflashManager.h"
#include <LUFA/Version.h>
#include <LUFA/Drivers/Board/LEDs.h>
#include <LUFA/Drivers/Board/Joystick.h>
@ -74,7 +74,7 @@
/** Blocks in each LUN, calculated from the total capacity divided by the total number of Logical Units in the device. */
#define LUN_MEDIA_BLOCKS (VIRTUAL_MEMORY_BLOCKS / TOTAL_LUNS)
/** Indicates if the disk is write protected or not. */
#define DISK_READ_ONLY false

View File

@ -47,7 +47,7 @@
typedef struct
{
USB_Descriptor_Configuration_Header_t Config;
// SideShow Interface
USB_Descriptor_Interface_t SSHOW_Interface;
USB_Descriptor_Endpoint_t SSHOW_DataInEndpoint;

View File

@ -102,3 +102,4 @@
void SideShow_Discard_Byte_Stream(void);
#endif

View File

@ -125,3 +125,4 @@
#endif
#endif

View File

@ -1,7 +1,7 @@
/*
LUFA Library
Copyright (C) Dean Camera, 2011.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
@ -9,13 +9,13 @@
/*
Copyright 2011 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
@ -38,7 +38,7 @@ TMC_Capabilities_t Capabilities =
{
.Status = TMC_STATUS_SUCCESS,
.TMCVersion = VERSION_BCD(1.00),
.Interface =
{
.ListenOnly = false,
@ -82,7 +82,7 @@ int main(void)
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
sei();
for (;;)
{
TMC_Task();
@ -99,7 +99,7 @@ void SetupHardware(void)
/* Disable clock division */
clock_prescale_set(clock_div_1);
/* Hardware Initialization */
LEDs_Init();
USB_Init();
@ -167,43 +167,43 @@ void EVENT_USB_Device_ControlRequest(void)
{
/* Indicate that all in-progress/pending data OUT requests should be aborted */
IsTMCBulkOUTReset = true;
/* Save the split request for later checking when a new request is received */
RequestInProgress = Req_InitiateAbortBulkOut;
}
Endpoint_ClearSETUP();
/* Write the request response byte */
Endpoint_Write_8(TMCRequestStatus);
Endpoint_ClearIN();
Endpoint_ClearStatusStage();
}
break;
case Req_CheckAbortBulkOutStatus:
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_ENDPOINT))
{
/* Check that an ABORT BULK OUT transaction has been requested and that the request has completed */
if (RequestInProgress != Req_InitiateAbortBulkOut)
TMCRequestStatus = TMC_STATUS_SPLIT_NOT_IN_PROGRESS;
TMCRequestStatus = TMC_STATUS_SPLIT_NOT_IN_PROGRESS;
else if (IsTMCBulkOUTReset)
TMCRequestStatus = TMC_STATUS_PENDING;
else
RequestInProgress = 0;
RequestInProgress = 0;
Endpoint_ClearSETUP();
/* Write the request response bytes */
Endpoint_Write_8(TMCRequestStatus);
Endpoint_Write_16_LE(0);
Endpoint_Write_32_LE(LastTransferLength);
Endpoint_ClearIN();
Endpoint_ClearStatusStage();
Endpoint_ClearStatusStage();
}
break;
case Req_InitiateAbortBulkIn:
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_ENDPOINT))
@ -211,7 +211,7 @@ void EVENT_USB_Device_ControlRequest(void)
/* Check that no split transaction is already in progress and the data transfer tag is valid */
if (RequestInProgress != 0)
{
TMCRequestStatus = TMC_STATUS_SPLIT_IN_PROGRESS;
TMCRequestStatus = TMC_STATUS_SPLIT_IN_PROGRESS;
}
else if (USB_ControlRequest.wValue != CurrentTransferTag)
{
@ -221,13 +221,13 @@ void EVENT_USB_Device_ControlRequest(void)
{
/* Indicate that all in-progress/pending data IN requests should be aborted */
IsTMCBulkINReset = true;
/* Save the split request for later checking when a new request is received */
RequestInProgress = Req_InitiateAbortBulkIn;
}
Endpoint_ClearSETUP();
/* Write the request response bytes */
Endpoint_Write_8(TMCRequestStatus);
Endpoint_Write_8(CurrentTransferTag);
@ -235,7 +235,7 @@ void EVENT_USB_Device_ControlRequest(void)
Endpoint_ClearIN();
Endpoint_ClearStatusStage();
}
break;
case Req_CheckAbortBulkInStatus:
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_ENDPOINT))
@ -249,7 +249,7 @@ void EVENT_USB_Device_ControlRequest(void)
RequestInProgress = 0;
Endpoint_ClearSETUP();
/* Write the request response bytes */
Endpoint_Write_8(TMCRequestStatus);
Endpoint_Write_16_LE(0);
@ -258,7 +258,7 @@ void EVENT_USB_Device_ControlRequest(void)
Endpoint_ClearIN();
Endpoint_ClearStatusStage();
}
break;
case Req_InitiateClear:
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
@ -266,34 +266,34 @@ void EVENT_USB_Device_ControlRequest(void)
/* Check that no split transaction is already in progress */
if (RequestInProgress != 0)
{
Endpoint_Write_8(TMC_STATUS_SPLIT_IN_PROGRESS);
Endpoint_Write_8(TMC_STATUS_SPLIT_IN_PROGRESS);
}
else
{
/* Indicate that all in-progress/pending data IN and OUT requests should be aborted */
IsTMCBulkINReset = true;
IsTMCBulkOUTReset = true;
/* Save the split request for later checking when a new request is received */
RequestInProgress = Req_InitiateClear;
}
Endpoint_ClearSETUP();
/* Write the request response byte */
Endpoint_Write_8(TMCRequestStatus);
Endpoint_ClearIN();
Endpoint_ClearStatusStage();
}
break;
case Req_CheckClearStatus:
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
{
/* Check that a CLEAR transaction has been requested and that the request has completed */
if (RequestInProgress != Req_InitiateClear)
TMCRequestStatus = TMC_STATUS_SPLIT_NOT_IN_PROGRESS;
TMCRequestStatus = TMC_STATUS_SPLIT_NOT_IN_PROGRESS;
else if (IsTMCBulkINReset || IsTMCBulkOUTReset)
TMCRequestStatus = TMC_STATUS_PENDING;
else
@ -304,22 +304,22 @@ void EVENT_USB_Device_ControlRequest(void)
/* Write the request response bytes */
Endpoint_Write_8(TMCRequestStatus);
Endpoint_Write_8(0);
Endpoint_ClearIN();
Endpoint_ClearStatusStage();
Endpoint_ClearStatusStage();
}
break;
case Req_GetCapabilities:
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
{
Endpoint_ClearSETUP();
/* Write the device capabilities to the control endpoint */
Endpoint_Write_Control_Stream_LE(&Capabilities, sizeof(TMC_Capabilities_t));
Endpoint_Write_Control_Stream_LE(&Capabilities, sizeof(TMC_Capabilities_t));
Endpoint_ClearOUT();
}
break;
}
}
@ -351,16 +351,16 @@ void TMC_Task(void)
/* Device must be connected and configured for the task to run */
if (USB_DeviceState != DEVICE_STATE_Configured)
return;
TMC_MessageHeader_t MessageHeader;
uint8_t MessagePayload[128];
/* Try to read in a TMC message from the interface, process if one is available */
if (ReadTMCHeader(&MessageHeader))
{
/* Indicate busy */
LEDs_SetAllLEDs(LEDMASK_USB_BUSY);
switch (MessageHeader.MessageID)
{
case TMC_MESSAGEID_DEV_DEP_MSG_OUT:
@ -371,15 +371,15 @@ void TMC_Task(void)
if (IsTMCBulkOUTReset)
break;
}
Endpoint_ClearOUT();
ProcessSentMessage(MessagePayload, LastTransferLength);
ProcessSentMessage(MessagePayload, LastTransferLength);
break;
case TMC_MESSAGEID_DEV_DEP_MSG_IN:
Endpoint_ClearOUT();
MessageHeader.TransferSize = GetNextMessage(MessagePayload);
MessageHeader.TransferSize = GetNextMessage(MessagePayload);
MessageHeader.MessageIDSpecific.DeviceOUT.LastMessageTransaction = true;
WriteTMCHeader(&MessageHeader);
@ -400,7 +400,7 @@ void TMC_Task(void)
LEDs_SetAllLEDs(LEDMASK_USB_READY);
}
/* All pending data has been processed - reset the data abort flags */
IsTMCBulkINReset = false;
IsTMCBulkOUTReset = false;
@ -419,11 +419,11 @@ bool ReadTMCHeader(TMC_MessageHeader_t* const MessageHeader)
/* Select the Data Out endpoint */
Endpoint_SelectEndpoint(TMC_OUT_EPNUM);
/* Abort if no command has been sent from the host */
if (!(Endpoint_IsOUTReceived()))
return false;
/* Read in the header of the command from the host */
BytesTransferred = 0;
while ((ErrorCode = Endpoint_Read_Stream_LE(MessageHeader, sizeof(TMC_MessageHeader_t), &BytesTransferred)) ==
@ -435,7 +435,7 @@ bool ReadTMCHeader(TMC_MessageHeader_t* const MessageHeader)
/* Store the new command tag value for later use */
CurrentTransferTag = MessageHeader->Tag;
/* Indicate if the command has been aborted or not */
return (!(IsTMCBulkOUTReset) && (ErrorCode == ENDPOINT_RWSTREAM_NoError));
}
@ -464,3 +464,4 @@ bool WriteTMCHeader(TMC_MessageHeader_t* const MessageHeader)
/* Indicate if the command has been aborted or not */
return (!(IsTMCBulkINReset) && (ErrorCode == ENDPOINT_RWSTREAM_NoError));
}

View File

@ -163,16 +163,16 @@ void EVENT_USB_Device_ControlRequest(void)
/* Extract out the relevant request information to get the target Endpoint address and control being set */
uint8_t EndpointAddress = (uint8_t)USB_ControlRequest.wIndex;
uint8_t EndpointControl = (USB_ControlRequest.wValue >> 8);
/* Only handle SET CURRENT requests to the audio endpoint's sample frequency property */
if ((EndpointAddress == (ENDPOINT_DIR_IN | AUDIO_STREAM_EPNUM)) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
{
uint8_t SampleRate[3];
Endpoint_ClearSETUP();
Endpoint_Read_Control_Stream_LE(SampleRate, sizeof(SampleRate));
Endpoint_ClearIN();
/* Set the new sampling frequency to the value given by the host */
CurrentAudioSampleFrequency = (((uint32_t)SampleRate[2] << 16) | ((uint32_t)SampleRate[1] << 8) | (uint32_t)SampleRate[0]);
@ -180,7 +180,7 @@ void EVENT_USB_Device_ControlRequest(void)
OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
}
}
break;
case AUDIO_REQ_GetCurrent:
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_ENDPOINT))
@ -188,20 +188,20 @@ void EVENT_USB_Device_ControlRequest(void)
/* Extract out the relevant request information to get the target Endpoint address and control being retrieved */
uint8_t EndpointAddress = (uint8_t)USB_ControlRequest.wIndex;
uint8_t EndpointControl = (USB_ControlRequest.wValue >> 8);
/* Only handle GET CURRENT requests to the audio endpoint's sample frequency property */
if ((EndpointAddress == (ENDPOINT_DIR_IN | AUDIO_STREAM_EPNUM)) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
{
uint8_t SampleRate[3];
/* Convert the sampling rate value into the 24-bit format the host expects for the property */
SampleRate[2] = (CurrentAudioSampleFrequency >> 16);
SampleRate[1] = (CurrentAudioSampleFrequency >> 8);
SampleRate[0] = (CurrentAudioSampleFrequency & 0xFF);
Endpoint_ClearSETUP();
Endpoint_Write_Control_Stream_LE(SampleRate, sizeof(SampleRate));
Endpoint_ClearOUT();
Endpoint_ClearOUT();
}
}
@ -225,11 +225,11 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
#if defined(USE_TEST_TONE)
static uint8_t SquareWaveSampleCount;
static int16_t CurrentWaveValue;
/* In test tone mode, generate a square wave at 1/256 of the sample rate */
if (SquareWaveSampleCount++ == 0xFF)
CurrentWaveValue ^= 0x8000;
/* Only generate audio if the board button is being pressed */
AudioSample = (Buttons_GetStatus() & BUTTONS_BUTTON1) ? CurrentWaveValue : 0;
#else
@ -239,7 +239,7 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
#if defined(MICROPHONE_BIASED_TO_HALF_RAIL)
/* Microphone is biased to half rail voltage, subtract the bias from the sample value */
AudioSample -= (SAMPLE_MAX_RANGE / 2);
#endif
#endif
#endif
/* Write the sample to the buffer */

View File

@ -204,7 +204,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.TotalDiscreteSampleRates = (sizeof(ConfigurationDescriptor.Audio_AudioFormatSampleRates) / sizeof(USB_Audio_SampleFreq_t)),
},
.Audio_AudioFormatSampleRates =
{
AUDIO_SAMPLE_FREQ(8000),

View File

@ -189,16 +189,16 @@ void EVENT_USB_Device_ControlRequest(void)
/* Extract out the relevant request information to get the target Endpoint address and control being set */
uint8_t EndpointAddress = (uint8_t)USB_ControlRequest.wIndex;
uint8_t EndpointControl = (USB_ControlRequest.wValue >> 8);
/* Only handle SET CURRENT requests to the audio endpoint's sample frequency property */
if ((EndpointAddress == (ENDPOINT_DIR_OUT | AUDIO_STREAM_EPNUM)) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
{
uint8_t SampleRate[3];
Endpoint_ClearSETUP();
Endpoint_Read_Control_Stream_LE(SampleRate, sizeof(SampleRate));
Endpoint_ClearOUT();
/* Set the new sampling frequency to the value given by the host */
CurrentAudioSampleFrequency = (((uint32_t)SampleRate[2] << 16) | ((uint32_t)SampleRate[1] << 8) | (uint32_t)SampleRate[0]);
@ -206,7 +206,7 @@ void EVENT_USB_Device_ControlRequest(void)
OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
}
}
break;
case AUDIO_REQ_GetCurrent:
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT))
@ -214,20 +214,20 @@ void EVENT_USB_Device_ControlRequest(void)
/* Extract out the relevant request information to get the target Endpoint address and control being retrieved */
uint8_t EndpointAddress = (uint8_t)USB_ControlRequest.wIndex;
uint8_t EndpointControl = (USB_ControlRequest.wValue >> 8);
/* Only handle GET CURRENT requests to the audio endpoint's sample frequency property */
if ((EndpointAddress == (ENDPOINT_DIR_OUT | AUDIO_STREAM_EPNUM)) && (EndpointControl == AUDIO_EPCONTROL_SamplingFreq))
{
uint8_t SampleRate[3];
/* Convert the sampling rate value into the 24-bit format the host expects for the property */
SampleRate[2] = (CurrentAudioSampleFrequency >> 16);
SampleRate[1] = (CurrentAudioSampleFrequency >> 8);
SampleRate[0] = (CurrentAudioSampleFrequency & 0xFF);
Endpoint_ClearSETUP();
Endpoint_Write_Control_Stream_LE(SampleRate, sizeof(SampleRate));
Endpoint_ClearOUT();
Endpoint_ClearOUT();
}
}
@ -286,7 +286,7 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
LEDs_SetAllLEDs(LEDMask);
}
Endpoint_SelectEndpoint(PrevEndpoint);
}

View File

@ -204,7 +204,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.TotalDiscreteSampleRates = (sizeof(ConfigurationDescriptor.Audio_AudioFormatSampleRates) / sizeof(USB_Audio_SampleFreq_t)),
},
.Audio_AudioFormatSampleRates =
{
AUDIO_SAMPLE_FREQ(8000),

View File

@ -83,3 +83,4 @@
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif

View File

@ -109,3 +109,4 @@
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif

View File

@ -157,7 +157,7 @@ void ProcessGenericHIDReport(uint8_t* DataArray)
holding the report sent from the host.
*/
uint8_t NewLEDMask = LEDS_NO_LEDS;
uint8_t NewLEDMask = LEDS_NO_LEDS;
if (DataArray[0])
NewLEDMask |= LEDS_LED1;
@ -170,7 +170,7 @@ void ProcessGenericHIDReport(uint8_t* DataArray)
if (DataArray[3])
NewLEDMask |= LEDS_LED1;
LEDs_SetAllLEDs(NewLEDMask);
}
@ -187,7 +187,7 @@ void CreateGenericHIDReport(uint8_t* DataArray)
*/
uint8_t CurrLEDMask = LEDs_GetLEDs();
DataArray[0] = ((CurrLEDMask & LEDS_LED1) ? 1 : 0);
DataArray[1] = ((CurrLEDMask & LEDS_LED2) ? 1 : 0);
DataArray[2] = ((CurrLEDMask & LEDS_LED3) ? 1 : 0);

View File

@ -59,7 +59,7 @@
typedef struct
{
USB_Descriptor_Configuration_Header_t Config;
// Mass Storage Interface
USB_Descriptor_Interface_t MS_Interface;
USB_Descriptor_Endpoint_t MS_DataInEndpoint;

View File

@ -287,12 +287,12 @@ static bool SCSI_Command_ReadWrite_10(const bool IsDataRead)
SCSI_ASENSE_WRITE_PROTECTED,
SCSI_ASENSEQ_NO_QUALIFIER);
return false;
return false;
}
BlockAddress = SwapEndian_32(*(uint32_t*)&CommandBlock.SCSICommandData[2]);
TotalBlocks = SwapEndian_16(*(uint16_t*)&CommandBlock.SCSICommandData[7]);
/* Check if the block address is outside the maximum allowable value for the LUN */
if (BlockAddress >= LUN_MEDIA_BLOCKS)
{
@ -340,3 +340,4 @@ static bool SCSI_Command_ModeSense_6(void)
return true;
}

View File

@ -309,7 +309,8 @@ static void ReturnCommandStatus(void)
if (IsMassStoreReset)
return;
}
/* Finalize the stream transfer to send the last packet */
Endpoint_ClearIN();
}

View File

@ -49,7 +49,7 @@
typedef struct
{
USB_Descriptor_Configuration_Header_t Config;
// Mouse HID Interface
USB_Descriptor_Interface_t HID_Interface;
USB_HID_Descriptor_HID_t HID_MouseHID;

View File

@ -73,9 +73,9 @@ void SetupHardware(void)
LEDs_Init();
Serial_Init(9600, false);
USB_Init();
/* Create a stdio stream for the serial port for stdin and stdout */
Serial_CreateStream(NULL);
Serial_CreateStream(NULL);
}
/** Event handler for the USB_Connect event. This indicates that the device is enumerating via the status LEDs and

View File

@ -49,7 +49,7 @@
typedef struct
{
USB_Descriptor_Configuration_Header_t Config;
// Mouse HID Interface
USB_Descriptor_Interface_t HID_Interface;
USB_HID_Descriptor_HID_t HID_MouseHID;

View File

@ -74,7 +74,7 @@ void EVENT_USB_Host_DeviceUnattached(void)
* enumerated by the host and is now ready to be used by the application.
*/
void EVENT_USB_Host_DeviceEnumerationComplete(void)
{
{
LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
uint16_t ConfigDescriptorSize;

View File

@ -225,3 +225,4 @@ void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
}

View File

@ -96,7 +96,7 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
LEDs_SetAllLEDs(LEDMask);
}
Pipe_SelectPipe(PrevPipe);
}
@ -193,7 +193,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
TIMSK0 = (1 << OCIE0A);
OCR0A = ((F_CPU / 8 / 48000) - 1);
TCCR0A = (1 << WGM01); // CTC mode
TCCR0B = (1 << CS01); // Fcpu/8 speed
TCCR0B = (1 << CS01); // Fcpu/8 speed
/* Set speaker as output */
DDRC |= (1 << 6);

View File

@ -81,11 +81,11 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
#if defined(USE_TEST_TONE)
static uint8_t SquareWaveSampleCount;
static int16_t CurrentWaveValue;
/* In test tone mode, generate a square wave at 1/256 of the sample rate */
if (SquareWaveSampleCount++ == 0xFF)
CurrentWaveValue ^= 0x8000;
/* Only generate audio if the board button is being pressed */
AudioSample = (Buttons_GetStatus() & BUTTONS_BUTTON1) ? CurrentWaveValue : 0;
#else
@ -97,11 +97,11 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
AudioSample -= (SAMPLE_MAX_RANGE / 2);
#endif
#endif
Audio_Host_WriteSample16(&Speaker_Audio_Interface, AudioSample);
Audio_Host_WriteSample16(&Speaker_Audio_Interface, AudioSample);
Audio_Host_WriteSample16(&Speaker_Audio_Interface, AudioSample);
}
Pipe_SelectPipe(PrevPipe);
}
@ -185,7 +185,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
USB_Host_SetDeviceConfiguration(0);
return;
}
USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);
if (Audio_Host_GetSetEndpointProperty(&Speaker_Audio_Interface, Speaker_Audio_Interface.Config.DataOUTPipeNumber,
AUDIO_REQ_SetCurrent, AUDIO_EPCONTROL_SamplingFreq,

View File

@ -140,7 +140,7 @@ void KeyboardHost_Task(void)
{
PressedKey = '\n';
}
if (PressedKey)
putchar(PressedKey);
}

View File

@ -107,7 +107,7 @@ void KeyboardHost_Task(void)
{
if (USB_HostState != HOST_STATE_Configured)
return;
if (HID_Host_IsReportReceived(&Keyboard_HID_Interface))
{
uint8_t KeyboardReport[Keyboard_HID_Interface.State.LargestReportSize];

View File

@ -68,7 +68,7 @@ int main(void)
for (;;)
{
MassStorageHost_Task();
MS_Host_USBTask(&FlashDisk_MS_Interface);
USB_USBTask();
}

View File

@ -70,7 +70,7 @@
/* Function Prototypes: */
void SetupHardware(void);
void MassStorageHost_Task(void);
void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void);

View File

@ -102,7 +102,7 @@ void MouseHost_Task(void)
{
if (USB_HostState != HOST_STATE_Configured)
return;
if (HID_Host_IsReportReceived(&Mouse_HID_Interface))
{
uint8_t LEDMask = LEDS_NO_LEDS;

View File

@ -107,7 +107,7 @@ void MouseHost_Task(void)
{
if (USB_HostState != HOST_STATE_Configured)
return;
if (HID_Host_IsReportReceived(&Mouse_HID_Interface))
{
uint8_t MouseReport[Mouse_HID_Interface.State.LargestReportSize];

View File

@ -71,7 +71,7 @@ int main(void)
for (;;)
{
StillImageHost_Task();
SI_Host_USBTask(&DigitalCamera_SI_Interface);
USB_USBTask();
}

View File

@ -62,7 +62,7 @@ USB_ClassInfo_CDC_Host_t VirtualSerial_CDC_Interface =
int main(void)
{
SetupHardware();
puts_P(PSTR(ESC_FG_CYAN "CDC Host Demo running.\r\n" ESC_FG_WHITE));
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);

View File

@ -78,7 +78,7 @@ void SetupHardware(void)
void AndroidHost_Task(void)
{
if (USB_HostState != HOST_STATE_Configured)
return;
return;
/* Select the data IN pipe */
Pipe_SelectPipe(ANDROID_DATA_IN_PIPE);
@ -148,7 +148,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
/* Get and process the configuration descriptor data */
uint8_t ErrorCode = ProcessDeviceDescriptor();
bool RequiresModeSwitch = (ErrorCode == NonAccessoryModeAndroidDevice);
/* Error out if the device is not an Android device or an error occurred */
@ -166,12 +166,12 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
}
printf_P(PSTR("Android Device Detected - %sAccessory mode.\r\n"), (RequiresModeSwitch ? "Non-" : ""));
/* Check if a valid Android device was attached, but it is not current in Accessory mode */
if (RequiresModeSwitch)
{
uint16_t AndroidProtocol;
/* Fetch the version of the Android Accessory Protocol supported by the device */
if ((ErrorCode = Android_GetAccessoryProtocol(&AndroidProtocol)) != HOST_SENDCONTROL_Successful)
{
@ -181,7 +181,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
return;
}
/* Validate the returned protocol version */
if (AndroidProtocol != AOA_PROTOCOL_AccessoryV1)
{
@ -190,7 +190,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
return;
}
/* Send the device strings and start the Android Accessory Mode */
Android_SendString(AOA_STRING_Manufacturer, "Dean Camera");
Android_SendString(AOA_STRING_Model, "LUFA Android Demo");
@ -199,7 +199,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
Android_SendString(AOA_STRING_URI, "http://www.lufa-lib.org");
Android_SendString(AOA_STRING_Serial, "0000000012345678");
Android_StartAccessoryMode();
Android_StartAccessoryMode();
return;
}

View File

@ -46,7 +46,7 @@
#include "DeviceDescriptor.h"
#include "ConfigDescriptor.h"
#include "Lib/AndroidAccessoryCommands.h"
#include "Lib/AndroidAccessoryCommands.h"
#include <LUFA/Version.h>
#include <LUFA/Drivers/Misc/TerminalCodes.h>

View File

@ -66,7 +66,7 @@ uint8_t ProcessConfigurationDescriptor(void)
default:
return DevControlError;
}
/* There should be only one compatible Android Accessory Mode interface in the device, attempt to find it */
if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
DCOMP_NextAndroidAccessoryInterface) != DESCRIPTOR_SEARCH_COMP_Found)

View File

@ -33,8 +33,8 @@
* Android Accessory Mode utility functions, for the configuration of an attached
* Android device into Android Accessory Mode ready for general communication.
*/
#include "AndroidAccessoryCommands.h"
#include "AndroidAccessoryCommands.h"
uint8_t Android_GetAccessoryProtocol(uint16_t* const Protocol)
{
@ -79,5 +79,6 @@ uint8_t Android_StartAccessoryMode(void)
};
Pipe_SelectPipe(PIPE_CONTROLPIPE);
return USB_Host_SendControlRequest(NULL);
return USB_Host_SendControlRequest(NULL);
}

View File

@ -41,11 +41,12 @@
#include <stdbool.h>
#include <LUFA/Drivers/USB/USB.h>
/* Function Prototypes: */
uint8_t Android_GetAccessoryProtocol(uint16_t* const Protocol);
uint8_t Android_SendString(const uint8_t StringIndex,
const char* const String);
uint8_t Android_StartAccessoryMode(void);
uint8_t Android_StartAccessoryMode(void);
#endif

View File

@ -123,7 +123,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
return;
}
if ((ErrorCode = USB_Host_SetInterfaceAltSetting(StreamingInterfaceIndex,
StreamingInterfaceAltSetting)) != HOST_SENDCONTROL_Successful)
{
@ -143,7 +143,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
.wIndex = StreamingEndpointAddress,
.wLength = sizeof(USB_Audio_SampleFreq_t),
};
USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);
/* Select the control pipe for the request transfer */
@ -153,7 +153,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
if ((ErrorCode = USB_Host_SendControlRequest(&SampleRate)) != HOST_SENDCONTROL_Successful)
{
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
USB_Host_SetDeviceConfiguration(0);
USB_Host_SetDeviceConfiguration(0);
return;
}
@ -161,7 +161,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
TIMSK0 = (1 << OCIE0A);
OCR0A = ((F_CPU / 8 / 48000) - 1);
TCCR0A = (1 << WGM01); // CTC mode
TCCR0B = (1 << CS01); // Fcpu/8 speed
TCCR0B = (1 << CS01); // Fcpu/8 speed
/* Set speaker as output */
DDRC |= (1 << 6);
@ -169,7 +169,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
/* PWM speaker timer initialization */
TCCR3A = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0)); // Set on match, clear on TOP
TCCR3B = ((1 << WGM32) | (1 << CS30)); // Fast 8-Bit PWM, F_CPU speed
puts_P(PSTR("Microphone Enumerated.\r\n"));
LEDs_SetAllLEDs(LEDMASK_USB_READY);
}
@ -238,7 +238,8 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
LEDs_SetAllLEDs(LEDMask);
}
Pipe_Freeze();
Pipe_SelectPipe(PrevPipe);
}

View File

@ -99,7 +99,7 @@ uint8_t ProcessConfigurationDescriptor(void)
}
/* Save the interface in case we need to refer back to it later */
AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
/* Find the next Audio Streaming interface within that Audio Control interface */
if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
@ -218,3 +218,4 @@ uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor)
return DESCRIPTOR_SEARCH_NotFound;
}

View File

@ -68,7 +68,7 @@ void SetupHardware(void)
Serial_Init(9600, false);
Buttons_Init();
ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_32);
ADC_SetupChannel(MIC_IN_ADC_CHANNEL);
ADC_SetupChannel(MIC_IN_ADC_CHANNEL);
LEDs_Init();
USB_Init();
@ -126,7 +126,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
return;
}
if ((ErrorCode = USB_Host_SetInterfaceAltSetting(StreamingInterfaceIndex,
StreamingInterfaceAltSetting)) != HOST_SENDCONTROL_Successful)
{
@ -146,7 +146,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
.wIndex = StreamingEndpointAddress,
.wLength = sizeof(USB_Audio_SampleFreq_t),
};
USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);
/* Select the control pipe for the request transfer */
@ -164,8 +164,8 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
TIMSK0 = (1 << OCIE0A);
OCR0A = ((F_CPU / 8 / 48000) - 1);
TCCR0A = (1 << WGM01); // CTC mode
TCCR0B = (1 << CS01); // Fcpu/8 speed
TCCR0B = (1 << CS01); // Fcpu/8 speed
puts_P(PSTR("Speaker Enumerated.\r\n"));
LEDs_SetAllLEDs(LEDMASK_USB_READY);
}
@ -207,16 +207,16 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
/* Check if the current pipe can be written to (device ready for more data) */
if (Pipe_IsOUTReady())
{
int16_t AudioSample;
int16_t AudioSample;
#if defined(USE_TEST_TONE)
static uint8_t SquareWaveSampleCount;
static int16_t CurrentWaveValue;
/* In test tone mode, generate a square wave at 1/256 of the sample rate */
if (SquareWaveSampleCount++ == 0xFF)
CurrentWaveValue ^= 0x8000;
/* Only generate audio if the board button is being pressed */
AudioSample = (Buttons_GetStatus() & BUTTONS_BUTTON1) ? CurrentWaveValue : 0;
#else
@ -226,12 +226,12 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
#if defined(MICROPHONE_BIASED_TO_HALF_RAIL)
/* Microphone is biased to half rail voltage, subtract the bias from the sample value */
AudioSample -= (SAMPLE_MAX_RANGE / 2);
#endif
#endif
#endif
Pipe_Write_16_LE(AudioSample);
Pipe_Write_16_LE(AudioSample);
if (!(Pipe_IsReadWriteAllowed()))
Pipe_ClearOUT();
}
@ -239,3 +239,4 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
Pipe_Freeze();
Pipe_SelectPipe(PrevPipe);
}

View File

@ -99,7 +99,7 @@ uint8_t ProcessConfigurationDescriptor(void)
}
/* Save the interface in case we need to refer back to it later */
AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
/* Find the next Audio Streaming interface within that Audio Control interface */
if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
@ -218,3 +218,4 @@ uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor)
return DESCRIPTOR_SEARCH_NotFound;
}

View File

@ -51,7 +51,7 @@ int main(void)
for (;;)
{
ReadNextReport();
USB_USBTask();
}
}

View File

@ -81,7 +81,7 @@
const uint8_t ReportIndex,
const uint8_t ReportType,
uint16_t ReportLength);
void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void);

View File

@ -40,7 +40,7 @@
#include <LUFA/Drivers/USB/USB.h>
#include "JoystickHostWithParser.h"
/* Macros: */
/** HID Report Descriptor Usage Page value for a toggle button. */
#define USAGE_PAGE_BUTTON 0x09
@ -55,7 +55,7 @@
#define USAGE_X 0x30
/** HID Report Descriptor Usage value for a Y axis movement. */
#define USAGE_Y 0x31
#define USAGE_Y 0x31
/* Enums: */
/** Enum for the possible return codes of the \ref GetHIDReportData() function. */

View File

@ -99,7 +99,7 @@ void EVENT_USB_Host_DeviceUnattached(void)
void EVENT_USB_Host_DeviceEnumerationComplete(void)
{
puts_P(PSTR("Getting Config Data.\r\n"));
uint8_t ErrorCode;
/* Get and process the configuration descriptor data */
@ -179,7 +179,7 @@ void JoystickHost_Task(void)
{
if (USB_HostState != HOST_STATE_Configured)
return;
/* Select and unfreeze joystick data pipe */
Pipe_SelectPipe(JOYSTICK_DATA_IN_PIPE);
Pipe_Unfreeze();
@ -268,3 +268,4 @@ void ProcessJoystickReport(uint8_t* JoystickReport)
/* Display the button information on the board LEDs */
LEDs_SetAllLEDs(LEDMask);
}

View File

@ -65,7 +65,7 @@
/** 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)
/* Function Prototypes: */
void SetupHardware(void);
void JoystickHost_Task(void);

View File

@ -181,7 +181,7 @@ void KeyboardHost_Task(void)
{
if (USB_HostState != HOST_STATE_Configured)
return;
/* Select and unfreeze keyboard data pipe */
Pipe_SelectPipe(KEYBOARD_DATA_IN_PIPE);
Pipe_Unfreeze();
@ -259,7 +259,7 @@ void ProcessKeyboardReport(uint8_t* KeyboardReport)
}
else if (KeyCode == HID_KEYBOARD_SC_0_AND_CLOSING_PARENTHESIS)
{
PressedKey = '0';
PressedKey = '0';
}
else if (KeyCode == HID_KEYBOARD_SC_SPACE)
{

View File

@ -165,7 +165,7 @@ void MIDIHost_Task(void)
{
if (USB_HostState != HOST_STATE_Configured)
return;
Pipe_SelectPipe(MIDI_DATA_IN_PIPE);
if (Pipe_IsINReceived())
@ -185,7 +185,7 @@ void MIDIHost_Task(void)
printf_P(PSTR("MIDI Note %s - Channel %d, Pitch %d, Velocity %d\r\n"), NoteOnEvent ? "On" : "Off",
((MIDIEvent.Data1 & 0x0F) + 1),
MIDIEvent.Data2, MIDIEvent.Data3);
}
}
}
Pipe_SelectPipe(MIDI_DATA_OUT_PIPE);

View File

@ -108,7 +108,7 @@ static uint8_t MassStore_SendCommand(MS_CommandBlockWrapper_t* const SCSICommand
return ErrorCode;
}
}
/* Retrieve the returned SCSI status from the device */
MS_CommandStatusWrapper_t SCSIStatusBlock;
return MassStore_GetReturnedStatus(&SCSIStatusBlock);
@ -267,7 +267,7 @@ static uint8_t MassStore_GetReturnedStatus(MS_CommandStatusWrapper_t* const SCSI
{
return ErrorCode;
}
/* Clear the data ready for next reception */
Pipe_ClearIN();
@ -302,13 +302,13 @@ uint8_t MassStore_MassStorageReset(void)
/* Select the control pipe for the request transfer */
Pipe_SelectPipe(PIPE_CONTROLPIPE);
if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
return ErrorCode;
/* Select first data pipe to clear STALL condition if one exists */
Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
if ((ErrorCode = USB_Host_ClearEndpointStall(Pipe_GetBoundEndpointAddress())) != HOST_SENDCONTROL_Successful)
return ErrorCode;
@ -317,7 +317,7 @@ uint8_t MassStore_MassStorageReset(void)
if ((ErrorCode = USB_Host_ClearEndpointStall(Pipe_GetBoundEndpointAddress())) != HOST_SENDCONTROL_Successful)
return ErrorCode;
return HOST_SENDCONTROL_Successful;
}

View File

@ -284,3 +284,4 @@ void ProcessMouseReport(uint8_t* MouseReport)
/* Display the button information on the board LEDs */
LEDs_SetAllLEDs(LEDMask);
}

View File

@ -218,7 +218,7 @@ void PrinterHost_Task(void)
puts_P(PSTR("Test Page Sent.\r\n"));
/* Indicate device no longer busy */
LEDs_SetAllLEDs(LEDMASK_USB_READY);
LEDs_SetAllLEDs(LEDMASK_USB_READY);
USB_Host_SetDeviceConfiguration(0);
}

View File

@ -83,6 +83,6 @@
void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
const uint8_t SubErrorCode);
#endif

View File

@ -222,7 +222,7 @@ uint8_t DComp_NextCDCDataInterfaceEndpoint(void* CurrentDescriptor)
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) ||
if (((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_BULK) ||
((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_INTERRUPT))
{
return DESCRIPTOR_SEARCH_Found;

View File

@ -177,7 +177,7 @@ uint8_t DComp_NextStillImageInterfaceDataEndpoint(void* CurrentDescriptor)
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) ||
if (((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_BULK) ||
((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_INTERRUPT))
{
return DESCRIPTOR_SEARCH_Found;

View File

@ -221,7 +221,7 @@ uint8_t DComp_NextCDCDataInterfaceEndpoint(void* CurrentDescriptor)
{
USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);
if (((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_BULK) ||
if (((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_BULK) ||
((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_INTERRUPT))
{
return DESCRIPTOR_SEARCH_Found;

View File

@ -35,7 +35,7 @@
header, copy this into your project's root directory and supply
the \c USE_LUFA_CONFIG_HEADER token to the compiler so that it is
defined in all compiled source files.
For information on what each token does, refer to the LUFA
manual section "Summary of Compile Tokens".
*/
@ -85,7 +85,7 @@
// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here}
#elif (ARCH == ARCH_XMEGA)
/* Non-USB Related Configuration Tokens: */
// #define DISABLE_TERMINAL_CODES
@ -151,6 +151,6 @@
// #define USB_HOST_TIMEOUT_MS {Insert Value Here}
// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here}
#endif
#endif
#endif

View File

@ -55,7 +55,7 @@
#if !defined(__INCLUDE_FROM_COMMON_H)
#error Do not include this file directly. Include LUFA/Common/Common.h instead to gain this functionality.
#endif
/* Enable C linkage for C++ Compilers: */
#if defined(__cplusplus)
extern "C" {
@ -82,7 +82,7 @@
"M" (_SFR_IO_ADDR(MCUCR)) \
: "r0"); \
}MACROE
/** Defines a volatile \c NOP statement which cannot be optimized out by the compiler, and thus can always
* be set as a breakpoint in the resulting code. Useful for debugging purposes, where the optimizer
* removes/reorders code to the point where break points cannot reliably be set.
@ -136,7 +136,7 @@
#define pgm_read_ptr(Address) (void*)pgm_read_word(Address)
#endif
#endif
/* Disable C linkage for C++ Compilers: */
#if defined(__cplusplus)
}

View File

@ -66,10 +66,10 @@
/** Selects the Atmel 32-bit UC3 AVR (AT32UC3* chips) architecture. */
#define ARCH_UC3 1
/** Selects the Atmel XMEGA AVR (ATXMEGA*U chips) architecture. */
#define ARCH_XMEGA 2
#if !defined(__DOXYGEN__)
#define ARCH_ ARCH_AVR8

View File

@ -133,14 +133,14 @@
* \param[in] Func Name of the function which the given function name should alias.
*/
#define ATTR_ALIAS(Func) __attribute__ ((alias( #Func )))
/** Marks a variable or struct element for packing into the smallest space available, omitting any
* alignment bytes usually added between fields to optimize field accesses.
*/
#define ATTR_PACKED __attribute__ ((packed))
/** Indicates the minimum alignment in bytes for a variable or struct element.
*
*
* \param[in] Bytes Minimum number of bytes the item should be aligned to.
*/
#define ATTR_ALIGNED(Bytes) __attribute__ ((aligned(Bytes)))

View File

@ -140,13 +140,13 @@
/** Selects the Kernel Concepts USBFOO specific board drivers, including the Button and LEDs drivers. */
#define BOARD_USBFOO 25
/** Selects the Sparkfun ATMEGA8U2 specific board drivers, including the driver for the board LEDs. */
#define BOARD_SPARKFUN8U2 26
/** Selects the Atmel EVK1101 specific board drivers, including the Button, Joystick and LED drivers. */
#define BOARD_EVK1101 27
/** Selects the Busware TUL specific board drivers, including the Button and LED drivers. */
#define BOARD_TUL 28
@ -155,7 +155,7 @@
/** Selects the Atmel EVK1104 specific board drivers, including the Button and LED drivers. */
#define BOARD_EVK1104 30
/** Selects the Atmel XMEGA A3BU Xplained specific board drivers, including Dataflash, Button and LED drivers. */
#define BOARD_A3BU_XPLAINED 31

View File

@ -42,7 +42,7 @@
*
* @{
*/
/** \defgroup Group_GlobalInt Global Interrupt Macros
* \brief Convenience macros for the management of interrupts globally within the device.
*
@ -54,13 +54,13 @@
/* Macros: */
#define __INCLUDE_FROM_COMMON_H
/* Includes: */
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include <stddef.h>
#if defined(USE_LUFA_CONFIG_HEADER)
#include "LUFAConfig.h"
#endif
@ -70,7 +70,7 @@
#include "ArchitectureSpecific.h"
#include "CompilerSpecific.h"
#include "Attributes.h"
/* Enable C linkage for C++ Compilers: */
#if defined(__cplusplus)
extern "C" {
@ -90,9 +90,9 @@
#include <avr/eeprom.h>
#include <avr/boot.h>
#include <util/delay.h>
typedef uint8_t uint_reg_t;
#define ARCH_HAS_EEPROM_ADDRESS_SPACE
#define ARCH_HAS_FLASH_ADDRESS_SPACE
#define ARCH_HAS_MULTI_ADDRESS_SPACE
@ -110,7 +110,7 @@
// =================================================
typedef uint32_t uint_reg_t;
#define ARCH_BIG_ENDIAN
#include "Endianness.h"
@ -120,15 +120,15 @@
#include <avr/pgmspace.h>
#include <avr/eeprom.h>
#include <util/delay.h>
typedef uint8_t uint_reg_t;
#define ARCH_HAS_EEPROM_ADDRESS_SPACE
#define ARCH_HAS_FLASH_ADDRESS_SPACE
#define ARCH_HAS_MULTI_ADDRESS_SPACE
#define ARCH_LITTLE_ENDIAN
#include "Endianness.h"
#include "Endianness.h"
#else
#error Unknown device architecture specified.
#endif
@ -176,7 +176,7 @@
#if !defined(MIN) || defined(__DOXYGEN__)
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
#endif
#if !defined(STRINGIFY) || defined(__DOXYGEN__)
/** Converts the given input into a string, via the C Preprocessor. This macro puts literal quotation
* marks around the input, converting the source into a string literal.
@ -256,7 +256,7 @@
while (Milliseconds--)
{
__builtin_mtsr(AVR32_COUNT, 0);
while (__builtin_mfsr(AVR32_COUNT) < (F_CPU / 1000));
while (__builtin_mfsr(AVR32_COUNT) < (F_CPU / 1000));
}
#elif (ARCH == ARCH_XMEGA)
if (GCC_IS_COMPILE_CONST(Milliseconds))
@ -267,7 +267,7 @@
{
while (Milliseconds--)
_delay_ms(1);
}
}
#endif
}
@ -316,12 +316,12 @@
else
__builtin_csrf(AVR32_SR_GM_OFFSET);
#elif (ARCH == ARCH_XMEGA)
SREG = GlobalIntState;
SREG = GlobalIntState;
#endif
GCC_MEMORY_BARRIER();
}
/** Enables global interrupt handling for the device, allowing interrupts to be handled.
*
* \ingroup Group_GlobalInt
@ -340,7 +340,7 @@
#endif
GCC_MEMORY_BARRIER();
}
}
/** Disabled global interrupt handling for the device, preventing interrupts from being handled.
*

View File

@ -43,7 +43,7 @@
*
* Compiler specific definitions to expose certain compiler features which may increase the level of code optimization
* for a specific compiler, or correct certain issues that may be present such as memory barriers for use in conjunction
* with atomic variable access.
* with atomic variable access.
*
* Where possible, on alternative compilers, these macros will either have no effect, or default to returning a sane value
* so that they can be used in existing code without the need for extra compiler checks in the user application code.
@ -77,7 +77,7 @@
* assembly output in an unexpected manner on sections of code that are ordering-specific.
*/
#define GCC_MEMORY_BARRIER() __asm__ __volatile__("" ::: "memory");
/** Evaluates to boolean true if the specified value can be determined at compile time to be a constant value
* when compiling under GCC.
*

View File

@ -65,7 +65,7 @@
#if !defined(__INCLUDE_FROM_COMMON_H)
#error Do not include this file directly. Include LUFA/Common/Common.h instead to gain this functionality.
#endif
#if !(defined(ARCH_BIG_ENDIAN) || defined(ARCH_LITTLE_ENDIAN))
#error ARCH_BIG_ENDIAN or ARCH_LITTLE_ENDIAN not set for the specified architecture.
#endif
@ -115,11 +115,11 @@
#define CPU_TO_LE16(x) SWAPENDIAN_16(x)
#define CPU_TO_LE32(x) SWAPENDIAN_32(x)
#define CPU_TO_BE16(x) (x)
#define CPU_TO_BE32(x) (x)
#define CPU_TO_BE32(x) (x)
#elif !defined(le16_to_cpu)
/** \name Run-time endianness conversion */
//@{
/** Performs a conversion between a Little Endian encoded 16-bit piece of data and the
* Endianness of the currently selected CPU architecture.
*
@ -398,7 +398,7 @@
{
if (GCC_IS_COMPILE_CONST(Word))
return SWAPENDIAN_16(Word);
uint8_t Temp;
union
@ -486,3 +486,4 @@
#endif
/** @} */

View File

@ -124,3 +124,4 @@
#endif
/** @} */

View File

@ -66,7 +66,7 @@
/* Macros: */
#define JOY_FMASK ((1 << 4) | (1 << 5) | (1 << 6) | (1 << 7))
#define JOY_CMASK (1 << 6)
#define JOY_PORTC_MASK_SHIFT 3
#endif

View File

@ -127,3 +127,4 @@
#endif
/** @} */

View File

@ -1,7 +1,7 @@
/*
LUFA Library
Copyright (C) Dean Camera, 2011.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
@ -9,13 +9,13 @@
/*
Copyright 2011 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
@ -82,7 +82,7 @@
DDRB |= LEDS_ALL_LEDS;
PORTB &= ~LEDS_ALL_LEDS;
}
static inline void LEDs_TurnOnLEDs(const uint8_t LEDMask)
{
PORTB |= LEDMask;
@ -97,18 +97,18 @@
{
PORTB = ((PORTB & ~LEDS_ALL_LEDS) | LEDMask);
}
static inline void LEDs_ChangeLEDs(const uint8_t LEDMask,
const uint8_t ActiveMask)
{
PORTB = ((PORTB & ~LEDMask) | ActiveMask);
}
static inline void LEDs_ToggleLEDs(const uint8_t LEDMask)
{
PORTB ^= LEDMask;
}
static inline uint8_t LEDs_GetLEDs(void) ATTR_WARN_UNUSED_RESULT;
static inline uint8_t LEDs_GetLEDs(void)
{
@ -120,7 +120,8 @@
#if defined(__cplusplus)
}
#endif
#endif
/** @} */

Some files were not shown because too many files have changed in this diff Show More