Conversion of old incomplete SideShow demo to new APIs.
authorDean Camera <dean@fourwalledcubicle.com>
Fri, 5 Jun 2009 07:52:53 +0000 (07:52 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Fri, 5 Jun 2009 07:52:53 +0000 (07:52 +0000)
Demos/Device/Incomplete/Sideshow/Descriptors.c
Demos/Device/Incomplete/Sideshow/Descriptors.h
Demos/Device/Incomplete/Sideshow/Sideshow.c
Demos/Device/Incomplete/Sideshow/Sideshow.h
Demos/Device/Incomplete/Sideshow/SideshowCommands.c
Demos/Device/Incomplete/Sideshow/makefile
LUFA/ChangeLog.txt

index 5691d45..3aaaa80 100644 (file)
@@ -154,7 +154,7 @@ USB_OSCompatibleIDDescriptor_t PROGMEM DevCompatIDs =
                                 SubCompatibleID: "UNIV1"}\r
 };\r
 \r
                                 SubCompatibleID: "UNIV1"}\r
 };\r
 \r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
 {\r
        const uint8_t  DescriptorType   = (wValue >> 8);\r
        const uint8_t  DescriptorNumber = (wValue & 0xFF);\r
 {\r
        const uint8_t  DescriptorType   = (wValue >> 8);\r
        const uint8_t  DescriptorNumber = (wValue & 0xFF);\r
@@ -165,30 +165,30 @@ uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** c
        switch (DescriptorType)\r
        {\r
                case DTYPE_Device:\r
        switch (DescriptorType)\r
        {\r
                case DTYPE_Device:\r
-                       Address = DESCRIPTOR_ADDRESS(DeviceDescriptor);\r
+                       Address = (void*)&DeviceDescriptor;\r
                        Size    = sizeof(USB_Descriptor_Device_t);\r
                        break;\r
                case DTYPE_Configuration:\r
                        Size    = sizeof(USB_Descriptor_Device_t);\r
                        break;\r
                case DTYPE_Configuration:\r
-                       Address = DESCRIPTOR_ADDRESS(ConfigurationDescriptor);\r
+                       Address = (void*)&ConfigurationDescriptor;\r
                        Size    = sizeof(USB_Descriptor_Configuration_t);\r
                        break;\r
                case DTYPE_String:\r
                        switch (DescriptorNumber)\r
                        {\r
                                case 0x00:\r
                        Size    = sizeof(USB_Descriptor_Configuration_t);\r
                        break;\r
                case DTYPE_String:\r
                        switch (DescriptorNumber)\r
                        {\r
                                case 0x00:\r
-                                       Address = DESCRIPTOR_ADDRESS(LanguageString);\r
+                                       Address = (void*)&LanguageString;\r
                                        Size    = pgm_read_byte(&LanguageString.Header.Size);\r
                                        break;\r
                                case 0x01:\r
                                        Size    = pgm_read_byte(&LanguageString.Header.Size);\r
                                        break;\r
                                case 0x01:\r
-                                       Address = DESCRIPTOR_ADDRESS(ManufacturerString);\r
+                                       Address = (void*)&ManufacturerString;\r
                                        Size    = pgm_read_byte(&ManufacturerString.Header.Size);\r
                                        break;\r
                                case 0x02:\r
                                        Size    = pgm_read_byte(&ManufacturerString.Header.Size);\r
                                        break;\r
                                case 0x02:\r
-                                       Address = DESCRIPTOR_ADDRESS(ProductString);\r
+                                       Address = (void*)&ProductString;\r
                                        Size    = pgm_read_byte(&ProductString.Header.Size);\r
                                        break;\r
                                case 0x03:\r
                                        Size    = pgm_read_byte(&ProductString.Header.Size);\r
                                        break;\r
                                case 0x03:\r
-                                       Address = DESCRIPTOR_ADDRESS(SerialNumberString);\r
+                                       Address = (void*)&SerialNumberString;\r
                                        Size    = pgm_read_byte(&SerialNumberString.Header.Size);\r
                                        break;\r
                                case 0xEE:\r
                                        Size    = pgm_read_byte(&SerialNumberString.Header.Size);\r
                                        break;\r
                                case 0xEE:\r
@@ -197,7 +197,7 @@ uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** c
                                           our device is Sideshow compatible. Most people would be happy using the normal\r
                                           0xFF 0x?? 0x?? Class/Subclass/Protocol values like the USBIF intended. */\r
                                           \r
                                           our device is Sideshow compatible. Most people would be happy using the normal\r
                                           0xFF 0x?? 0x?? Class/Subclass/Protocol values like the USBIF intended. */\r
                                           \r
-                                       Address = DESCRIPTOR_ADDRESS(OSDescriptorString);\r
+                                       Address = (void*)&OSDescriptorString;\r
                                        Size    = pgm_read_byte(&OSDescriptorString.Header.Size);\r
                                        break;\r
                        }\r
                                        Size    = pgm_read_byte(&OSDescriptorString.Header.Size);\r
                                        break;\r
                        }\r
@@ -221,7 +221,7 @@ bool USB_GetOSFeatureDescriptor(const uint16_t wValue, const uint8_t wIndex,
                /* Only the Extended Device Compatibility descriptor is supported */\r
                if (wIndex == EXTENDED_COMPAT_ID_DESCRIPTOR)\r
                {\r
                /* Only the Extended Device Compatibility descriptor is supported */\r
                if (wIndex == EXTENDED_COMPAT_ID_DESCRIPTOR)\r
                {\r
-                       Address = DESCRIPTOR_ADDRESS(DevCompatIDs);\r
+                       Address = (void*)&DevCompatIDs;\r
                        Size    = sizeof(USB_OSCompatibleIDDescriptor_t);\r
                }\r
        }\r
                        Size    = sizeof(USB_OSCompatibleIDDescriptor_t);\r
                }\r
        }\r
index f12ef81..aeb1689 100644 (file)
@@ -85,8 +85,8 @@
                } USB_OSCompatibleIDDescriptor_t;\r
 \r
        /* Function Prototypes: */\r
                } USB_OSCompatibleIDDescriptor_t;\r
 \r
        /* Function Prototypes: */\r
-               uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
-                                                                  ATTR_WARN_UNUSED_RESULT ATTR_WEAK ATTR_NON_NULL_PTR_ARG(3);\r
+               uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+                                                                           ATTR_WARN_UNUSED_RESULT ATTR_WEAK ATTR_NON_NULL_PTR_ARG(3);\r
 \r
                bool USB_GetOSFeatureDescriptor(const uint16_t wValue, const uint8_t wIndex,\r
                                                void** const DescriptorAddress, uint16_t* const DescriptorSize)\r
 \r
                bool USB_GetOSFeatureDescriptor(const uint16_t wValue, const uint8_t wIndex,\r
                                                void** const DescriptorAddress, uint16_t* const DescriptorSize)\r
index c963359..8454f9d 100644 (file)
        constraints, new content can be requested as needed.\r
 */\r
 \r
        constraints, new content can be requested as needed.\r
 */\r
 \r
-/*\r
-       USB Mode:           Device\r
-       USB Class:          Sideshow Device (Microsoft Only)\r
-       USB Subclass:       Bulk Only\r
-       Relevant Standards: Microsoft Sideshow Specification\r
-                           Microsoft OS Descriptors Specification\r
-                           XML Specification\r
-       Usable Speeds:      Full Speed Mode\r
-*/\r
-\r
 #include "Sideshow.h"\r
 \r
 #include "Sideshow.h"\r
 \r
-/* Project Tags, for reading out using the ButtLoad project */\r
-BUTTLOADTAG(ProjName,     "LUFA Sideshow App");\r
-BUTTLOADTAG(BuildTime,    __TIME__);\r
-BUTTLOADTAG(BuildDate,    __DATE__);\r
-BUTTLOADTAG(LUFAVersion, "LUFA V" LUFA_VERSION_STRING);\r
-\r
-/* Scheduler Task List */\r
-TASK_LIST\r
+/** Main program entry point. This routine contains the overall program flow, including initial\r
+ *  setup of all components and the main program loop.\r
+ */\r
+int main(void)\r
 {\r
 {\r
-       { Task: USB_USBTask          , TaskStatus: TASK_STOP },\r
-       { Task: USB_Sideshow         , TaskStatus: TASK_STOP },\r
-};\r
+       SetupHardware();\r
 \r
 \r
-int main(void)\r
+       LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+       \r
+       for (;;)\r
+       {\r
+               SideShow_Task();\r
+               USB_USBTask();\r
+       }\r
+}\r
+\r
+/** Configures the board hardware and chip peripherals for the demo's functionality. */\r
+void SetupHardware(void)\r
 {\r
        /* Disable watchdog if enabled by bootloader/fuses */\r
        MCUSR &= ~(1 << WDRF);\r
        wdt_disable();\r
 \r
 {\r
        /* Disable watchdog if enabled by bootloader/fuses */\r
        MCUSR &= ~(1 << WDRF);\r
        wdt_disable();\r
 \r
-       /* Disable Clock Division */\r
-       SetSystemClockPrescaler(0);\r
-\r
+       /* Disable clock division */\r
+       clock_prescale_set(clock_div_1);\r
+       \r
        /* Hardware Initialization */\r
        /* Hardware Initialization */\r
-       SerialStream_Init(9600, false);\r
        LEDs_Init();\r
        LEDs_Init();\r
-       HWB_Init();\r
-       \r
-       /* Indicate USB not ready */\r
-       LEDs_SetAllLEDs(LEDS_LED1 | LEDS_LED3);\r
-       \r
-       /* Initialize Scheduler so that it can be used */\r
-       Scheduler_Init();\r
-\r
-       /* Initialize USB Subsystem */\r
        USB_Init();\r
        USB_Init();\r
-\r
-       /* Scheduling - routine never returns, so put this last in the main function */\r
-       Scheduler_Start();\r
+       SerialStream_Init(9600, false);\r
 }\r
 \r
 }\r
 \r
-EVENT_HANDLER(USB_Connect)\r
+void EVENT_USB_Connect(void)\r
 {\r
 {\r
-       /* Start USB management task */\r
-       Scheduler_SetTaskMode(USB_USBTask, TASK_RUN);\r
-\r
-       /* Indicate USB enumerating */\r
-       LEDs_SetAllLEDs(LEDS_LED1 | LEDS_LED4);\r
+       LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
 }\r
 \r
 }\r
 \r
-EVENT_HANDLER(USB_Disconnect)\r
+void EVENT_USB_Disconnect(void)\r
 {\r
 {\r
-       /* Stop running mass storage and USB management tasks */\r
-       Scheduler_SetTaskMode(USB_Sideshow, TASK_STOP);\r
-       Scheduler_SetTaskMode(USB_USBTask, TASK_STOP);\r
-\r
-       /* Indicate USB not ready */\r
-       LEDs_SetAllLEDs(LEDS_LED1 | LEDS_LED3);\r
+       LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
 }\r
 \r
 }\r
 \r
-EVENT_HANDLER(USB_ConfigurationChanged)\r
+void EVENT_USB_ConfigurationChanged(void)\r
 {\r
 {\r
-       /* Setup Sideshow In and Out Endpoints */\r
-       Endpoint_ConfigureEndpoint(SIDESHOW_IN_EPNUM, EP_TYPE_BULK,\r
-                                      ENDPOINT_DIR_IN, SIDESHOW_IO_EPSIZE,\r
-                                  ENDPOINT_BANK_SINGLE);\r
+       LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
 \r
 \r
-       Endpoint_ConfigureEndpoint(SIDESHOW_OUT_EPNUM, EP_TYPE_BULK,\r
-                                      ENDPOINT_DIR_OUT, SIDESHOW_IO_EPSIZE,\r
-                                  ENDPOINT_BANK_SINGLE);\r
+       /* Setup Sideshow In and Out Endpoints */\r
+       if (!(Endpoint_ConfigureEndpoint(SIDESHOW_IN_EPNUM, EP_TYPE_BULK,\r
+                                            ENDPOINT_DIR_IN, SIDESHOW_IO_EPSIZE,\r
+                                        ENDPOINT_BANK_SINGLE)))\r
+       {\r
+               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+       }\r
 \r
 \r
-       /* Indicate USB connected and ready */\r
-       LEDs_SetAllLEDs(LEDS_LED2 | LEDS_LED4);\r
-       \r
-       /* Start Sideshow task */\r
-       Scheduler_SetTaskMode(USB_Sideshow, TASK_RUN);\r
+       if (!(Endpoint_ConfigureEndpoint(SIDESHOW_OUT_EPNUM, EP_TYPE_BULK,\r
+                                            ENDPOINT_DIR_OUT, SIDESHOW_IO_EPSIZE,\r
+                                        ENDPOINT_BANK_SINGLE)))\r
+       {\r
+               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+       }\r
 }\r
 \r
 }\r
 \r
-EVENT_HANDLER(USB_UnhandledControlPacket)\r
+void EVENT_USB_UnhandledControlPacket(void)\r
 {\r
        /* Process UFI specific control requests */\r
 {\r
        /* Process UFI specific control requests */\r
-       switch (bRequest)\r
+       switch (USB_ControlRequest.bRequest)\r
        {\r
                case REQ_GetOSFeatureDescriptor:\r
        {\r
                case REQ_GetOSFeatureDescriptor:\r
-                       if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_VENDOR | REQREC_DEVICE))\r
+                       if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_VENDOR | REQREC_DEVICE))\r
                        {\r
                        {\r
-                               uint16_t wValue  = Endpoint_Read_Word_LE();\r
-                               uint16_t wIndex  = Endpoint_Read_Word_LE();\r
-                               uint16_t wLength = Endpoint_Read_Word_LE();\r
-\r
                                void*    DescriptorPointer;\r
                                uint16_t DescriptorSize;\r
 \r
                                void*    DescriptorPointer;\r
                                uint16_t DescriptorSize;\r
 \r
-                               bool     SendZLP = true;\r
-                               \r
-                               if (!(USB_GetOSFeatureDescriptor(wValue, wIndex, &DescriptorPointer, &DescriptorSize)))\r
-                                 return;\r
-\r
-                               Endpoint_ClearSetupReceived();\r
-                               \r
-                               if (wLength > DescriptorSize)\r
-                                 wLength = DescriptorSize;\r
-                               \r
-                               while (wLength && (!(Endpoint_IsSetupOUTReceived())))\r
-                               {\r
-                                       while (!(Endpoint_IsSetupINReady()));\r
-                                       \r
-                                       while (wLength && (Endpoint_BytesInEndpoint() < USB_ControlEndpointSize))\r
-                                       {\r
-                                               #if defined(USE_RAM_DESCRIPTORS)\r
-                                               Endpoint_Write_Byte(*((uint8_t*)DescriptorPointer++));\r
-                                               #elif defined (USE_EEPROM_DESCRIPTORS)\r
-                                               Endpoint_Write_Byte(eeprom_read_byte(DescriptorPointer++));                     \r
-                                               #else\r
-                                               Endpoint_Write_Byte(pgm_read_byte(DescriptorPointer++));\r
-                                               #endif\r
-                                               \r
-                                               wLength--;\r
-                                       }\r
-                                       \r
-                                       SendZLP = (Endpoint_BytesInEndpoint() == USB_ControlEndpointSize);\r
-                                       Endpoint_ClearSetupIN();\r
-                               }\r
-                               \r
-                               if (Endpoint_IsSetupOUTReceived())\r
+                               if (!(USB_GetOSFeatureDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex,\r
+                                                                &DescriptorPointer, &DescriptorSize)))\r
                                {\r
                                {\r
-                                       Endpoint_ClearSetupOUT();\r
                                        return;\r
                                }\r
                                \r
                                        return;\r
                                }\r
                                \r
-                               if (SendZLP)\r
-                               {\r
-                                       while (!(Endpoint_IsSetupINReady()));\r
-                                       Endpoint_ClearSetupIN();\r
-                               }\r
-\r
-                               while (!(Endpoint_IsSetupOUTReceived()));\r
-                               Endpoint_ClearSetupOUT();                               \r
+                               Endpoint_ClearSETUP();\r
+                               \r
+                               Endpoint_Write_Control_Stream_LE(DescriptorPointer, DescriptorSize);\r
+                               Endpoint_ClearOUT();                            \r
                        }\r
 \r
                        break;\r
        }\r
 }\r
        \r
                        }\r
 \r
                        break;\r
        }\r
 }\r
        \r
