Add a list of module provided make variables and macros to the build system modules.
[pub/USBasp.git] / Demos / Device / ClassDriver / MassStorage / MassStorage.c
index a8f21f1..0ba06a5 100644 (file)
@@ -1,21 +1,21 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
-              
+     Copyright (C) Dean Camera, 2012.
+
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
-  Permission to use, copy, modify, distribute, and sell this 
+  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 
+  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 
+  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
@@ -45,19 +45,23 @@ USB_ClassInfo_MS_Device_t Disk_MS_Interface =
                .Config =
                        {
                                .InterfaceNumber           = 0,
-
-                               .DataINEndpointNumber      = MASS_STORAGE_IN_EPNUM,
-                               .DataINEndpointSize        = MASS_STORAGE_IO_EPSIZE,
-                               .DataINEndpointDoubleBank  = false,
-
-                               .DataOUTEndpointNumber     = MASS_STORAGE_OUT_EPNUM,
-                               .DataOUTEndpointSize       = MASS_STORAGE_IO_EPSIZE,
-                               .DataOUTEndpointDoubleBank = false,
-
+                               .DataINEndpoint            =
+                                       {
+                                               .Address           = MASS_STORAGE_IN_EPADDR,
+                                               .Size              = MASS_STORAGE_IO_EPSIZE,
+                                               .Banks             = 1,
+                                       },
+                               .DataOUTEndpoint           =
+                                       {
+                                               .Address           = MASS_STORAGE_OUT_EPADDR,
+                                               .Size              = MASS_STORAGE_IO_EPSIZE,
+                                               .Banks             = 1,
+                                       },
                                .TotalLUNs                 = TOTAL_LUNS,
                        },
        };
 
+
 /** Main program entry point. This routine contains the overall program flow, including initial
  *  setup of all components and the main program loop.
  */
@@ -91,6 +95,13 @@ void SetupHardware(void)
        Dataflash_Init();
        USB_Init();
 
+       /* Check if the Dataflash is working, abort if not */
+       if (!(DataflashManager_CheckDataflashOperation()))
+       {
+               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+               for(;;);
+       }
+
        /* Clear Dataflash sector protections, if enabled */
        DataflashManager_ResetDataflashProtections();
 }
@@ -114,13 +125,11 @@ void EVENT_USB_Device_ConfigurationChanged(void)
 
        ConfigSuccess &= MS_Device_ConfigureEndpoints(&Disk_MS_Interface);
 
-       USB_Device_EnableSOFEvents();
-
        LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
-/** Event handler for the library USB Unhandled Control Request event. */
-void EVENT_USB_Device_UnhandledControlRequest(void)
+/** Event handler for the library USB Control Request reception event. */
+void EVENT_USB_Device_ControlRequest(void)
 {
        MS_Device_ProcessControlRequest(&Disk_MS_Interface);
 }
@@ -132,10 +141,11 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)
 {
        bool CommandSuccess;
-       
+
        LEDs_SetAllLEDs(LEDMASK_USB_BUSY);
        CommandSuccess = SCSI_DecodeSCSICommand(MSInterfaceInfo);
        LEDs_SetAllLEDs(LEDMASK_USB_READY);
-       
+
        return CommandSuccess;
 }
+