MakingThings
  • Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

USB-CDC.h

00001 /*
00002   FreeRTOS.org V4.1.0 - copyright (C) 2003-2006 Richard Barry.
00003 
00004   This file is part of the FreeRTOS.org distribution.
00005 
00006   FreeRTOS.org is free software; you can redistribute it and/or modify
00007   it under the terms of the GNU General Public License as published by
00008   the Free Software Foundation; either version 2 of the License, or
00009   (at your option) any later version.
00010 
00011   FreeRTOS.org is distributed in the hope that it will be useful,
00012   but WITHOUT ANY WARRANTY; without even the implied warranty of
00013   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014   GNU General Public License for more details.
00015 
00016   You should have received a copy of the GNU General Public License
00017   along with FreeRTOS.org; if not, write to the Free Software
00018   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020   A special exception to the GPL can be applied should you wish to distribute
00021   a combined work that includes FreeRTOS.org, without being obliged to provide
00022   the source code for any proprietary components.  See the licensing section
00023   of http://www.FreeRTOS.org for full details of how and when the exception
00024   can be applied.
00025 
00026   ***************************************************************************
00027   See http://www.FreeRTOS.org for documentation, latest information, license
00028   and contact details.  Please ensure to read the configuration and relevant
00029   port sections of the online documentation.
00030   ***************************************************************************
00031 */
00032 
00033 #ifndef USB_CDC_H
00034 #define USB_CDC_H
00035 
00036 #include "usb_internal.h"
00037 
00038 /* FreeRTOS */
00039 #include "FreeRTOS.h"
00040 
00041 #define USB_CDC_QUEUE_SIZE    8
00042 
00043 /* Structure used to take a snapshot of the USB status from within the ISR. */
00044 typedef struct X_ISR_STATUS
00045 {
00046   unsigned portLONG ulISR;
00047   unsigned portLONG ulCSR0;
00048   unsigned portCHAR ucFifoData[ 8 ];
00049 } xISRStatus;
00050 
00051 /* Structure used to hold the received requests. */
00052 typedef struct 
00053 {
00054   unsigned portCHAR ucReqType;
00055   unsigned portCHAR ucRequest;
00056   unsigned portSHORT usValue;
00057   unsigned portSHORT usIndex;
00058   unsigned portSHORT usLength;
00059 } xUSB_REQUEST;
00060 
00061 typedef enum
00062 {
00063   eNOTHING,
00064   eJUST_RESET,
00065   eJUST_GOT_CONFIG,
00066   eJUST_GOT_ADDRESS,
00067   eSENDING_EVEN_DESCRIPTOR,
00068   eREADY_TO_SEND
00069 } eDRIVER_STATE;
00070 
00071 /* Structure used to control the data being sent to the host. */
00072 typedef struct
00073 {
00074   unsigned portCHAR ucBuffer[ usbMAX_CONTROL_MESSAGE_SIZE ];
00075   unsigned portLONG ulNextCharIndex;
00076   unsigned portLONG ulTotalDataLength;
00077 } xCONTROL_MESSAGE;
00078 
00079 #define EP_FIFO 64
00080 typedef struct BulkBufferStruct
00081 {
00082   unsigned portCHAR Data[EP_FIFO];
00083   unsigned portCHAR Count;  // count of valid bytes (inIdx)
00084 } xBULKBUFFER;
00085 
00086 /*-----------------------------------------------------------*/
00087 void vUSBCDCTask( void *pvParameters );
00088 
00089 /* Send cByte down the USB port.  Characters are simply buffered and not
00090 sent unless the port is connected. */
00091 void vUSBSendByte( portCHAR cByte, int timeout );
00092 
00093 /* MakingThings: Get a byte from the USB 
00094   returns -1 if there is no character before the timeout */
00095 inline int cUSBGetByte( portTickType timeout );
00096 
00097 #endif
00098 
00099 

The Make Controller Kit is an open source project maintained by MakingThings.
MakingThings code is released under the Apache 2.0 license.
Bug tracker, development wiki and status can be found at http://dev.makingthings.com.
This document was last updated on 18 May 2009.