/** Flag to indicate that the next read/write operation must update the device's current address */\r
bool MustSetAddress;\r
\r
-bool CommandTimedOut;\r
-\r
/** Initializes the hardware and software associated with the V2 protocol command handling. */\r
void V2Protocol_Init(void)\r
{\r
{\r
uint8_t V2Command = Endpoint_Read_Byte();\r
\r
- CommandTimedOut = false;\r
+ TimeoutMSRemaining = COMMAND_TIMEOUT_MS;\r
\r
switch (V2Command)\r
{\r
}\r
\r
Endpoint_WaitUntilReady();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_OUT_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_OUT);\r
}\r
\r
}\r
\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
Endpoint_Write_Byte(V2Command);\r
static void V2Protocol_SignOn(void)\r
{\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
Endpoint_Write_Byte(CMD_SIGN_ON);\r
static void V2Protocol_ResetProtection(void)\r
{\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
Endpoint_Write_Byte(CMD_RESET_PROTECTION);\r
ParamValue = Endpoint_Read_Byte();\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_Read_Stream_BE(&CurrentAddress, sizeof(CurrentAddress), NO_STREAM_CALLBACK);\r
\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
MustSetAddress = true;\r