X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/18cbd31605dae070f00900161090a72d3eb0f8ab..6f90d45684206e5dfca3c4554a14a5784da49d92:/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c?ds=inline diff --git a/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c b/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c index 861f55b5d..752c87be9 100644 --- a/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c +++ b/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c @@ -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 @@ -55,10 +55,10 @@ void SImage_SendBlockHeader(void) Pipe_Unfreeze(); /* Write the PIMA block to the data OUT pipe */ - Pipe_Write_Stream_LE(&PIMA_SendBlock, PIMA_COMMAND_SIZE(0)); - + Pipe_Write_Stream_LE(&PIMA_SendBlock, PIMA_COMMAND_SIZE(0), NULL); + /* If the block type is a command, send its parameters (if any) */ - if (PIMA_SendBlock.Type == CType_CommandBlock) + if (PIMA_SendBlock.Type == PIMA_CONTAINER_CommandBlock) { /* Determine the size of the parameters in the block via the data length attribute */ uint8_t ParamBytes = (PIMA_SendBlock.DataLength - PIMA_COMMAND_SIZE(0)); @@ -67,13 +67,13 @@ void SImage_SendBlockHeader(void) if (ParamBytes) { /* Write the PIMA parameters to the data OUT pipe */ - Pipe_Write_Stream_LE(&PIMA_SendBlock.Params, ParamBytes); + Pipe_Write_Stream_LE(&PIMA_SendBlock.Params, ParamBytes, NULL); } - + /* Send the PIMA command block to the attached device */ Pipe_ClearOUT(); } - + /* Freeze pipe after use */ Pipe_Freeze(); } @@ -89,16 +89,16 @@ uint8_t SImage_ReceiveEventHeader(void) /* Unfreeze the events pipe */ Pipe_SelectPipe(SIMAGE_EVENTS_PIPE); Pipe_Unfreeze(); - + /* Read in the event data into the global structure */ - ErrorCode = Pipe_Read_Stream_LE(&PIMA_EventBlock, sizeof(PIMA_EventBlock)); - + ErrorCode = Pipe_Read_Stream_LE(&PIMA_EventBlock, sizeof(PIMA_EventBlock), NULL); + /* Clear the pipe after read complete to prepare for next event */ Pipe_ClearIN(); - + /* Freeze the event pipe again after use */ Pipe_Freeze(); - + return ErrorCode; } @@ -114,7 +114,7 @@ uint8_t SImage_ReceiveBlockHeader(void) /* Unfreeze the data IN pipe */ Pipe_SelectPipe(SIMAGE_DATA_IN_PIPE); Pipe_Unfreeze(); - + /* Wait until data received on the IN pipe */ while (!(Pipe_IsINReceived())) { @@ -131,7 +131,7 @@ uint8_t SImage_ReceiveBlockHeader(void) if (!(TimeoutMSRem)) return PIPE_RWSTREAM_Timeout; } - + Pipe_Freeze(); Pipe_SelectPipe(SIMAGE_DATA_OUT_PIPE); Pipe_Unfreeze(); @@ -140,7 +140,7 @@ uint8_t SImage_ReceiveBlockHeader(void) if (Pipe_IsStalled()) { /* Clear the stall condition on the OUT pipe */ - USB_Host_ClearPipeStall(SIMAGE_DATA_OUT_PIPE); + USB_Host_ClearEndpointStall(Pipe_GetBoundEndpointAddress()); /* Return error code and break out of the loop */ return PIPE_RWSTREAM_PipeStalled; @@ -154,22 +154,22 @@ uint8_t SImage_ReceiveBlockHeader(void) if (Pipe_IsStalled()) { /* Clear the stall condition on the IN pipe */ - USB_Host_ClearPipeStall(SIMAGE_DATA_IN_PIPE); + USB_Host_ClearEndpointStall(Pipe_GetBoundEndpointAddress()); /* Return error code */ return PIPE_RWSTREAM_PipeStalled; } - + /* Check to see if the device was disconnected, if so exit function */ if (USB_HostState == HOST_STATE_Unattached) return PIPE_RWSTREAM_DeviceDisconnected; } - + /* Load in the response from the attached device */ - Pipe_Read_Stream_LE(&PIMA_ReceivedBlock, PIMA_COMMAND_SIZE(0)); - + Pipe_Read_Stream_LE(&PIMA_ReceivedBlock, PIMA_COMMAND_SIZE(0), NULL); + /* Check if the returned block type is a response block */ - if (PIMA_ReceivedBlock.Type == CType_ResponseBlock) + if (PIMA_ReceivedBlock.Type == PIMA_CONTAINER_ResponseBlock) { /* Determine the size of the parameters in the block via the data length attribute */ uint8_t ParamBytes = (PIMA_ReceivedBlock.DataLength - PIMA_COMMAND_SIZE(0)); @@ -178,16 +178,16 @@ uint8_t SImage_ReceiveBlockHeader(void) if (ParamBytes) { /* Read the PIMA parameters from the data IN pipe */ - Pipe_Read_Stream_LE(&PIMA_ReceivedBlock.Params, ParamBytes); + Pipe_Read_Stream_LE(&PIMA_ReceivedBlock.Params, ParamBytes, NULL); } - + /* Clear pipe bank after use */ Pipe_ClearIN(); } - + /* Freeze the IN pipe after use */ Pipe_Freeze(); - + return PIPE_RWSTREAM_NoError; } @@ -206,20 +206,20 @@ uint8_t SImage_SendData(void* const Buffer, /* Unfreeze the data OUT pipe */ Pipe_SelectPipe(SIMAGE_DATA_OUT_PIPE); Pipe_Unfreeze(); - + /* Write the data contents to the pipe */ - ErrorCode = Pipe_Write_Stream_LE(Buffer, Bytes); + ErrorCode = Pipe_Write_Stream_LE(Buffer, Bytes, NULL); /* Send the last packet to the attached device */ Pipe_ClearOUT(); /* Freeze the pipe again after use */ Pipe_Freeze(); - + return ErrorCode; } -/** Function to receive the given data to the device, after a response block has been received. +/** Function to receive the given data from the device, after a response block has been received. * * \param[out] Buffer Destination data buffer to put read bytes from the device * \param[in] Bytes Number of bytes to receive @@ -236,11 +236,11 @@ uint8_t SImage_ReadData(void* const Buffer, Pipe_Unfreeze(); /* Read in the data into the buffer */ - ErrorCode = Pipe_Read_Stream_LE(Buffer, Bytes); + ErrorCode = Pipe_Read_Stream_LE(Buffer, Bytes, NULL); /* Freeze the pipe again after use */ Pipe_Freeze(); - + return ErrorCode; } @@ -255,13 +255,14 @@ bool SImage_IsEventReceived(void) /* Unfreeze the Event pipe */ Pipe_SelectPipe(SIMAGE_EVENTS_PIPE); Pipe_Unfreeze(); - + /* If the pipe contains data, an event has been received */ if (Pipe_BytesInPipe()) IsEventReceived = true; - + /* Freeze the pipe after use */ Pipe_Freeze(); - + return IsEventReceived; } +