-TASK(USB_Sideshow)\r
+void SideShow_Task(void)\r
 {\r
        /* Check if the USB System is connected to a Host */\r
        if (USB_IsConnected)\r
 {\r
        /* Check if the USB System is connected to a Host */\r
        if (USB_IsConnected)\r
@@ -212,7 +148,7 @@ TASK(USB_Sideshow)
                Endpoint_SelectEndpoint(SIDESHOW_OUT_EPNUM);\r
                \r
                /* Check to see if a new SideShow message has been received */\r
                Endpoint_SelectEndpoint(SIDESHOW_OUT_EPNUM);\r
                \r
                /* Check to see if a new SideShow message has been received */\r
-               if (Endpoint_ReadWriteAllowed())\r
+               if (Endpoint_IsReadWriteAllowed())\r
                {\r
                        /* Process the received SideShow message */\r
                        Sideshow_ProcessCommandPacket();\r
                {\r
                        /* Process the received SideShow message */\r
                        Sideshow_ProcessCommandPacket();\r
index 7b88182..4cdcb37 100644 (file)
        /* Includes: */\r
                #include <avr/io.h>\r
                #include <avr/wdt.h>\r
        /* Includes: */\r
                #include <avr/io.h>\r
                #include <avr/wdt.h>\r
+               #include <avr/power.h>\r
 \r
                #include "Descriptors.h"\r
                #include "SideshowCommands.h"\r
 \r
 \r
                #include "Descriptors.h"\r
                #include "SideshowCommands.h"\r
 \r
-               #include <LUFA/Version.h>                    // Library Version Information\r
-               #include <LUFA/Common/ButtLoadTag.h>         // PROGMEM tags readable by the ButtLoad project\r
-               #include <LUFA/Drivers/USB/USB.h>            // USB Functionality\r
-               #include <LUFA/Drivers/Board/HWB.h>          // HWB button driver\r
-               #include <LUFA/Drivers/Board/LEDs.h>         // LEDs driver\r
-               #include <LUFA/Drivers/Board/Dataflash.h>    // Dataflash chip driver\r
-               #include <LUFA/Scheduler/Scheduler.h>        // Simple scheduler for task management\r
-               #include <LUFA/Drivers/AT90USBXXX/Serial_Stream.h> // Serial stream driver\r
+               #include <LUFA/Version.h>
+               #include <LUFA/Drivers/USB/USB.h>\r
+               #include <LUFA/Drivers/Board/LEDs.h>\r
+               #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
 \r
        /* Macros: */\r
                #define REQ_GetOSFeatureDescriptor        0x01\r
                \r
                #define EXTENDED_COMPAT_ID_DESCRIPTOR     0x0004\r
 \r
 \r
        /* Macros: */\r
                #define REQ_GetOSFeatureDescriptor        0x01\r
                \r
                #define EXTENDED_COMPAT_ID_DESCRIPTOR     0x0004\r
 \r
-       /* Task Definitions: */\r
-               TASK(USB_Sideshow);\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
                \r
-       /* Event Handlers: */\r
-               HANDLES_EVENT(USB_Connect);\r
-               HANDLES_EVENT(USB_Disconnect);\r
-               HANDLES_EVENT(USB_ConfigurationChanged);\r
-               HANDLES_EVENT(USB_UnhandledControlPacket);\r
+       /* Function Prototypes: */\r
+               void SetupHardware(void);\r
+               void SideShow_Task(void);\r
+\r
+               void EVENT_USB_Connect(void);\r
+               void EVENT_USB_Disconnect(void);\r
+               void EVENT_USB_ConfigurationChanged(void);\r
+               void EVENT_USB_UnhandledControlPacket(void);\r
 \r
 #endif\r
 \r
 #endif\r
index 2dd49b4..2726d50 100644 (file)
@@ -105,14 +105,14 @@ void Sideshow_ProcessCommandPacket(void)
                        PacketHeader.Length -= sizeof(SideShow_PacketHeader_t);\r
 \r
                        Endpoint_Discard_Stream(PacketHeader.Length);\r
                        PacketHeader.Length -= sizeof(SideShow_PacketHeader_t);\r
 \r
                        Endpoint_Discard_Stream(PacketHeader.Length);\r
-                       Endpoint_ClearCurrentBank();\r
+                       Endpoint_ClearOUT();\r
 \r
                        PacketHeader.Length   = sizeof(SideShow_PacketHeader_t);\r
                        PacketHeader.Type.NAK = true;\r
                        \r
                        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);     \r
                        Endpoint_Write_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t));               \r
 \r
                        PacketHeader.Length   = sizeof(SideShow_PacketHeader_t);\r
                        PacketHeader.Type.NAK = true;\r
                        \r
                        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);     \r
                        Endpoint_Write_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t));               \r
