Device mode class driver callbacks are now fired before the control request status...
[pub/USBasp.git] / Projects / AVRISP-MKII / AVRISP.c
index 1252880..cea1161 100644 (file)
@@ -1,13 +1,13 @@
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
+     Copyright (C) Dean Camera, 2010.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
   Permission to use, copy, modify, distribute, and sell this \r
   software and its documentation for any purpose is hereby granted\r
 int main(void)\r
 {\r
        SetupHardware();\r
-\r
-       V2Params_LoadNonVolatileParamValues();\r
        \r
        LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+       sei();\r
 \r
        for (;;)\r
        {\r
@@ -70,18 +69,7 @@ void SetupHardware(void)
        /* Hardware Initialization */\r
        LEDs_Init();\r
        USB_Init();\r
-\r
-       #if defined(ADC)\r
-       /* Initialize the ADC converter for VTARGET level detection on supported AVR models */\r
-       ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_128);\r
-       ADC_SetupChannel(VTARGET_ADC_CHANNEL);\r
-       ADC_StartReading(VTARGET_ADC_CHANNEL | ADC_RIGHT_ADJUSTED | ADC_REFERENCE_AVCC);\r
-       #endif\r
-       \r
-       /* Millisecond timer initialization for managing the command timeout counter */\r
-       OCR0A  = ((F_CPU / 64) / 1000);\r
-       TCCR0A = (1 << WGM01);\r
-       TCCR0B = ((1 << CS01) | (1 << CS00));\r
+       V2Protocol_Init();\r
 }\r
 \r
 /** Event handler for the library USB Connection event. */\r
@@ -103,12 +91,21 @@ void EVENT_USB_Device_ConfigurationChanged(void)
        LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
 \r
        /* Setup AVRISP data Endpoints */\r
-       if (!(Endpoint_ConfigureEndpoint(AVRISP_DATA_EPNUM, EP_TYPE_BULK,\r
+       if (!(Endpoint_ConfigureEndpoint(AVRISP_DATA_OUT_EPNUM, EP_TYPE_BULK,\r
                                             ENDPOINT_DIR_OUT, AVRISP_DATA_EPSIZE,\r
                                         ENDPOINT_BANK_SINGLE)))\r
        {\r
                LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
        }\r
+\r
+       #if defined(LIBUSB_FILTERDRV_COMPAT)\r
+       if (!(Endpoint_ConfigureEndpoint(AVRISP_DATA_IN_EPNUM, EP_TYPE_BULK,\r
+                                            ENDPOINT_DIR_IN, AVRISP_DATA_EPSIZE,\r
+                                        ENDPOINT_BANK_SINGLE)))\r
+       {\r
+               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+       }\r
+       #endif\r
 }\r
 \r
 /** Processes incoming V2 Protocol commands from the host, returning a response when required. */\r
@@ -118,7 +115,7 @@ void Process_AVRISP_Commands(void)
        if (USB_DeviceState != DEVICE_STATE_Configured)\r
          return;\r
 \r
-       Endpoint_SelectEndpoint(AVRISP_DATA_EPNUM);\r
+       Endpoint_SelectEndpoint(AVRISP_DATA_OUT_EPNUM);\r
        \r
        /* Check to see if a V2 Protocol command has been received */\r
        if (Endpoint_IsOUTReceived())\r