Fixed Endpoint_Write_Control_* functions writing more data than expected by the host...
[pub/USBasp.git] / Demos / Host / StillImageHost / StillImageHost.c
index 787629c..ca5292b 100644 (file)
 \r
 #include "StillImageHost.h"\r
 \r
-/* Project Tags, for reading out using the ButtLoad project */\r
-BUTTLOADTAG(ProjName,    "LUFA SIMG Host App");\r
-BUTTLOADTAG(BuildTime,   __TIME__);\r
-BUTTLOADTAG(BuildDate,   __DATE__);\r
-\r
 /* Scheduler Task List */\r
 TASK_LIST\r
 {\r
-       { Task: USB_USBTask          , TaskStatus: TASK_STOP },\r
-       { Task: USB_SImage_Host      , TaskStatus: TASK_STOP },\r
+       { .Task = USB_USBTask          , .TaskStatus = TASK_STOP },\r
+       { .Task = USB_SImage_Host      , .TaskStatus = TASK_STOP },\r
 };\r
 \r
 \r
@@ -156,15 +151,18 @@ TASK(USB_SImage_Host)
        {\r
                case HOST_STATE_Addressed:\r
                        /* Standard request to set the device configuration to configuration 1 */\r
-                       USB_HostRequest = (USB_Host_Request_Header_t)\r
+                       USB_ControlRequest = (USB_Request_Header_t)\r
                                {\r
-                                       bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE),\r
-                                       bRequest:      REQ_SetConfiguration,\r
-                                       wValue:        1,\r
-                                       wIndex:        0,\r
-                                       wLength:       0,\r
+                                       .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE),\r
+                                       .bRequest      = REQ_SetConfiguration,\r
+                                       .wValue        = 1,\r
+                                       .wIndex        = 0,\r
+                                       .wLength       = 0,\r
                                };\r
 \r
+                       /* Select the control pipe for the request transfer */\r
+                       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
                        /* Send the request, display error and wait for device detach if request fails */\r
                        if (USB_Host_SendControlRequest(NULL) != HOST_SENDCONTROL_Successful)\r
                        {\r
@@ -213,11 +211,11 @@ TASK(USB_SImage_Host)
                        \r
                        PIMA_SendBlock = (PIMA_Container_t)\r
                                {\r
-                                       DataLength:    PIMA_COMMAND_SIZE(0),\r
-                                       Type:          CType_CommandBlock,\r
-                                       Code:          PIMA_OPERATION_GETDEVICEINFO,\r
-                                       TransactionID: 0x00000000,\r
-                                       Params:        {},\r
+                                       .DataLength    = PIMA_COMMAND_SIZE(0),\r
+                                       .Type          = CType_CommandBlock,\r
+                                       .Code          = PIMA_OPERATION_GETDEVICEINFO,\r
+                                       .TransactionID = 0x00000000,\r
+                                       .Params        = {},\r
                                };\r
                        \r
                        /* Send the GETDEVICEINFO block */\r
@@ -240,7 +238,7 @@ TASK(USB_SImage_Host)
                        SImage_ReadData(DeviceInfo, DeviceInfoSize);\r
                        \r
                        /* Once all the data has been read, the pipe must be cleared before the response can be sent */\r
-                       Pipe_ClearCurrentBank();\r
+                       Pipe_ClearIN();\r
                        \r
                        /* Create a pointer for walking through the info dataset */\r
                        uint8_t* DeviceInfoPos = DeviceInfo;\r
@@ -292,11 +290,11 @@ TASK(USB_SImage_Host)
                        \r
                        PIMA_SendBlock = (PIMA_Container_t)\r
                                {\r
-                                       DataLength:    PIMA_COMMAND_SIZE(1),\r
-                                       Type:          CType_CommandBlock,\r
-                                       Code:          PIMA_OPERATION_OPENSESSION,\r
-                                       TransactionID: 0x00000000,\r
-                                       Params:        {0x00000001},\r
+                                       .DataLength    = PIMA_COMMAND_SIZE(1),\r
+                                       .Type          = CType_CommandBlock,\r
+                                       .Code          = PIMA_OPERATION_OPENSESSION,\r
+                                       .TransactionID = 0x00000000,\r
+                                       .Params        = {0x00000001},\r
                                };\r
                        \r
                        /* Send the OPENSESSION block, open a session with an ID of 0x0001 */\r
@@ -320,11 +318,11 @@ TASK(USB_SImage_Host)
 \r
                        PIMA_SendBlock = (PIMA_Container_t)\r
                                {\r
-                                       DataLength:    PIMA_COMMAND_SIZE(1),\r
-                                       Type:          CType_CommandBlock,\r
-                                       Code:          PIMA_OPERATION_CLOSESESSION,\r
-                                       TransactionID: 0x00000001,\r
-                                       Params:        {0x00000001},\r
+                                       .DataLength    = PIMA_COMMAND_SIZE(1),\r
+                                       .Type          = CType_CommandBlock,\r
+                                       .Code          = PIMA_OPERATION_CLOSESESSION,\r
+                                       .TransactionID = 0x00000001,\r
+                                       .Params        = {0x00000001},\r
                                };\r
                        \r
                        /* Send the CLOSESESSION block, close the session with an ID of 0x0001 */\r
@@ -419,7 +417,7 @@ void UpdateStatus(uint8_t CurrentStatus)
 /** Displays a PIMA command error via the device's serial port.\r
  *\r
  *  \param ErrorCode          Error code of the function which failed to complete successfully\r
- *  \param ResponseErrorCode  Indicates if the error is due to a command failed indication from the device, or a communication failure\r
+ *  \param ResponseCodeError  Indicates if the error is due to a command failed indication from the device, or a communication failure\r
  */\r
 void ShowCommandError(uint8_t ErrorCode, bool ResponseCodeError)\r
 {\r