-                       Endpoint_ClearCurrentBank();\r
+                       Endpoint_ClearIN();\r
                        \r
                        printf(" UNK");\r
        }\r
                        \r
                        printf(" UNK");\r
        }\r
@@ -120,11 +120,11 @@ void Sideshow_ProcessCommandPacket(void)
 \r
 static void SideShow_Ping(SideShow_PacketHeader_t* PacketHeader)\r
 {\r
 \r
 static void SideShow_Ping(SideShow_PacketHeader_t* PacketHeader)\r
 {\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);     \r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));                \r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);     \r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));                \r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_Sync(SideShow_PacketHeader_t* PacketHeader)\r
 }\r
 \r
 static void SideShow_Sync(SideShow_PacketHeader_t* PacketHeader)\r
@@ -132,7 +132,7 @@ static void SideShow_Sync(SideShow_PacketHeader_t* PacketHeader)
        GUID_t ProtocolGUID;\r
 \r
        Endpoint_Read_Stream_LE(&ProtocolGUID, sizeof(GUID_t));\r
        GUID_t ProtocolGUID;\r
 \r
        Endpoint_Read_Stream_LE(&ProtocolGUID, sizeof(GUID_t));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
        \r
        if (memcmp(&ProtocolGUID, (uint32_t[])STANDARD_PROTOCOL_GUID, sizeof(GUID_t)) != 0)\r
          PacketHeader->Type.NAK = true;\r
        \r
        if (memcmp(&ProtocolGUID, (uint32_t[])STANDARD_PROTOCOL_GUID, sizeof(GUID_t)) != 0)\r
          PacketHeader->Type.NAK = true;\r
