Commit ef06eefc authored by Dean Camera's avatar Dean Camera
Browse files

Add svn:eol-style property on all source files where it was missing. Fix line...

Add svn:eol-style property on all source files where it was missing. Fix line endings of all makefile, *.c and *.h files.
parent 393fc71d
/*
LUFA Library
Copyright (C) Dean Camera, 2012.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Copyright 2010 Peter Lawrence (majbthrd [at] gmail [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 disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
*/
/** \file
*
* Header file for Descriptors.c.
*/
#ifndef _DESCRIPTORS_H_
#define _DESCRIPTORS_H_
/* Includes: */
#include <avr/pgmspace.h>
#include <LUFA/Drivers/USB/USB.h>
/* Macros: */
/** Endpoint address of the TMC notification IN endpoint. */
#define TMC_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | 2)
/** Endpoint address of the TMC device-to-host data IN endpoint. */
#define TMC_IN_EPADDR (ENDPOINT_DIR_IN | 3)
/** Endpoint address of the TMC host-to-device data OUT endpoint. */
#define TMC_OUT_EPADDR (ENDPOINT_DIR_OUT | 4)
/** Size in bytes of the TMC data endpoints. */
#define TMC_IO_EPSIZE 64
/** Size in bytes of the TMC notification endpoint. */
#define TMC_NOTIFICATION_EPSIZE 8
/* Type Defines: */
/** Type define for the device configuration descriptor structure. This must be defined in the
* application code, as the configuration descriptor contains several sub-descriptors which
* vary between devices, and which describe the device's usage to the host.
*/
typedef struct
{
USB_Descriptor_Configuration_Header_t Config;
// Test and Measurement Interface
USB_Descriptor_Interface_t TM_Interface;
USB_Descriptor_Endpoint_t TM_DataOutEndpoint;
USB_Descriptor_Endpoint_t TM_DataInEndpoint;
USB_Descriptor_Endpoint_t TM_NotificationEndpoint;
} USB_Descriptor_Configuration_t;
/* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
const void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif
/*
LUFA Library
Copyright (C) Dean Camera, 2012.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Copyright 2010 Peter Lawrence (majbthrd [at] gmail [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 disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
*/
/** \file
*
* Header file for Descriptors.c.
*/
#ifndef _DESCRIPTORS_H_
#define _DESCRIPTORS_H_
/* Includes: */
#include <avr/pgmspace.h>
#include <LUFA/Drivers/USB/USB.h>
/* Macros: */
/** Endpoint address of the TMC notification IN endpoint. */
#define TMC_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | 2)
/** Endpoint address of the TMC device-to-host data IN endpoint. */
#define TMC_IN_EPADDR (ENDPOINT_DIR_IN | 3)
/** Endpoint address of the TMC host-to-device data OUT endpoint. */
#define TMC_OUT_EPADDR (ENDPOINT_DIR_OUT | 4)
/** Size in bytes of the TMC data endpoints. */
#define TMC_IO_EPSIZE 64
/** Size in bytes of the TMC notification endpoint. */
#define TMC_NOTIFICATION_EPSIZE 8
/* Type Defines: */
/** Type define for the device configuration descriptor structure. This must be defined in the
* application code, as the configuration descriptor contains several sub-descriptors which
* vary between devices, and which describe the device's usage to the host.
*/
typedef struct
{
USB_Descriptor_Configuration_Header_t Config;
// Test and Measurement Interface
USB_Descriptor_Interface_t TM_Interface;
USB_Descriptor_Endpoint_t TM_DataOutEndpoint;
USB_Descriptor_Endpoint_t TM_DataInEndpoint;
USB_Descriptor_Endpoint_t TM_NotificationEndpoint;
} USB_Descriptor_Configuration_t;
/* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
const void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif
/*
LUFA Library
Copyright (C) Dean Camera, 2012.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
Copyright 2012 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 disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
*/
#ifndef _TESTANDMEASUREMENT_H_
#define _TESTANDMEASUREMENT_H_
/* Includes: */
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/power.h>
#include <avr/interrupt.h>
#include "Descriptors.h"
#include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/Board/LEDs.h>
/* Macros: */
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#define LEDMASK_USB_NOTREADY LEDS_LED1
/** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
#define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)
/** LED mask for the library LED driver, to indicate that the USB interface is ready. */
#define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)
/** 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)
/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
#define LEDMASK_USB_BUSY LEDS_LED2
#define Req_InitiateAbortBulkOut 0x01
#define Req_CheckAbortBulkOutStatus 0x02
#define Req_InitiateAbortBulkIn 0x03
#define Req_CheckAbortBulkInStatus 0x04
#define Req_InitiateClear 0x05
#define Req_CheckClearStatus 0x06
#define Req_GetCapabilities 0x07
#define Req_IndicatorPulse 0x40
#define TMC_STATUS_SUCCESS 0x01
#define TMC_STATUS_PENDING 0x02
#define TMC_STATUS_FAILED 0x80
#define TMC_STATUS_TRANSFER_NOT_IN_PROGRESS 0x81
#define TMC_STATUS_SPLIT_NOT_IN_PROGRESS 0x82
#define TMC_STATUS_SPLIT_IN_PROGRESS 0x83
#define TMC_MESSAGEID_DEV_DEP_MSG_OUT 0x01
#define TMC_MESSAGEID_DEV_DEP_MSG_IN 0x02
#define TMC_MESSAGEID_DEV_VENDOR_OUT 0x7E
#define TMC_MESSAGEID_DEV_VENDOR_IN 0x7F
/* Type Defines */
typedef struct
{
uint8_t Status;
uint8_t Reserved;
uint16_t TMCVersion;
struct
{
unsigned ListenOnly : 1;
unsigned TalkOnly : 1;
unsigned PulseIndicateSupported : 1;
unsigned Reserved : 5;
} Interface;
struct
{
unsigned SupportsAbortINOnMatch : 1;
unsigned Reserved : 7;
} Device;
uint8_t Reserved2[6];
uint8_t Reserved3[12];
} TMC_Capabilities_t;
typedef struct
{
uint8_t LastMessageTransaction;
uint8_t TermChar;
uint8_t Reserved[2];
} TMC_DevOUTMessageHeader_t;
typedef struct
{
uint8_t LastMessageTransaction;
uint8_t Reserved[3];
} TMC_DevINMessageHeader_t;
typedef struct
{
uint8_t MessageID;
uint8_t Tag;
uint8_t InverseTag;
uint8_t Reserved;
uint32_t TransferSize;
union
{
TMC_DevOUTMessageHeader_t DeviceOUT;
TMC_DevINMessageHeader_t DeviceIN;
uint32_t VendorSpecific;
} MessageIDSpecific;
} TMC_MessageHeader_t;
/* Function Prototypes: */
void SetupHardware(void);
void TMC_Task(void);
bool ReadTMCHeader(TMC_MessageHeader_t* const MessageHeader);
bool WriteTMCHeader(TMC_MessageHeader_t* const MessageHeader);
void EVENT_USB_Device_Connect(void);
void EVENT_USB_Device_Disconnect(void);
void EVENT_USB_Device_ConfigurationChanged(void);
void EVENT_USB_Device_ControlRequest(void);
#endif
/*
LUFA Library
Copyright (C) Dean Camera, 2012.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
Copyright 2012 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 disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
*/
#ifndef _TESTANDMEASUREMENT_H_
#define _TESTANDMEASUREMENT_H_
/* Includes: */
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/power.h>
#include <avr/interrupt.h>
#include "Descriptors.h"
#include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/Board/LEDs.h>
/* Macros: */
/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
#define LEDMASK_USB_NOTREADY LEDS_LED1
/** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
#define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)
/** LED mask for the library LED driver, to indicate that the USB interface is ready. */
#define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)
/** 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)
/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
#define LEDMASK_USB_BUSY LEDS_LED2
#define Req_InitiateAbortBulkOut 0x01
#define Req_CheckAbortBulkOutStatus 0x02
#define Req_InitiateAbortBulkIn 0x03
#define Req_CheckAbortBulkInStatus 0x04
#define Req_InitiateClear 0x05
#define Req_CheckClearStatus 0x06
#define Req_GetCapabilities 0x07
#define Req_IndicatorPulse 0x40
#define TMC_STATUS_SUCCESS 0x01
#define TMC_STATUS_PENDING 0x02
#define TMC_STATUS_FAILED 0x80
#define TMC_STATUS_TRANSFER_NOT_IN_PROGRESS 0x81
#define TMC_STATUS_SPLIT_NOT_IN_PROGRESS 0x82
#define TMC_STATUS_SPLIT_IN_PROGRESS 0x83
#define TMC_MESSAGEID_DEV_DEP_MSG_OUT 0x01
#define TMC_MESSAGEID_DEV_DEP_MSG_IN 0x02
#define TMC_MESSAGEID_DEV_VENDOR_OUT 0x7E
#define TMC_MESSAGEID_DEV_VENDOR_IN 0x7F
/* Type Defines */
typedef struct
{
uint8_t Status;
uint8_t Reserved;
uint16_t TMCVersion;
struct
{
unsigned ListenOnly : 1;
unsigned TalkOnly : 1;
unsigned PulseIndicateSupported : 1;
unsigned Reserved : 5;
} Interface;
struct
{
unsigned SupportsAbortINOnMatch : 1;
unsigned Reserved : 7;
} Device;
uint8_t Reserved2[6];
uint8_t Reserved3[12];
} TMC_Capabilities_t;
typedef struct
{
uint8_t LastMessageTransaction;
uint8_t TermChar;
uint8_t Reserved[2];
} TMC_DevOUTMessageHeader_t;
typedef struct
{
uint8_t LastMessageTransaction;
uint8_t Reserved[3];
} TMC_DevINMessageHeader_t;
typedef struct
{
uint8_t MessageID;
uint8_t Tag;
uint8_t InverseTag;
uint8_t Reserved;
uint32_t TransferSize;
union
{
TMC_DevOUTMessageHeader_t DeviceOUT;
TMC_DevINMessageHeader_t DeviceIN;
uint32_t VendorSpecific;
} MessageIDSpecific;
} TMC_MessageHeader_t;
/* Function Prototypes: */
void SetupHardware(void);
void TMC_Task(void);
bool ReadTMCHeader(TMC_MessageHeader_t* const MessageHeader);
bool WriteTMCHeader(TMC_MessageHeader_t* const MessageHeader);
void EVENT_USB_Device_Connect(void);
void EVENT_USB_Device_Disconnect(void);
void EVENT_USB_Device_ConfigurationChanged(void);
void EVENT_USB_Device_ControlRequest(void);
#endif
/*
LUFA Library
Copyright (C) Dean Camera, 2012.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
Copyright 2012 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 disclaim all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
whatsoever resulting from loss of use, data or profits, whether
in an action of contract, negligence or other tortious action,
arising out of or in connection with the use or performance of
this software.
*/
/** \file
*
* Main source file for the AndroidAccessoryHost demo. This file contains the main tasks of
* the demo and is responsible for the initial application hardware configuration.
*/
#include "AndroidAccessoryHost.h"
/** LUFA Android Open Accessory Class driver interface configuration and state information. This
* structure is passed to all Android Open Accessory Class driver functions, so that multiple
* instances of the same class within a device can be differentiated from one another.
*/
USB_ClassInfo_AOA_Host_t AndroidDevice_AOA_Interface =
{
.Config =
{
.DataINPipe =
{
.Address = (PIPE_DIR_IN | 1),
.Banks = 1,
},
.DataOUTPipe =
{
.Address = (PIPE_DIR_OUT | 2),
.Banks = 1,
},
.PropertyStrings =
{
[AOA_STRING_Manufacturer] = "Dean Camera",
[AOA_STRING_Model] = "LUFA Android Demo",
[AOA_STRING_Description] = "LUFA Android Demo",
[AOA_STRING_Version] = "1.0",
[AOA_STRING_URI] = "http://www.lufa-lib.org",
[AOA_STRING_Serial] = "0000000012345678",
},
},
};
/** 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 "Android Accessory Host Demo running.\r\n" ESC_FG_WHITE));
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
sei();
for (;;)
{
AOAHost_Task();
AOA_Host_USBTask(&AndroidDevice_AOA_Interface);
USB_USBTask();
}
}
/** Configures the board hardware and chip peripherals for the demo's functionality. */
void SetupHardware(void)
{
/* Disable watchdog if enabled by bootloader/fuses */
MCUSR &= ~(1 << WDRF);
wdt_disable();
/* Disable clock division */
clock_prescale_set(clock_div_1);
/* 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);
}
/** Task to manage an enumerated USB Android Accessory device once connected, to print received data
* from the device to the serial port.
*/
void AOAHost_Task(void)
{
if (USB_HostState != HOST_STATE_Configured)
return;
if (AOA_Host_BytesReceived(&AndroidDevice_AOA_Interface))
{
/* Echo received bytes from the attached device through the USART */
int16_t ReceivedByte = AOA_Host_ReceiveByte(&AndroidDevice_AOA_Interface);
if (!(ReceivedByte < 0))
putchar(ReceivedByte);
}
}
/** 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)
{