Move new Class Driver powered demos to a new ClassDriver subdirectory, re-add old...
[pub/USBasp.git] / Bootloaders / DFU / BootloaderDFU.c
index f358016..11177c5 100644 (file)
@@ -139,7 +139,7 @@ int main (void)
 /** Event handler for the USB_Disconnect event. This indicates that the bootloader should exit and the user\r
  *  application started.\r
  */\r
-EVENT_HANDLER(USB_Disconnect)\r
+void EVENT_USB_Disconnect(void)\r
 {\r
        /* Upon disconnection, run user application */\r
        RunBootloader = false;\r
@@ -149,21 +149,15 @@ EVENT_HANDLER(USB_Disconnect)
  *  control requests that are not handled internally by the USB library (including the DFU commands, which are\r
  *  all issued via the control endpoint), so that they can be handled appropriately for the application.\r
  */\r
-EVENT_HANDLER(USB_UnhandledControlPacket)\r
+void EVENT_USB_UnhandledControlPacket(void)\r
 {\r
-       /* Discard unused wIndex value */\r
-       Endpoint_Discard_Word();\r
-       \r
-       /* Discard unused wValue value */\r
-       Endpoint_Discard_Word();\r
-\r
        /* Get the size of the command and data from the wLength value */\r
-       SentCommand.DataSize = Endpoint_Read_Word_LE();\r
+       SentCommand.DataSize = USB_ControlRequest.wLength;\r
 \r
-       switch (bRequest)\r
+       switch (USB_ControlRequest.bRequest)\r
        {\r
                case DFU_DNLOAD:\r
-                       Endpoint_ClearControlSETUP();\r
+                       Endpoint_ClearSETUP();\r
                        \r
                        /* Check if bootloader is waiting to terminate */\r
                        if (WaitForExit)\r
@@ -225,7 +219,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
                                                {\r
                                                        uint16_t Words[2];\r
                                                        uint32_t Long;\r
-                                               } CurrFlashAddress                 = {Words: {StartAddr, Flash64KBPage}};\r
+                                               } CurrFlashAddress                 = {.Words = {StartAddr, Flash64KBPage}};\r
                                                \r
                                                uint32_t CurrFlashPageStartAddress = CurrFlashAddress.Long;\r
                                                uint8_t  WordsInFlashPage          = 0;\r
@@ -235,7 +229,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
                                                        /* Check if endpoint is empty - if so clear it and wait until ready for next packet */\r
                                                        if (!(Endpoint_BytesInEndpoint()))\r
                                                        {\r
-                                                               Endpoint_ClearControlOUT();\r
+                                                               Endpoint_ClearOUT();\r
                                                                while (!(Endpoint_IsOUTReceived()));\r
                                                        }\r
 \r
@@ -279,7 +273,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
                                                        /* Check if endpoint is empty - if so clear it and wait until ready for next packet */\r
                                                        if (!(Endpoint_BytesInEndpoint()))\r
                                                        {\r
-                                                               Endpoint_ClearControlOUT();\r
+                                                               Endpoint_ClearOUT();\r
                                                                while (!(Endpoint_IsOUTReceived()));\r
                                                        }\r
 \r
@@ -296,15 +290,15 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
                                }\r
                        }\r
 \r
-                       Endpoint_ClearControlOUT();\r
+                       Endpoint_ClearOUT();\r
 \r
                        /* Acknowledge status stage */\r
                        while (!(Endpoint_IsINReady()));\r
-                       Endpoint_ClearControlIN();\r
+                       Endpoint_ClearIN();\r
                                \r
                        break;\r
                case DFU_UPLOAD:\r
-                       Endpoint_ClearControlSETUP();\r
+                       Endpoint_ClearSETUP();\r
 \r
                        while (!(Endpoint_IsINReady()));\r
 \r
@@ -336,14 +330,14 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
                                        {\r
                                                uint16_t Words[2];\r
                                                uint32_t Long;\r
-                                       } CurrFlashAddress = {Words: {StartAddr, Flash64KBPage}};\r
+                                       } CurrFlashAddress = {.Words = {StartAddr, Flash64KBPage}};\r
 \r
                                        while (WordsRemaining--)\r
                                        {\r
                                                /* Check if endpoint is full - if so clear it and wait until ready for next packet */\r
                                                if (Endpoint_BytesInEndpoint() == FIXED_CONTROL_ENDPOINT_SIZE)\r
                                                {\r
-                                                       Endpoint_ClearControlIN();\r
+                                                       Endpoint_ClearIN();\r
                                                        while (!(Endpoint_IsINReady()));\r
                                                }\r
 \r
@@ -368,7 +362,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
                                                /* Check if endpoint is full - if so clear it and wait until ready for next packet */\r
                                                if (Endpoint_BytesInEndpoint() == FIXED_CONTROL_ENDPOINT_SIZE)\r
                                                {\r
-                                                       Endpoint_ClearControlIN();\r
+                                                       Endpoint_ClearIN();\r
                                                        while (!(Endpoint_IsINReady()));\r
                                                }\r
 \r
@@ -384,15 +378,15 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
                                DFU_State = dfuIDLE;\r
                        }\r
 \r