@@ -140,31 +140,31 @@ static void SideShow_Sync(SideShow_PacketHeader_t* PacketHeader)
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));                \r
        Endpoint_Write_Stream_LE(&ProtocolGUID, sizeof(GUID_t));\r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));                \r
        Endpoint_Write_Stream_LE(&ProtocolGUID, sizeof(GUID_t));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_GetCurrentUser(SideShow_PacketHeader_t* PacketHeader)\r
 {\r
 }\r
 \r
 static void SideShow_GetCurrentUser(SideShow_PacketHeader_t* PacketHeader)\r
 {\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
 \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) + sizeof(uint32_t) + UserSID.LengthInBytes;\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
        SideShow_Write_Unicode_String(&UserSID);\r
 \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) + sizeof(uint32_t) + UserSID.LengthInBytes;\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
        SideShow_Write_Unicode_String(&UserSID);\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_SetCurrentUser(SideShow_PacketHeader_t* PacketHeader)\r
 {\r
        SideShow_Read_Unicode_String(&UserSID, sizeof(UserSID.UnicodeString));\r
 }\r
 \r
 static void SideShow_SetCurrentUser(SideShow_PacketHeader_t* PacketHeader)\r
 {\r
        SideShow_Read_Unicode_String(&UserSID, sizeof(UserSID.UnicodeString));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
        \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
        \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_GetCapabilities(SideShow_PacketHeader_t* PacketHeader)\r
 }\r
 \r
 static void SideShow_GetCapabilities(SideShow_PacketHeader_t* PacketHeader)\r
