X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/d49cc0f7830319e701294e19937fae4de26ae8e2..fc31973daffea3506051ce51a5f79383ce0867d6:/LUFA/Drivers/USB/Class/Host/StillImage.c?ds=sidebyside diff --git a/LUFA/Drivers/USB/Class/Host/StillImage.c b/LUFA/Drivers/USB/Class/Host/StillImage.c index 577f619c8..50be7d6d2 100644 --- a/LUFA/Drivers/USB/Class/Host/StillImage.c +++ b/LUFA/Drivers/USB/Class/Host/StillImage.c @@ -151,7 +151,8 @@ uint8_t SImage_Host_SendBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceIn if ((USB_HostState != HOST_STATE_Configured) || !(SIInterfaceInfo->State.IsActive)) return PIPE_RWSTREAM_DeviceDisconnected; - PIMAHeader->TransactionID = SIInterfaceInfo->State.TransactionID++; + if (SIInterfaceInfo->State.IsSessionOpen) + PIMAHeader->TransactionID = SIInterfaceInfo->State.TransactionID++; Pipe_SelectPipe(SIInterfaceInfo->Config.DataOUTPipeNumber); Pipe_Unfreeze(); @@ -315,12 +316,15 @@ uint8_t SImage_Host_OpenSession(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo) uint8_t ErrorCode; + SIInterfaceInfo->State.TransactionID = 0; + SIInterfaceInfo->State.IsSessionOpen = false; + SI_PIMA_Container_t PIMABlock = (SI_PIMA_Container_t) { - .DataLength = PIMA_COMMAND_SIZE(0), + .DataLength = PIMA_COMMAND_SIZE(1), .Type = CType_CommandBlock, .Code = 0x1002, - .Params = {}, + .Params = {1}, }; if ((ErrorCode = SImage_Host_SendBlockHeader(SIInterfaceInfo, &PIMABlock)) != PIPE_RWSTREAM_NoError) @@ -332,7 +336,6 @@ uint8_t SImage_Host_OpenSession(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo) if ((PIMABlock.Type != CType_ResponseBlock) || (PIMABlock.Code != 0x2001)) return SI_ERROR_LOGICAL_CMD_FAILED; - SIInterfaceInfo->State.TransactionID = 0; SIInterfaceInfo->State.IsSessionOpen = true; return PIPE_RWSTREAM_NoError; @@ -347,10 +350,10 @@ uint8_t SImage_Host_CloseSession(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo) SI_PIMA_Container_t PIMABlock = (SI_PIMA_Container_t) { - .DataLength = PIMA_COMMAND_SIZE(0), + .DataLength = PIMA_COMMAND_SIZE(1), .Type = CType_CommandBlock, .Code = 0x1003, - .Params = {}, + .Params = {1}, }; if ((ErrorCode = SImage_Host_SendBlockHeader(SIInterfaceInfo, &PIMABlock)) != PIPE_RWSTREAM_NoError)