-                       Endpoint_ClearControlIN();\r
+                       Endpoint_ClearIN();\r
 \r
                        /* Acknowledge status stage */\r
                        while (!(Endpoint_IsOUTReceived()));\r
-                       Endpoint_ClearControlOUT();\r
+                       Endpoint_ClearOUT();\r
 \r
                        break;\r
                case DFU_GETSTATUS:\r
-                       Endpoint_ClearControlSETUP();\r
+                       Endpoint_ClearSETUP();\r
                        \r
                        /* Write 8-bit status value */\r
                        Endpoint_Write_Byte(DFU_Status);\r
@@ -407,46 +401,46 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
                        /* Write 8-bit state string ID number */\r
                        Endpoint_Write_Byte(0);\r
 \r
-                       Endpoint_ClearControlIN();\r
+                       Endpoint_ClearIN();\r
                        \r
                        /* Acknowledge status stage */\r
                        while (!(Endpoint_IsOUTReceived()));\r
-                       Endpoint_ClearControlOUT();\r
+                       Endpoint_ClearOUT();\r
        \r
                        break;          \r
                case DFU_CLRSTATUS:\r
-                       Endpoint_ClearControlSETUP();\r
+                       Endpoint_ClearSETUP();\r
                        \r
                        /* Reset the status value variable to the default OK status */\r
                        DFU_Status = OK;\r
 \r
                        /* Acknowledge status stage */\r
                        while (!(Endpoint_IsINReady()));\r
-                       Endpoint_ClearControlIN();\r
+                       Endpoint_ClearIN();\r
                        \r
                        break;\r
                case DFU_GETSTATE:\r
-                       Endpoint_ClearControlSETUP();\r
+                       Endpoint_ClearSETUP();\r
                        \r
                        /* Write the current device state to the endpoint */\r
                        Endpoint_Write_Byte(DFU_State);\r
                \r
-                       Endpoint_ClearControlIN();\r
+                       Endpoint_ClearIN();\r
                        \r
                        /* Acknowledge status stage */\r
                        while (!(Endpoint_IsOUTReceived()));\r
-                       Endpoint_ClearControlOUT();\r
+                       Endpoint_ClearOUT();\r
 \r
                        break;\r
                case DFU_ABORT:\r
-                       Endpoint_ClearControlSETUP();\r
+                       Endpoint_ClearSETUP();\r
                        \r
                        /* Reset the current state variable to the default idle state */\r
                        DFU_State = dfuIDLE;\r
                        \r
                        /* Acknowledge status stage */\r
                        while (!(Endpoint_IsINReady()));\r
-                       Endpoint_ClearControlIN();\r
+                       Endpoint_ClearIN();\r
 \r
                        break;\r
        }\r
@@ -463,7 +457,7 @@ static void DiscardFillerBytes(uint8_t NumberOfBytes)
        {\r
                if (!(Endpoint_BytesInEndpoint()))\r
                {\r
-                       Endpoint_ClearControlOUT();\r
+                       Endpoint_ClearOUT();\r
 \r
                        /* Wait until next data packet received */\r
                        while (!(Endpoint_IsOUTReceived()));\r
@@ -531,8 +525,8 @@ static void LoadStartEndAddresses(void)
        {\r
                uint8_t  Bytes[2];\r
                uint16_t Word;\r
-       } Address[2] = {{Bytes: {SentCommand.Data[2], SentCommand.Data[1]}},\r
-                       {Bytes: {SentCommand.Data[4], SentCommand.Data[3]}}};\r
+       } Address[2] = {{.Bytes = {SentCommand.Data[2], SentCommand.Data[1]}},\r
+                       {.Bytes = {SentCommand.Data[4], SentCommand.Data[3]}}};\r
                \r
        /* Load in the start and ending read addresses from the sent data packet */\r
        StartAddr = Address[0].Word;\r
@@ -557,7 +551,7 @@ static void ProcessMemProgCommand(void)
                        {\r
                                uint16_t Words[2];\r
                                uint32_t Long;\r
-                       } CurrFlashAddress = {Words: {StartAddr, Flash64KBPage}};\r
+                       } CurrFlashAddress = {.Words = {StartAddr, Flash64KBPage}};\r
                        \r
                        /* Erase the current page's temp buffer */\r
                        boot_page_erase(CurrFlashAddress.Long);\r
@@ -639,7 +633,7 @@ static void ProcessWriteCommand(void)
                                {\r
                                        uint8_t  Bytes[2];\r
                                        AppPtr_t FuncPtr;\r
-                               } Address = {Bytes: {SentCommand.Data[4], SentCommand.Data[3]}};\r
+                               } Address = {.Bytes = {SentCommand.Data[4], SentCommand.Data[3]}};\r
 \r
                                AppStartPtr = Address.FuncPtr;\r
                                \r