@@ -173,7 +173,7 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* PacketHeader)
        SideShow_PropertyData_t PropertyData;\r
 \r
        Endpoint_Read_Stream_LE(&Property, sizeof(SideShow_PropertyKey_t));\r
        SideShow_PropertyData_t PropertyData;\r
 \r
        Endpoint_Read_Stream_LE(&Property, sizeof(SideShow_PropertyKey_t));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
        \r
        printf(" ID: %lu", Property.PropertyID);\r
 \r
        \r
        printf(" ID: %lu", Property.PropertyID);\r
 \r
@@ -276,13 +276,13 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* PacketHeader)
                }\r
        }\r
        \r
                }\r
        }\r
        \r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearIN();\r
        return;\r
 }\r
 \r
 static void SideShow_GetString(SideShow_PacketHeader_t* PacketHeader, void* UnicodeStruct)\r
 {\r
        return;\r
 }\r
 \r
 static void SideShow_GetString(SideShow_PacketHeader_t* PacketHeader, void* UnicodeStruct)\r
 {\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
 \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +\r
                               sizeof(uint32_t) + ((Unicode_String_t*)UnicodeStruct)->LengthInBytes;\r
 \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +\r
                               sizeof(uint32_t) + ((Unicode_String_t*)UnicodeStruct)->LengthInBytes;\r
@@ -290,7 +290,7 @@ static void SideShow_GetString(SideShow_PacketHeader_t* PacketHeader, void* Unic
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
        SideShow_Write_Unicode_String(UnicodeStruct);\r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
        SideShow_Write_Unicode_String(UnicodeStruct);\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* PacketHeader)\r
 }\r
 \r
 static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* PacketHeader)\r
@@ -298,7 +298,7 @@ static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* PacketHeader)
        uint8_t TotalInstalledApplications = SideShow_GetTotalApplications();\r
        uint16_t GadgetGUIDBytes           = (TotalInstalledApplications * sizeof(GUID_t));\r
 \r
        uint8_t TotalInstalledApplications = SideShow_GetTotalApplications();\r
        uint16_t GadgetGUIDBytes           = (TotalInstalledApplications * sizeof(GUID_t));\r
 \r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
 \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +\r
                               sizeof(uint32_t) + GadgetGUIDBytes;\r
 \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +\r
                               sizeof(uint32_t) + GadgetGUIDBytes;\r
@@ -313,14 +313,14 @@ static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* PacketHeader)
                  Endpoint_Write_Stream_LE(&InstalledApplications[App].ApplicationID, sizeof(GUID_t));\r
        }\r
 \r
                  Endpoint_Write_Stream_LE(&InstalledApplications[App].ApplicationID, sizeof(GUID_t));\r
        }\r
 \r
-       Endpoint_ClearCurrentBank();    \r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* PacketHeader)\r
 {\r
        GUID_t SupportedEndpointGUID = (GUID_t){Chunks: SIMPLE_CONTENT_FORMAT_GUID};\r
 \r
 }\r
 \r
 static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* PacketHeader)\r
 {\r
        GUID_t SupportedEndpointGUID = (GUID_t){Chunks: SIMPLE_CONTENT_FORMAT_GUID};\r
 \r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
 \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) + sizeof(uint32_t) + sizeof(GUID_t);\r
        \r
 \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) + sizeof(uint32_t) + sizeof(GUID_t);\r
        \r
@@ -328,7 +328,7 @@ static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* PacketHeader
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
        Endpoint_Write_DWord_LE(1);\r
        Endpoint_Write_Stream_LE(&SupportedEndpointGUID, sizeof(GUID_t));\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
        Endpoint_Write_DWord_LE(1);\r
        Endpoint_Write_Stream_LE(&SupportedEndpointGUID, sizeof(GUID_t));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_AddApplication(SideShow_PacketHeader_t* PacketHeader)\r
 }\r
 \r
 static void SideShow_AddApplication(SideShow_PacketHeader_t* PacketHeader)\r
@@ -348,7 +348,7 @@ static void SideShow_AddApplication(SideShow_PacketHeader_t* PacketHeader)
                PacketHeader->Length -= sizeof(SideShow_PacketHeader_t) + sizeof(GUID_t);\r
 \r
                Endpoint_Discard_Stream(PacketHeader->Length);\r
                PacketHeader->Length -= sizeof(SideShow_PacketHeader_t) + sizeof(GUID_t);\r
 \r
                Endpoint_Discard_Stream(PacketHeader->Length);\r
-               Endpoint_ClearCurrentBank();\r
+               Endpoint_ClearOUT();\r
 \r
                PacketHeader->Type.NAK = true;\r
        }\r
 \r
                PacketHeader->Type.NAK = true;\r
        }\r
@@ -362,7 +362,7 @@ static void SideShow_AddApplication(SideShow_PacketHeader_t* PacketHeader)
                SideShow_Discard_Byte_Stream();\r
                SideShow_Discard_Byte_Stream();\r
                SideShow_Discard_Byte_Stream();\r
                SideShow_Discard_Byte_Stream();\r
                SideShow_Discard_Byte_Stream();\r
                SideShow_Discard_Byte_Stream();\r
-               Endpoint_ClearCurrentBank();\r
+               Endpoint_ClearOUT();\r
                \r
                CurrApp->InUse = true;\r
                CurrApp->HaveContent = false;\r
                \r
                CurrApp->InUse = true;\r
                CurrApp->HaveContent = false;\r
@@ -373,7 +373,7 @@ static void SideShow_AddApplication(SideShow_PacketHeader_t* PacketHeader)
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_DeleteApplication(SideShow_PacketHeader_t* PacketHeader)\r
 }\r
 \r
 static void SideShow_DeleteApplication(SideShow_PacketHeader_t* PacketHeader)\r
@@ -381,7 +381,7 @@ static void SideShow_DeleteApplication(SideShow_PacketHeader_t* PacketHeader)
        GUID_t ApplicationGUID;\r
        \r
        Endpoint_Read_Stream_LE(&ApplicationGUID, sizeof(GUID_t));      \r
        GUID_t ApplicationGUID;\r
        \r
        Endpoint_Read_Stream_LE(&ApplicationGUID, sizeof(GUID_t));      \r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
 \r
        SideShow_Application_t* AppToDelete = SideShow_GetApplicationFromGUID(&ApplicationGUID);\r
 \r
 \r
        SideShow_Application_t* AppToDelete = SideShow_GetApplicationFromGUID(&ApplicationGUID);\r
 \r
