/*\r
LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
+ Copyright (C) Dean Camera, 2010.\r
\r
dean [at] fourwalledcubicle [dot] com\r
www.fourwalledcubicle.com\r
*/\r
\r
/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
\r
Permission to use, copy, modify, distribute, and sell this \r
software and its documentation for any purpose is hereby granted\r
TimeoutMSRemaining--;\r
}\r
\r
+/** Initializes the hardware and software associated with the V2 protocol command handling. */\r
+void V2Protocol_Init(void)\r
+{\r
+ #if defined(ADC)\r
+ /* Initialize the ADC converter for VTARGET level detection on supported AVR models */\r
+ ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_128);\r
+ ADC_SetupChannel(VTARGET_ADC_CHANNEL);\r
+ ADC_StartReading(VTARGET_ADC_CHANNEL | ADC_RIGHT_ADJUSTED | ADC_REFERENCE_AVCC);\r
+ #endif\r
+ \r
+ /* Millisecond timer initialization for managing the command timeout counter */\r
+ OCR0A = ((F_CPU / 64) / 1000);\r
+ TCCR0A = (1 << WGM01);\r
+ TCCR0B = ((1 << CS01) | (1 << CS00));\r
+ \r
+ V2Params_LoadNonVolatileParamValues();\r
+}\r
+\r
/** Master V2 Protocol packet handler, for received V2 Protocol packets from a connected host.\r
* This routine decodes the issued command and passes off the handling of the command to the\r
* appropriate function.\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
break;\r
}\r
\r
+ /* Disable timeout management interrupt once processing has completed */\r
TIMSK0 &= ~(1 << OCIE0A);\r
\r
Endpoint_WaitUntilReady();\r
Endpoint_Write_Byte(CMD_SIGN_ON);\r
Endpoint_Write_Byte(STATUS_CMD_OK);\r
Endpoint_Write_Byte(sizeof(PROGRAMMER_ID) - 1);\r
- Endpoint_Write_Stream_LE(PROGRAMMER_ID, (sizeof(PROGRAMMER_ID) - 1));\r
+ Endpoint_Write_Stream_LE(PROGRAMMER_ID, (sizeof(PROGRAMMER_ID) - 1), NO_STREAM_CALLBACK);\r
Endpoint_ClearIN();\r
}\r
\r
-/** Handler for the CMD_RESET_PROTECTION command, currently implemented as a dummy ACK function\r
- * as no ISP short-circuit protection is currently implemented.\r
+/** Handler for the CMD_RESET_PROTECTION command, implemented as a dummy ACK function as\r
+ * no target short-circuit protection is currently implemented.\r
*/\r
static void V2Protocol_ResetProtection(void)\r
{\r
*/\r
static void V2Protocol_LoadAddress(void)\r
{\r
- Endpoint_Read_Stream_BE(&CurrentAddress, sizeof(CurrentAddress));\r
+ Endpoint_Read_Stream_BE(&CurrentAddress, sizeof(CurrentAddress), NO_STREAM_CALLBACK);\r
\r
Endpoint_ClearOUT();\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r