/** Flag to indicate that the next read/write operation must update the device's current address */\r
 bool MustSetAddress;\r
 \r
-\r
-/** ISR for the management of the command execution timeout counter */\r
-ISR(TIMER0_COMPA_vect, ISR_BLOCK)\r
-{\r
-       if (TimeoutMSRemaining)\r
-         TimeoutMSRemaining--;\r
-}\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
-       /* Set total command processing timeout value, enable timeout management interrupt */\r
        TimeoutMSRemaining = COMMAND_TIMEOUT_MS;\r
-       TIMSK0 |= (1 << OCIE0A);\r
-\r
+       \r
        switch (V2Command)\r
        {\r
                case CMD_SIGN_ON:\r
                        V2Protocol_UnknownCommand(V2Command);\r
                        break;\r
        }\r
-               \r
-       /* Disable timeout management interrupt once processing has completed */\r
-       TIMSK0 &= ~(1 << OCIE0A);\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