@@ -396,19 +396,19 @@ static void SideShow_DeleteApplication(SideShow_PacketHeader_t* PacketHeader)
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_DeleteAllApplications(SideShow_PacketHeader_t* PacketHeader)\r
 {\r
 }\r
 \r
 static void SideShow_DeleteAllApplications(SideShow_PacketHeader_t* PacketHeader)\r
 {\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
        \r
        for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)\r
          InstalledApplications[App].InUse = false;\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
        \r
        for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)\r
          InstalledApplications[App].InUse = false;\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_AddContent(SideShow_PacketHeader_t* PacketHeader)\r
 }\r
 \r
 static void SideShow_AddContent(SideShow_PacketHeader_t* PacketHeader)\r
@@ -432,13 +432,13 @@ static void SideShow_AddContent(SideShow_PacketHeader_t* PacketHeader)
                PacketHeader->Type.NAK = true;\r
        }\r
        \r
                PacketHeader->Type.NAK = true;\r
        }\r
        \r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
 \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
 \r
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_DeleteContent(SideShow_PacketHeader_t* PacketHeader)\r
 }\r
 \r
 static void SideShow_DeleteContent(SideShow_PacketHeader_t* PacketHeader)\r
@@ -450,7 +450,7 @@ static void SideShow_DeleteContent(SideShow_PacketHeader_t* PacketHeader)
        Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
        Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));\r
        Endpoint_Read_Stream_LE(&ContentID, sizeof(uint32_t));\r
        Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
        Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));\r
        Endpoint_Read_Stream_LE(&ContentID, sizeof(uint32_t));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
        \r
        SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);\r
        \r
        \r
        SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);\r
        \r
@@ -463,7 +463,7 @@ static void SideShow_DeleteContent(SideShow_PacketHeader_t* PacketHeader)
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
-       Endpoint_ClearCurrentBank();      \r
+       Endpoint_ClearIN();\r
 }\r
 \r
 static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* PacketHeader)\r
 }\r
 \r
 static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* PacketHeader)\r
@@ -473,7 +473,7 @@ static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* PacketHeader)
 \r
        Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
        Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));\r
 \r
        Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
        Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));\r
-       Endpoint_ClearCurrentBank();\r
+       Endpoint_ClearOUT();\r
 \r
        SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);\r
        \r
 \r
        SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);\r
        \r
@@ -486,5 +486,5 @@ static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* PacketHeader)
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
 \r
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
-       Endpoint_ClearCurrentBank();      \r
+       Endpoint_ClearIN();  \r
 }\r
 }\r
index 672d0c0..9ffe13f 100644 (file)
@@ -1,6 +1,7 @@
 # Hey Emacs, this is a -*- makefile -*-\r
 #----------------------------------------------------------------------------\r
 # WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.\r
 # Hey Emacs, this is a -*- makefile -*-\r
 #----------------------------------------------------------------------------\r
 # WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.\r
+#  >> Modified for use with the LUFA project. <<\r
 #\r
 # Released to the Public Domain\r
 #\r
 #\r
 # Released to the Public Domain\r
 #\r
@@ -13,6 +14,9 @@
 # Sander Pool\r
 # Frederik Rouleau\r
 # Carlos Lamas\r
 # Sander Pool\r
 # Frederik Rouleau\r
 # Carlos Lamas\r
+# Dean Camera\r
+# Opendous Inc.\r
+# Denver Gingerich\r
 #\r
 #----------------------------------------------------------------------------\r
 # On command line:\r
 #\r
 #----------------------------------------------------------------------------\r
 # On command line:\r
 # make program = Download the hex file to the device, using avrdude.\r
 #                Please customize the avrdude settings below first!\r
 #\r
 # make program = Download the hex file to the device, using avrdude.\r
 #                Please customize the avrdude settings below first!\r
 #\r
+# make dfu = Download the hex file to the device, using dfu-programmer (must\r
+#            have dfu-programmer installed).\r
+#\r
+# make flip = Download the hex file to the device, using Atmel FLIP (must\r
+#             have Atmel FLIP installed).\r
+#\r
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer\r
+#               (must have dfu-programmer installed).\r
+#\r
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP\r
+#                (must have Atmel FLIP installed).\r
+#\r
+# make doxygen = Generate DoxyGen documentation for the project (must have\r
+#                DoxyGen installed)\r
+#\r
 # make debug = Start either simulavr or avarice as specified for debugging, \r
 #              with avr-gdb or avr-insight as the front end for debugging.\r
 #\r
 # make debug = Start either simulavr or avarice as specified for debugging, \r
 #              with avr-gdb or avr-insight as the front end for debugging.\r
 #\r
@@ -44,7 +63,7 @@
 MCU = at90usb1287\r
 \r
 \r
 MCU = at90usb1287\r
 \r
 \r
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring\r
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring\r
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called \r
 # "Board" inside the application directory.\r
 BOARD  = USBKEY\r
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called \r
 # "Board" inside the application directory.\r
 BOARD  = USBKEY\r
@@ -71,12 +90,26 @@ BOARD  = USBKEY
 F_CPU = 8000000\r
 \r
 \r
 F_CPU = 8000000\r
 \r
 \r
+# Input clock frequency.\r
+#     This will define a symbol, F_CLOCK, in all source code files equal to the \r
+#     input clock frequency (before any prescaling is performed). This value may\r
+#     differ from F_CPU if prescaling is used on the latter, and is required as the\r
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed\r
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'\r
+#     at the end, this will be done automatically to create a 32-bit value in your\r
+#     source code.\r
+#\r
+#     If no clock division is performed on the input clock inside the AVR (via the\r
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.\r
+F_CLOCK = 8000000\r
+\r
+\r
 # Output format. (can be srec, ihex, binary)\r
 FORMAT = ihex\r
 \r
 \r
 # Target file name (without extension).\r
 # Output format. (can be srec, ihex, binary)\r
 FORMAT = ihex\r
 \r
 \r
 # Target file name (without extension).\r
