removing unused code
diff --git a/gyro_board/src/usb/LPCUSB/USB_CDC.c b/gyro_board/src/usb/LPCUSB/USB_CDC.c
deleted file mode 100644
index 47d28db..0000000
--- a/gyro_board/src/usb/LPCUSB/USB_CDC.c
+++ /dev/null
@@ -1,454 +0,0 @@
-/*
- LPCUSB, an USB device driver for LPC microcontrollers
- Copyright (C) 2006 Bertrik Sikken (bertrik@sikken.nl)
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 3. The name of the author may not be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- Minimal implementation of a USB serial port, using the CDC class.
- This example application simply echoes everything it receives right back
- to the host.
-
- Windows:
- Extract the usbser.sys file from .cab file in C:\WINDOWS\Driver Cache\i386
- and store it somewhere (C:\temp is a good place) along with the usbser.inf
- file. Then plug in the LPC176x and direct windows to the usbser driver.
- Windows then creates an extra COMx port that you can open in a terminal
- program, like hyperterminal. [Note for FreeRTOS users - the required .inf
- file is included in the project directory.]
-
- Linux:
- The device should be recognised automatically by the cdc_acm driver,
- which creates a /dev/ttyACMx device file that acts just like a regular
- serial port.
-
-*/
-
-#include "FreeRTOS.h"
-#include "queue.h"
-#include "task.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#include "usbapi.h"
-#include "usbdebug.h"
-#include "usbstruct.h"
-
-#include "LPC17xx.h"
-
-#define usbMAX_SEND_BLOCK ( 20 / portTICK_RATE_MS )
-#define usbRXBUFFER_LEN ( 80 )
-#define usbTXBUFFER_LEN ( 600 )
-
-#define INCREMENT_ECHO_BY 0
-#define BAUD_RATE 115200
-
-#define INT_IN_EP 0x81
-#define BULK_OUT_EP 0x05
-#define BULK_IN_EP 0x82
-
-#define MAX_PACKET_SIZE 64
-
-#define LE_WORD(x) ((x)&0xFF),((x)>>8)
-
-// CDC definitions
-#define CS_INTERFACE 0x24
-#define CS_ENDPOINT 0x25
-
-#define SET_LINE_CODING 0x20
-#define GET_LINE_CODING 0x21
-#define SET_CONTROL_LINE_STATE 0x22
-
-// data structure for GET_LINE_CODING / SET_LINE_CODING class requests
-typedef struct {
- unsigned long dwDTERate;
- unsigned char bCharFormat;
- unsigned char bParityType;
- unsigned char bDataBits;
-} TLineCoding;
-
-static TLineCoding LineCoding = {115200, 0, 0, 8};
-static unsigned char abBulkBuf[64];
-static unsigned char abClassReqData[8];
-
-static xQueueHandle xRxedChars = NULL, xCharsForTx = NULL;
-
-// forward declaration of interrupt handler
-void USBIntHandler(void);
-
-static const unsigned char abDescriptors[] = {
-
-// device descriptor
- 0x12,
- DESC_DEVICE,
- LE_WORD(0x0101), // bcdUSB
- 0x02, // bDeviceClass
- 0x00, // bDeviceSubClass
- 0x00, // bDeviceProtocol
- MAX_PACKET_SIZE0, // bMaxPacketSize
- LE_WORD(0xFFFF), // idVendor
- LE_WORD(0x0005), // idProduct
- LE_WORD(0x0100), // bcdDevice
- 0x01, // iManufacturer
- 0x02, // iProduct
- 0x03, // iSerialNumber
- 0x01, // bNumConfigurations
-
-// configuration descriptor
- 0x09,
- DESC_CONFIGURATION,
- LE_WORD(67), // wTotalLength
- 0x02, // bNumInterfaces
- 0x01, // bConfigurationValue
- 0x00, // iConfiguration
- 0xC0, // bmAttributes
- 0x32, // bMaxPower
-// control class interface
- 0x09,
- DESC_INTERFACE,
- 0x00, // bInterfaceNumber
- 0x00, // bAlternateSetting
- 0x01, // bNumEndPoints
- 0x02, // bInterfaceClass
- 0x02, // bInterfaceSubClass
- 0x01, // bInterfaceProtocol, linux requires value of 1 for the cdc_acm module
- 0x00, // iInterface
-// header functional descriptor
- 0x05,
- CS_INTERFACE,
- 0x00,
- LE_WORD(0x0110),
-// call management functional descriptor
- 0x05,
- CS_INTERFACE,
- 0x01,
- 0x01, // bmCapabilities = device handles call management
- 0x01, // bDataInterface
-// ACM functional descriptor
- 0x04,
- CS_INTERFACE,
- 0x02,
- 0x02, // bmCapabilities
-// union functional descriptor
- 0x05,
- CS_INTERFACE,
- 0x06,
- 0x00, // bMasterInterface
- 0x01, // bSlaveInterface0
-// notification EP
- 0x07,
- DESC_ENDPOINT,
- INT_IN_EP, // bEndpointAddress
- 0x03, // bmAttributes = intr
- LE_WORD(8), // wMaxPacketSize
- 0x0A, // bInterval
-// data class interface descriptor
- 0x09,
- DESC_INTERFACE,
- 0x01, // bInterfaceNumber
- 0x00, // bAlternateSetting
- 0x02, // bNumEndPoints
- 0x0A, // bInterfaceClass = data
- 0x00, // bInterfaceSubClass
- 0x00, // bInterfaceProtocol
- 0x00, // iInterface
-// data EP OUT
- 0x07,
- DESC_ENDPOINT,
- BULK_OUT_EP, // bEndpointAddress
- 0x02, // bmAttributes = bulk
- LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize
- 0x00, // bInterval
-// data EP in
- 0x07,
- DESC_ENDPOINT,
- BULK_IN_EP, // bEndpointAddress
- 0x02, // bmAttributes = bulk
- LE_WORD(MAX_PACKET_SIZE), // wMaxPacketSize
- 0x00, // bInterval
-
- // string descriptors
- 0x04,
- DESC_STRING,
- LE_WORD(0x0409),
-
- 0x0E,
- DESC_STRING,
- 'L', 0, 'P', 0, 'C', 0, 'U', 0, 'S', 0, 'B', 0,
-
- 0x14,
- DESC_STRING,
- 'U', 0, 'S', 0, 'B', 0, 'S', 0, 'e', 0, 'r', 0, 'i', 0, 'a', 0, 'l', 0,
-
- 0x12,
- DESC_STRING,
- 'A', 0, 'B', 0, 'S', 0, 'M', 0, 'o', 0, 't', 0, 'o', 0, 'r', 0,
-
-// terminating zero
- 0
-};
-
-
-/**
- Local function to handle incoming bulk data
-
- @param [in] bEP
- @param [in] bEPStatus
- */
-static void BulkOut(unsigned char bEP, unsigned char bEPStatus)
-{
- int i, iLen;
- long lHigherPriorityTaskWoken = pdFALSE;
-
- (void) bEPStatus;
-
- // get data from USB into intermediate buffer
- iLen = USBHwEPRead(bEP, abBulkBuf, sizeof(abBulkBuf));
- for (i = 0; i < iLen; i++) {
- // put into queue
- xQueueSendFromISR(xRxedChars, &(abBulkBuf[ i ]), &lHigherPriorityTaskWoken);
- }
-
- portEND_SWITCHING_ISR(lHigherPriorityTaskWoken);
-}
-
-
-/**
- Local function to handle outgoing bulk data
-
- @param [in] bEP
- @param [in] bEPStatus
- */
-static void BulkIn(unsigned char bEP, unsigned char bEPStatus)
-{
- int i, iLen;
- long lHigherPriorityTaskWoken = pdFALSE;
-
- (void) bEPStatus;
-
- if (uxQueueMessagesWaitingFromISR(xCharsForTx) == 0) {
- // no more data, disable further NAK interrupts until next USB frame
- USBHwNakIntEnable(0);
- return;
- }
-
- // get bytes from transmit FIFO into intermediate buffer
- for (i = 0; i < MAX_PACKET_SIZE; i++) {
- if (xQueueReceiveFromISR(xCharsForTx, (&abBulkBuf[i]), &lHigherPriorityTaskWoken) != pdPASS) {
- break;
- }
- }
- iLen = i;
-
- // send over USB
- if (iLen > 0) {
- USBHwEPWrite(bEP, abBulkBuf, iLen);
- }
-
- portEND_SWITCHING_ISR(lHigherPriorityTaskWoken);
-}
-
-
-/**
- Local function to handle the USB-CDC class requests
-
- @param [in] pSetup
- @param [out] piLen
- @param [out] ppbData
- */
-static BOOL HandleClassRequest(TSetupPacket *pSetup, int *piLen, unsigned char **ppbData)
-{
- switch (pSetup->bRequest) {
-
- // set line coding
- case SET_LINE_CODING:
- DBG("SET_LINE_CODING\n");
- memcpy((unsigned char *)&LineCoding, *ppbData, 7);
- *piLen = 7;
- DBG("dwDTERate=%u, bCharFormat=%u, bParityType=%u, bDataBits=%u\n",
- LineCoding.dwDTERate,
- LineCoding.bCharFormat,
- LineCoding.bParityType,
- LineCoding.bDataBits);
- break;
-
- // get line coding
- case GET_LINE_CODING:
- DBG("GET_LINE_CODING\n");
- *ppbData = (unsigned char *) & LineCoding;
- *piLen = 7;
- break;
-
- // set control line state
- case SET_CONTROL_LINE_STATE:
- // bit0 = DTR, bit = RTS
- DBG("SET_CONTROL_LINE_STATE %X\n", pSetup->wValue);
- break;
-
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-
-/**
- Writes one character to VCOM port
-
- @param [in] c character to write
- @returns character written, or EOF if character could not be written
- */
-int VCOM_putchar(int c)
-{
- char cc = (char) c;
-
- if (xQueueSend(xCharsForTx, &cc, usbMAX_SEND_BLOCK) == pdPASS) {
- return c;
- } else {
- return EOF;
- }
-}
-
-
-/**
- Reads one character from VCOM port
-
- @returns character read, or EOF if character could not be read
- */
-int VCOM_getchar(void)
-{
- unsigned char c;
-
- /* Block the task until a character is available. */
- xQueueReceive(xRxedChars, &c, portMAX_DELAY);
- return c;
-}
-
-
-/**
- Interrupt handler
-
- Simply calls the USB ISR
- */
-void USB_IRQHandler(void)
-{
- USBHwISR();
-}
-
-
-static void USBFrameHandler(unsigned short wFrame)
-{
- (void) wFrame;
-
- if (uxQueueMessagesWaitingFromISR(xCharsForTx) > 0) {
- // data available, enable NAK interrupt on bulk in
- USBHwNakIntEnable(INACK_BI);
- }
-}
-
-unsigned long CPUcpsie(void)
-{
- unsigned long ulRet;
-
- //
- // Read PRIMASK and enable interrupts.
- //
- __asm(" mrs %0, PRIMASK\n"
- " cpsie i\n"
- " bx lr\n"
- : "=r"(ulRet));
-
- //
- // The return is handled in the inline assembly, but the compiler will
- // still complain if there is not an explicit return here (despite the fact
- // that this does not result in any code being produced because of the
- // naked attribute).
- //
- return(ulRet);
-}
-
-void vUSBTask(void *pvParameters)
-{
- //int c;
- portTickType xLastFlashTime;
-
- /* Just to prevent compiler warnings about the unused parameter. */
- (void) pvParameters;
- DBG("Initialising USB stack\n");
-
- xRxedChars = xQueueCreate(usbRXBUFFER_LEN, sizeof(char));
- xCharsForTx = xQueueCreate(usbTXBUFFER_LEN, sizeof(char));
-
- if ((xRxedChars == NULL) || (xCharsForTx == NULL)) {
- /* Not enough heap available to create the buffer queues, can't do
- anything so just delete ourselves. */
- vTaskDelete(NULL);
- }
-
-
- // initialise stack
- USBInit();
-
- // register descriptors
- USBRegisterDescriptors(abDescriptors);
-
- // register class request handler
- USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData);
-
- // register endpoint handlers
- USBHwRegisterEPIntHandler(INT_IN_EP, NULL);
- USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn);
- USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut);
-
- // register frame handler
- USBHwRegisterFrameHandler(USBFrameHandler);
-
- // enable bulk-in interrupts on NAKs
- USBHwNakIntEnable(INACK_BI);
-
- DBG("Starting USB communication\n");
-
- NVIC_SetPriority(USB_IRQn, configUSB_INTERRUPT_PRIORITY);
- NVIC_EnableIRQ(USB_IRQn);
-
- // connect to bus
-
- DBG("Connecting to USB bus\n");
- USBHwConnect(TRUE);
-
- xLastFlashTime = xTaskGetTickCount();
-
- // echo any character received (do USB stuff in interrupt)
- for (;;) {
- // c = VCOM_getchar();
- // if (c != EOF) {
- // // Echo character back with INCREMENT_ECHO_BY offset, so for example if
- // // INCREMENT_ECHO_BY is 1 and 'A' is received, 'B' will be echoed back.
- // VCOM_putchar(c + INCREMENT_ECHO_BY);
- // }
- vTaskDelayUntil(&xLastFlashTime, 1000 / portTICK_RATE_MS);
- }
-}
-
diff --git a/gyro_board/src/usb/Makefile b/gyro_board/src/usb/Makefile
index e2f81f4..a66848c 100644
--- a/gyro_board/src/usb/Makefile
+++ b/gyro_board/src/usb/Makefile
@@ -37,17 +37,17 @@
analog.c \
digital.c \
encoder.c \
+ gyro.c \
+ CAN.c \
FreeRTOS/portable/GCC/ARM_CM3/port.c \
FreeRTOS/tasks.c \
FreeRTOS/list.c \
FreeRTOS/queue.c \
- CAN.c \
LPCUSB/usbinit.c \
LPCUSB/usbcontrol.c \
- usb_device.c \
LPCUSB/usbhw_lpc.c \
- gyro.c \
- LPCUSB/usbstdreq.c
+ LPCUSB/usbstdreq.c \
+ usb_device.c \
DATA_STRUCT_CHECKSUM=$(shell ./data_struct_checksum.sh)