}
\r
static void V2Protocol_Command_Unknown(uint8_t V2Command)\r
-{ \r
+{\r
+ /* Discard all incomming data */\r
while (Endpoint_BytesInEndpoint() == AVRISP_DATA_EPSIZE)\r
{\r
Endpoint_ClearOUT();\r
- while (!(Endpoint_IsOUTReceived()));\r
+ Endpoint_WaitUntilReady();\r
}\r
\r
Endpoint_ClearOUT();\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
+ Endpoint_WaitUntilReady();\r
\r
Endpoint_Write_Byte(V2Command);\r
Endpoint_Write_Byte(STATUS_CMD_UNKNOWN);\r
\r
static void V2Protocol_Command_SPIMulti(void)\r
{\r
- uint8_t TxBytes = Endpoint_Read_Byte();\r
- uint8_t RxBytes = Endpoint_Read_Byte();\r
+ uint8_t TxBytes = Endpoint_Read_Byte();\r
+ uint8_t RxBytes = Endpoint_Read_Byte();\r
uint8_t RxStartAddr = Endpoint_Read_Byte();\r
uint8_t TxData[255];\r
\r
uint8_t CurrTxPos = 0;\r
uint8_t CurrRxPos = 0;\r
\r
+ /* Write out bytes to transmit until the start of the bytes to receive is met */\r
while (CurrTxPos < RxStartAddr)\r
{\r
if (CurrTxPos < TxBytes)\r
CurrTxPos++;\r
}\r
\r
+ /* Transmit remaining bytes with padding as needed, read in response bytes */\r
while (CurrRxPos < RxBytes)\r
{\r
if (CurrTxPos < TxBytes)\r