Minor updates to the Benito programmer - remove redundant PORT register manipulations.
[pub/USBasp.git] / Demos / Host / LowLevel / CDCHost / CDCHost.h
index afec780..9e1d638 100644 (file)
                #include <avr/power.h>\r
                #include <stdio.h>\r
 \r
-               #include <LUFA/Version.h>                                // Library Version Information\r
-               #include <LUFA/Drivers/Misc/TerminalCodes.h>             // ANSI Terminal Escape Codes\r
-               #include <LUFA/Drivers/USB/USB.h>                        // USB Functionality\r
-               #include <LUFA/Drivers/Peripheral/SerialStream.h>        // Serial stream driver\r
-               #include <LUFA/Drivers/Board/LEDs.h>                     // LEDs driver\r
-               #include <LUFA/Scheduler/Scheduler.h>                    // Simple scheduler for task management\r
+               #include <LUFA/Version.h>\r
+               #include <LUFA/Drivers/Misc/TerminalCodes.h>\r
+               #include <LUFA/Drivers/USB/USB.h>\r
+               #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
+               #include <LUFA/Drivers/Board/LEDs.h>\r
                \r
                #include "ConfigDescriptor.h"\r
                \r
                /** Pipe number for the CDC notification pipe */\r
                #define CDC_NOTIFICATIONPIPE           3\r
 \r
-       /* Enums: */\r
-               /** Enum for the possible status codes for passing to the UpdateStatus() function. */\r
-               enum CDCHost_StatusCodes_t\r
+               /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */\r
+               #define LEDMASK_USB_NOTREADY      LEDS_LED1\r
+\r
+               /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */\r
+               #define LEDMASK_USB_ENUMERATING  (LEDS_LED2 | LEDS_LED3)\r
+\r
+               /** LED mask for the library LED driver, to indicate that the USB interface is ready. */\r
+               #define LEDMASK_USB_READY        (LEDS_LED2 | LEDS_LED4)\r
+\r
+               /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */\r
+               #define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)\r
+               \r
+       /* Type Defines: */\r
+               /** Class state structure. An instance of this structure should be made for each CDC interface\r
+                *  within the user application, and passed to each of the CDC class driver functions as the\r
+                *  CDCInterfaceInfo parameter. The contents of this structure should be set to their correct\r
+                *  values when used, or ommitted to force the library to use default values.\r
+                */\r
+               typedef struct\r
                {\r
-                       Status_USBNotReady      = 0, /**< USB is not ready (disconnected from a USB device) */\r
-                       Status_USBEnumerating   = 1, /**< USB interface is enumerating */\r
-                       Status_USBReady         = 2, /**< USB interface is connected and ready */\r
-                       Status_EnumerationError = 3, /**< Software error while enumerating the attached USB device */\r
-                       Status_HardwareError    = 4, /**< Hardware error while enumerating the attached USB device */\r
-               };\r
+                       const struct\r
+                       {\r
+                               uint8_t  ControlInterfaceNumber; /**< Interface number of the CDC control interface within the device */\r
 \r
-       /* Task Definitions: */\r
-               TASK(USB_CDC_Host);\r
+                               uint8_t  DataINEndpointNumber; /**< Endpoint number of the CDC interface's IN data endpoint */\r
+                               uint16_t DataINEndpointSize; /**< Size in bytes of the CDC interface's IN data endpoint */\r
 \r
+                               uint8_t  DataOUTEndpointNumber; /**< Endpoint number of the CDC interface's OUT data endpoint */\r
+                               uint16_t DataOUTEndpointSize;  /**< Size in bytes of the CDC interface's OUT data endpoint */\r
+\r
+                               uint8_t  NotificationEndpointNumber; /**< Endpoint number of the CDC interface's IN notification endpoint, if used */\r
+                               uint16_t NotificationEndpointSize;  /**< Size in bytes of the CDC interface's IN notification endpoint, if used */\r
+                       } Config;\r
+                       \r
+                       struct\r
+                       {\r
+                               uint8_t  ControlLineState; /**< Current control line states, as set by the host */\r
+\r
+                               struct\r
+                               {\r
+                                       uint32_t BaudRateBPS; /**< Baud rate of the virtual serial port, in bits per second */\r
+                                       uint8_t  CharFormat; /**< Character format of the virtual serial port, a value from the\r
+                                                                                 *   CDCDevice_CDC_LineCodingFormats_t enum\r
+                                                                                 */\r
+                                       uint8_t  ParityType; /**< Parity setting of the virtual serial port, a value from the\r
+                                                                                 *   CDCDevice_LineCodingParity_t enum\r
+                                                                                 */\r
+                                       uint8_t  DataBits; /**< Bits of data per character of the virtual serial port */\r
+                               } LineEncoding;\r
+                       } State;\r
+               } USB_ClassInfo_CDC_Host_t;\r
+               \r
        /* Function Prototypes: */\r
+               void SetupHardware(void);\r
+               void CDC_Host_Task(void);\r
+       \r
                void EVENT_USB_HostError(const uint8_t ErrorCode);\r
                void EVENT_USB_DeviceAttached(void);\r
                void EVENT_USB_DeviceUnattached(void);\r
                void EVENT_USB_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode);\r
                void EVENT_USB_DeviceEnumerationComplete(void);\r
-\r
-               void UpdateStatus(uint8_t CurrentStatus);\r
                \r
 #endif\r