-TARGET = Sideshow\r
+TARGET = SideShow\r
 \r
 \r
 # Object files directory\r
 \r
 \r
 # Object files directory\r
@@ -85,25 +118,31 @@ TARGET = Sideshow
 OBJDIR = .\r
 \r
 \r
 OBJDIR = .\r
 \r
 \r
+# Path to the LUFA library\r
+LUFA_PATH = ../../../..\r
+\r
+\r
 # List C source files here. (C dependencies are automatically generated.)\r
 # List C source files here. (C dependencies are automatically generated.)\r
-SRC = $(TARGET).c                                          \\r
-         Descriptors.c                                        \\r
-         SideshowCommon.c                                     \\r
-         SideshowCommands.c                                   \\r
-         SideshowApplications.c                               \\r
-         SideshowContent.c                                    \\r
-         ../../LUFA/Scheduler/Scheduler.c                     \\r
-         ../../LUFA/Drivers/USB/LowLevel/LowLevel.c           \\r
-         ../../LUFA/Drivers/USB/LowLevel/Endpoint.c           \\r
-         ../../LUFA/Drivers/USB/LowLevel/DevChapter9.c        \\r
-         ../../LUFA/Drivers/USB/HighLevel/USBTask.c           \\r
-         ../../LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \\r
-         ../../LUFA/Drivers/USB/HighLevel/Events.c            \\r
-         ../../LUFA/Drivers/USB/HighLevel/StdDescriptors.c    \\r
-         ../../LUFA/Drivers/AT90USBXXX/Serial_Stream.c        \\r
-         ../../LUFA/Drivers/AT90USBXXX/Serial.c               \\r
-         \r
-         \r
+SRC = $(TARGET).c                                                 \\r
+         Descriptors.c                                               \\r
+         SideshowCommon.c                                            \\r
+         SideshowCommands.c                                          \\r
+         SideshowApplications.c                                      \\r
+         SideshowContent.c                                           \\r
+         $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \\r
+         $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c           \\r
+         $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c               \\r
+         $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/HostChapter9.c       \\r
+         $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c           \\r
+         $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c               \\r
+         $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c            \\r
+         $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c      \\r
+         $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c           \\r
+         $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c  \\r
+         $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \\r
+         $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \\r
+\r
+\r
 # List C++ source files here. (C dependencies are automatically generated.)\r
 CPPSRC = \r
 \r
 # List C++ source files here. (C dependencies are automatically generated.)\r
 CPPSRC = \r
 \r
@@ -135,7 +174,7 @@ DEBUG = dwarf-2
 #     Each directory must be seperated by a space.\r
 #     Use forward slashes for directory separators.\r
 #     For a directory that has spaces, enclose it in quotes.\r
 #     Each directory must be seperated by a space.\r
 #     Use forward slashes for directory separators.\r
 #     For a directory that has spaces, enclose it in quotes.\r
-EXTRAINCDIRS = ../../\r
+EXTRAINCDIRS = $(LUFA_PATH)/\r
 \r
 \r
 # Compiler flag to set the C Standard level.\r
 \r
 \r
 # Compiler flag to set the C Standard level.\r
@@ -147,9 +186,10 @@ CSTANDARD = -std=gnu99
 \r
 \r
 # Place -D or -U options here for C sources\r
 \r
 \r
 # Place -D or -U options here for C sources\r
-CDEFS  = -DF_CPU=$(F_CPU)UL -DBOARD=BOARD_$(BOARD) -DUSE_NONSTANDARD_DESCRIPTOR_NAMES\r
-CDEFS += -DUSB_DEVICE_ONLY -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"\r
-CDEFS += -DNO_STREAM_CALLBACKS\r
+CDEFS  = -DF_CPU=$(F_CPU)UL -DF_CLOCK=$(F_CLOCK)UL -DBOARD=BOARD_$(BOARD)\r
+CDEFS += -DUSE_NONSTANDARD_DESCRIPTOR_NAMES -DNO_STREAM_CALLBACKS -DUSB_DEVICE_ONLY\r
+CDEFS += -DFIXED_CONTROL_ENDPOINT_SIZE=8 -DUSE_SINGLE_DEVICE_CONFIGURATION\r
+CDEFS += -DUSE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"\r
 \r
 \r
 # Place -D or -U options here for ASM sources\r
 \r
 \r
 # Place -D or -U options here for ASM sources\r
@@ -284,7 +324,7 @@ EXTMEMOPTS =
 #    -Map:      create map file\r
 #    --cref:    add cross reference to  map file\r
 LDFLAGS = -Wl,-Map=$(TARGET).map,--cref\r
 #    -Map:      create map file\r
 #    --cref:    add cross reference to  map file\r
 LDFLAGS = -Wl,-Map=$(TARGET).map,--cref\r
-LDFLAGS += -Wl,--relax\r
+LDFLAGS += -Wl,--relax \r
 LDFLAGS += -Wl,--gc-sections\r
 LDFLAGS += $(EXTMEMOPTS)\r
 LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))\r
 LDFLAGS += -Wl,--gc-sections\r
 LDFLAGS += $(EXTMEMOPTS)\r
 LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))\r
@@ -422,7 +462,7 @@ ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
 \r
 \r
 # Default target.\r
 \r
 \r
 # Default target.\r
-all: begin gccversion sizebefore build checkhooks checklibmode sizeafter end\r
+all: begin gccversion sizebefore build checkhooks checklibmode checkboard sizeafter end\r
 \r
 # Change the build target to build a HEX file or a library.\r
 build: elf hex eep lss sym\r
 \r
 # Change the build target to build a HEX file or a library.\r
 build: elf hex eep lss sym\r
@@ -468,11 +508,11 @@ sizeafter:
 checkhooks: build\r
        @echo\r
        @echo ------- Unhooked LUFA Events -------\r
 checkhooks: build\r
        @echo\r
        @echo ------- Unhooked LUFA Events -------\r
