Add LUFA-side channel open/close routines, add signalling handlers for the creation...
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / ISP / ISPProtocol.c
index 85b31fb..9d0a26c 100644 (file)
@@ -57,6 +57,7 @@ void ISPProtocol_EnterISPMode(void)
        Endpoint_Read_Stream_LE(&Enter_ISP_Params, sizeof(Enter_ISP_Params), NO_STREAM_CALLBACK);\r
 \r
        Endpoint_ClearOUT();\r
        Endpoint_Read_Stream_LE(&Enter_ISP_Params, sizeof(Enter_ISP_Params), NO_STREAM_CALLBACK);\r
 \r
        Endpoint_ClearOUT();\r
+       Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
        uint8_t ResponseStatus = STATUS_CMD_FAILED;\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
        uint8_t ResponseStatus = STATUS_CMD_FAILED;\r
@@ -117,6 +118,7 @@ void ISPProtocol_LeaveISPMode(void)
        Endpoint_Read_Stream_LE(&Leave_ISP_Params, sizeof(Leave_ISP_Params), NO_STREAM_CALLBACK);\r
        \r
        Endpoint_ClearOUT();\r
        Endpoint_Read_Stream_LE(&Leave_ISP_Params, sizeof(Leave_ISP_Params), NO_STREAM_CALLBACK);\r
        \r
        Endpoint_ClearOUT();\r
+       Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
        /* Perform pre-exit delay, release the target /RESET, disable the SPI bus and perform the post-exit delay */\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
        /* Perform pre-exit delay, release the target /RESET, disable the SPI bus and perform the post-exit delay */\r
@@ -163,6 +165,7 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command)
        if (Write_Memory_Params.BytesToWrite > sizeof(Write_Memory_Params.ProgData))\r
        {\r
                Endpoint_ClearOUT();\r
        if (Write_Memory_Params.BytesToWrite > sizeof(Write_Memory_Params.ProgData))\r
        {\r
                Endpoint_ClearOUT();\r
+               Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
                Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
                Endpoint_Write_Byte(V2Command);\r
                Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
                Endpoint_Write_Byte(V2Command);\r
@@ -174,6 +177,7 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command)
        Endpoint_Read_Stream_LE(&Write_Memory_Params.ProgData, Write_Memory_Params.BytesToWrite, NO_STREAM_CALLBACK);\r
 \r
        Endpoint_ClearOUT();\r
        Endpoint_Read_Stream_LE(&Write_Memory_Params.ProgData, Write_Memory_Params.BytesToWrite, NO_STREAM_CALLBACK);\r
 \r
        Endpoint_ClearOUT();\r
+       Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
        uint8_t  ProgrammingStatus = STATUS_CMD_OK;     \r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
        uint8_t  ProgrammingStatus = STATUS_CMD_OK;     \r
@@ -305,6 +309,7 @@ void ISPProtocol_ReadMemory(uint8_t V2Command)
        Read_Memory_Params.BytesToRead = SwapEndian_16(Read_Memory_Params.BytesToRead);\r
        \r
        Endpoint_ClearOUT();\r
        Read_Memory_Params.BytesToRead = SwapEndian_16(Read_Memory_Params.BytesToRead);\r
        \r
        Endpoint_ClearOUT();\r
+       Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
        \r
        Endpoint_Write_Byte(V2Command);\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
        \r
        Endpoint_Write_Byte(V2Command);\r
@@ -375,6 +380,7 @@ void ISPProtocol_ChipErase(void)
        Endpoint_Read_Stream_LE(&Erase_Chip_Params, sizeof(Erase_Chip_Params), NO_STREAM_CALLBACK);\r
        \r
        Endpoint_ClearOUT();\r
        Endpoint_Read_Stream_LE(&Erase_Chip_Params, sizeof(Erase_Chip_Params), NO_STREAM_CALLBACK);\r
        \r
        Endpoint_ClearOUT();\r
+       Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
        \r
        uint8_t ResponseStatus = STATUS_CMD_OK;\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
        \r
        uint8_t ResponseStatus = STATUS_CMD_OK;\r
@@ -410,6 +416,7 @@ void ISPProtocol_ReadFuseLockSigOSCCAL(uint8_t V2Command)
        Endpoint_Read_Stream_LE(&Read_FuseLockSigOSCCAL_Params, sizeof(Read_FuseLockSigOSCCAL_Params), NO_STREAM_CALLBACK);\r
 \r
        Endpoint_ClearOUT();\r
        Endpoint_Read_Stream_LE(&Read_FuseLockSigOSCCAL_Params, sizeof(Read_FuseLockSigOSCCAL_Params), NO_STREAM_CALLBACK);\r
 \r
        Endpoint_ClearOUT();\r
+       Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
        uint8_t ResponseBytes[4];\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
        uint8_t ResponseBytes[4];\r
@@ -440,6 +447,7 @@ void ISPProtocol_WriteFuseLock(uint8_t V2Command)
        Endpoint_Read_Stream_LE(&Write_FuseLockSig_Params, sizeof(Write_FuseLockSig_Params), NO_STREAM_CALLBACK);\r
 \r
        Endpoint_ClearOUT();\r
        Endpoint_Read_Stream_LE(&Write_FuseLockSig_Params, sizeof(Write_FuseLockSig_Params), NO_STREAM_CALLBACK);\r
 \r
        Endpoint_ClearOUT();\r
+       Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
        /* Send the Fuse or Lock byte program commands as given by the host to the device */\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
        /* Send the Fuse or Lock byte program commands as given by the host to the device */\r
@@ -467,6 +475,7 @@ void ISPProtocol_SPIMulti(void)
        Endpoint_Read_Stream_LE(&SPI_Multi_Params.TxData, SPI_Multi_Params.TxBytes, NO_STREAM_CALLBACK);\r
        \r
        Endpoint_ClearOUT();\r
        Endpoint_Read_Stream_LE(&SPI_Multi_Params.TxData, SPI_Multi_Params.TxBytes, NO_STREAM_CALLBACK);\r
        \r
        Endpoint_ClearOUT();\r
+       Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
        \r
        Endpoint_Write_Byte(CMD_SPI_MULTI);\r
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
        \r
        Endpoint_Write_Byte(CMD_SPI_MULTI);\r