X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/ed031c1df2f5b053b9cd9f48c63e66a42b7c049e..e0985b995009d71b80d214a66944e76f4e41aadb:/Demos/Host/StillImageHost/StillImageCommands.c diff --git a/Demos/Host/StillImageHost/StillImageCommands.c b/Demos/Host/StillImageHost/StillImageCommands.c index 969ff5af6..8f05e48f4 100644 --- a/Demos/Host/StillImageHost/StillImageCommands.c +++ b/Demos/Host/StillImageHost/StillImageCommands.c @@ -72,7 +72,7 @@ void SImage_SendBlockHeader(void) } /* Send the PIMA command block to the attached device */ - Pipe_ClearCurrentBank(); + Pipe_ClearOUT(); } /* Freeze pipe after use */ @@ -90,7 +90,7 @@ void SImage_RecieveEventHeader(void) Pipe_Read_Stream_LE(&PIMA_EventBlock, sizeof(PIMA_EventBlock)); /* Clear the pipe after read complete to prepare for next event */ - Pipe_ClearCurrentBank(); + Pipe_ClearIN(); /* Freeze the event pipe again after use */ Pipe_Freeze(); @@ -106,12 +106,12 @@ uint8_t SImage_RecieveBlockHeader(void) Pipe_Unfreeze(); /* Wait until data received on the IN pipe */ - while (!(Pipe_ReadWriteAllowed())) + while (!(Pipe_IsReadWriteAllowed())) { /* Check to see if a new frame has been issued (1ms elapsed) */ if (USB_INT_HasOccurred(USB_INT_HSOFI)) { - /* Clear the flag and decrement the timout period counter */ + /* Clear the flag and decrement the timeout period counter */ USB_INT_Clear(USB_INT_HSOFI); TimeoutMSRem--; @@ -119,7 +119,7 @@ uint8_t SImage_RecieveBlockHeader(void) if (!(TimeoutMSRem)) { /* Return error code */ - return PIPE_RWSTREAM_ERROR_Timeout; + return PIPE_RWSTREAM_Timeout; } } @@ -132,7 +132,7 @@ uint8_t SImage_RecieveBlockHeader(void) SImage_ClearPipeStall(SIMAGE_DATA_OUT_PIPE); /* Return error code and break out of the loop */ - return PIPE_RWSTREAM_ERROR_PipeStalled; + return PIPE_RWSTREAM_PipeStalled; } Pipe_SelectPipe(SIMAGE_DATA_IN_PIPE); @@ -144,14 +144,14 @@ uint8_t SImage_RecieveBlockHeader(void) SImage_ClearPipeStall(SIMAGE_DATA_IN_PIPE); /* Return error code */ - return PIPE_RWSTREAM_ERROR_PipeStalled; + return PIPE_RWSTREAM_PipeStalled; } /* Check to see if the device was disconnected, if so exit function */ if (!(USB_IsConnected)) { /* Return error code */ - return PIPE_RWSTREAM_ERROR_DeviceDisconnected; + return PIPE_RWSTREAM_DeviceDisconnected; } }; @@ -179,13 +179,13 @@ uint8_t SImage_RecieveBlockHeader(void) } /* Clear pipe bank after use */ - Pipe_ClearCurrentBank(); + Pipe_ClearIN(); } /* Freeze the IN pipe after use */ Pipe_Freeze(); - return PIPE_RWSTREAM_ERROR_NoError; + return PIPE_RWSTREAM_NoError; } /** Function to send the given data to the device, after a command block has been issued. @@ -202,6 +202,9 @@ void SImage_SendData(void* Buffer, uint16_t Bytes) /* Write the data contents to the pipe */ Pipe_Write_Stream_LE(Buffer, Bytes); + /* Send the last packet to the attached device */ + Pipe_ClearOUT(); + /* Freeze the pipe again after use */ Pipe_Freeze(); } @@ -258,16 +261,19 @@ bool SImage_IsEventReceived(void) * * \return A value from the USB_Host_SendControlErrorCodes_t enum */ -uint8_t SImage_ClearPipeStall(const uint8_t PipeEndpointNum) +uint8_t SImage_ClearPipeStall(const uint8_t EndpointNum) { - USB_HostRequest = (USB_Host_Request_Header_t) + USB_ControlRequest = (USB_Request_Header_t) { - bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_ENDPOINT), - bRequest: REQ_ClearFeature, - wValue: FEATURE_ENDPOINT_HALT, - wIndex: PipeEndpointNum, - wLength: 0, + .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_ENDPOINT), + .bRequest = REQ_ClearFeature, + .wValue = FEATURE_ENDPOINT_HALT, + .wIndex = EndpointNum, + .wLength = 0, }; + /* Select the control pipe for the request transfer */ + Pipe_SelectPipe(PIPE_CONTROLPIPE); + return USB_Host_SendControlRequest(NULL); }