-       @$(shell) (grep -s '^Event.*LUFA/.*\\.o' $(TARGET).map | \\r
+       @$(shell) (grep -s '^EVENT_.*LUFA/.*\\.o' $(TARGET).map | \\r
                   cut -d' ' -f1 | cut -d'_' -f2- | grep ".*") || \\r
                           echo "(None)"\r
                   cut -d' ' -f1 | cut -d'_' -f2- | grep ".*") || \\r
                           echo "(None)"\r
-       @echo ----- End Unhooked LUFA Events -----\r
-       \r
+       @echo ------------------------------------\r
+\r
 checklibmode:\r
        @echo\r
        @echo ----------- Library Mode -----------\r
 checklibmode:\r
        @echo\r
        @echo ----------- Library Mode -----------\r
@@ -481,6 +521,12 @@ checklibmode:
                  || echo "No specific mode (both device and host mode allowable)."\r
        @echo ------------------------------------\r
 \r
                  || echo "No specific mode (both device and host mode allowable)."\r
        @echo ------------------------------------\r
 \r
+checkboard:\r
+       @echo\r
+       @echo ---------- Selected Board ----------\r
+       @echo Selected board model is $(BOARD).\r
+       @echo ------------------------------------\r
+       \r
 # Display compiler version information.\r
 gccversion : \r
        @$(CC) --version\r
 # Display compiler version information.\r
 gccversion : \r
        @$(CC) --version\r
@@ -491,6 +537,26 @@ gccversion :
 program: $(TARGET).hex $(TARGET).eep\r
        $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)\r
 \r
 program: $(TARGET).hex $(TARGET).eep\r
        $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)\r
 \r
+flip: $(TARGET).hex\r
+       batchisp -hardware usb -device $(MCU) -operation erase f\r
+       batchisp -hardware usb -device $(MCU) -operation loadbuffer $(TARGET).hex program\r
+       batchisp -hardware usb -device $(MCU) -operation start reset 0\r
+\r
+dfu: $(TARGET).hex\r
+       dfu-programmer $(MCU) erase\r
+       dfu-programmer $(MCU) flash --debug 1 $(TARGET).hex\r
+       dfu-programmer $(MCU) reset\r
+\r
+flip-ee: $(TARGET).hex $(TARGET).eep\r
+       copy $(TARGET).eep $(TARGET)eep.hex\r
+       batchisp -hardware usb -device $(MCU) -operation memory EEPROM erase\r
+       batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(TARGET)eep.hex program\r
+       batchisp -hardware usb -device $(MCU) -operation start reset 0\r
+\r
+dfu-ee: $(TARGET).hex $(TARGET).eep\r
+       dfu-programmer $(MCU) flash-eeprom --debug 1 --suppress-bootloader-mem $(TARGET).eep\r
+       dfu-programmer $(MCU) reset\r
+\r
 \r
 # Generate avr-gdb config/init file which does the following:\r
 #     define the reset signal, load the target file, connect to target, and set \r
 \r
 # Generate avr-gdb config/init file which does the following:\r
 #     define the reset signal, load the target file, connect to target, and set \r
@@ -630,10 +696,11 @@ clean: begin clean_list clean_binary end
 \r
 clean_binary:\r
        $(REMOVE) $(TARGET).hex\r
 \r
 clean_binary:\r
        $(REMOVE) $(TARGET).hex\r
-\r
+       \r
 clean_list:\r
        @echo $(MSG_CLEANING)\r
        $(REMOVE) $(TARGET).eep\r
 clean_list:\r
        @echo $(MSG_CLEANING)\r
        $(REMOVE) $(TARGET).eep\r
+       $(REMOVE) $(TARGET)eep.hex\r
        $(REMOVE) $(TARGET).cof\r
        $(REMOVE) $(TARGET).elf\r
        $(REMOVE) $(TARGET).map\r
        $(REMOVE) $(TARGET).cof\r
        $(REMOVE) $(TARGET).elf\r
        $(REMOVE) $(TARGET).map\r
@@ -652,6 +719,9 @@ doxygen:
        @doxygen Doxygen.conf\r
        @echo Documentation Generation Complete.\r
 \r
        @doxygen Doxygen.conf\r
        @echo Documentation Generation Complete.\r
 \r
+clean_doxygen:\r
+       rm -rf Documentation\r
+\r
 # Create object files directory\r
 $(shell mkdir $(OBJDIR) 2>/dev/null)\r
 \r
 # Create object files directory\r
 $(shell mkdir $(OBJDIR) 2>/dev/null)\r
 \r
@@ -661,8 +731,8 @@ $(shell mkdir $(OBJDIR) 2>/dev/null)
 \r
 \r
 # Listing of phony targets.\r
 \r
 \r
 # Listing of phony targets.\r
-.PHONY : all checkhooks checklibmode begin  \\r
-finish end sizebefore sizeafter gccversion  \\r
-build elf hex eep lss sym coff extcoff      \\r
-clean clean_list clean_binary program debug \\r
-gdb-config doxygen\r
+.PHONY : all checkhooks checklibmode checkboard   \\r
+begin finish end sizebefore sizeafter gccversion  \\r
+build elf hex eep lss sym coff extcoff clean      \\r
+clean_list clean_binary program debug gdb-config  \\r
+doxygen dfu flip flip-ee dfu-ee
\ No newline at end of file
index 03c645a..3c48830 100644 (file)
@@ -5,9 +5,13 @@
  */\r
    \r
 ========== TODO: ===========\r
  */\r
    \r
 ========== TODO: ===========\r
-       - Document new class drivers (in progress)\r
-       - Add standardized descriptor names to class driver structures, controlled by USE_NONSTANDARD_DESCRIPTOR_NAMES\r
+       - Document new device class drivers (in progress)\r
+       - Made new host class drivers\r
+       - Document new host class drivers\r
        - Convert Host mode demos to class drivers\r
        - Convert Host mode demos to class drivers\r
+       - Add in old Host mode demos, convert to schedulerless\r
+       - Add in incomplete host mode demos\r
+       - Add standardized descriptor names to class driver structures, controlled by USE_NONSTANDARD_DESCRIPTOR_NAMES\r
        - Remake AVRStudio projects to reflect file structure changes\r
 ============================\r
 \r
        - Remake AVRStudio projects to reflect file structure changes\r
 ============================\r
 \r