aboutsummaryrefslogtreecommitdiffstats
path: root/Projects/AVRISP/Lib/V2Protocol.c
diff options
context:
space:
mode:
Diffstat (limited to 'Projects/AVRISP/Lib/V2Protocol.c')
-rw-r--r--Projects/AVRISP/Lib/V2Protocol.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/Projects/AVRISP/Lib/V2Protocol.c b/Projects/AVRISP/Lib/V2Protocol.c
index 4f7904a21..4fcb5aa00 100644
--- a/Projects/AVRISP/Lib/V2Protocol.c
+++ b/Projects/AVRISP/Lib/V2Protocol.c
@@ -43,6 +43,13 @@ uint32_t CurrentAddress;
bool MustSetAddress;
+/** ISR for the management of the command execution timeout counter */
+ISR(TIMER0_COMPA_vect, ISR_BLOCK)
+{
+ if (TimeoutMSRemaining)
+ TimeoutMSRemaining--;
+}
+
/** Master V2 Protocol packet handler, for received V2 Protocol packets from a connected host.
* This routine decodes the issued command and passes off the handling of the command to the
* appropriate function.
@@ -51,6 +58,9 @@ void V2Protocol_ProcessCommand(void)
{
uint8_t V2Command = Endpoint_Read_Byte();
+ TimeoutMSRemaining = COMMAND_TIMEOUT_MS;
+ TIMSK0 |= (1 << OCIE0A);
+
switch (V2Command)
{
case CMD_SIGN_ON:
@@ -110,7 +120,9 @@ void V2Protocol_ProcessCommand(void)
V2Protocol_UnknownCommand(V2Command);
break;
}
-
+
+ TIMSK0 &= ~(1 << OCIE0A);
+
Endpoint_WaitUntilReady();
Endpoint_SetEndpointDirection(ENDPOINT_DIR_OUT);
}