diff options
Diffstat (limited to 'Projects/Unfinished/AVRISP')
-rw-r--r-- | Projects/Unfinished/AVRISP/Lib/V2Protocol.c | 20 | ||||
-rw-r--r-- | Projects/Unfinished/AVRISP/Lib/V2Protocol.h | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/Projects/Unfinished/AVRISP/Lib/V2Protocol.c b/Projects/Unfinished/AVRISP/Lib/V2Protocol.c index dfa27ad9e..e55a7002e 100644 --- a/Projects/Unfinished/AVRISP/Lib/V2Protocol.c +++ b/Projects/Unfinished/AVRISP/Lib/V2Protocol.c @@ -36,6 +36,9 @@ #define INCLUDE_FROM_V2PROTOCOL_C
#include "V2Protocol.h"
+uint32_t CurrentAddress;
+
+
/* Table of masks for SPI_Init() from a given PARAM_SCK_DURATION value */
static const uint8_t SPIMaskFromSCKDuration[MAX_SPI_SETTINGS] =
{
@@ -88,6 +91,9 @@ void V2Protocol_ProcessCommand(void) case CMD_GET_PARAMETER:
V2Protocol_Command_GetSetParam(V2Command);
break;
+ case CMD_LOAD_ADDRESS:
+ V2Protocol_Command_LoadAddress();
+ break;
case CMD_SPI_MULTI:
V2Protocol_Command_SPIMulti();
break;
@@ -127,6 +133,7 @@ static void V2Protocol_Command_SignOn(void) Endpoint_WaitUntilReady();
V2Protocol_ReconfigureSPI();
+ CurrentAddress = 0;
Endpoint_Write_Byte(CMD_SIGN_ON);
Endpoint_Write_Byte(STATUS_CMD_OK);
@@ -166,6 +173,19 @@ static void V2Protocol_Command_GetSetParam(uint8_t V2Command) Endpoint_ClearIN();
}
+static void V2Protocol_Command_LoadAddress(void)
+{
+ CurrentAddress = Endpoint_Read_DWord_LE();
+
+ Endpoint_ClearOUT();
+ Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
+ Endpoint_WaitUntilReady();
+
+ Endpoint_Write_Byte(CMD_LOAD_ADDRESS);
+ Endpoint_Write_Byte(STATUS_CMD_OK);
+ Endpoint_ClearIN();
+}
+
static void V2Protocol_Command_SPIMulti(void)
{
uint8_t TxBytes = Endpoint_Read_Byte();
diff --git a/Projects/Unfinished/AVRISP/Lib/V2Protocol.h b/Projects/Unfinished/AVRISP/Lib/V2Protocol.h index 03ca83536..5283f1986 100644 --- a/Projects/Unfinished/AVRISP/Lib/V2Protocol.h +++ b/Projects/Unfinished/AVRISP/Lib/V2Protocol.h @@ -62,6 +62,7 @@ static void V2Protocol_Command_Unknown(uint8_t V2Command);
static void V2Protocol_Command_SignOn(void);
static void V2Protocol_Command_GetSetParam(uint8_t V2Command);
+ static void V2Protocol_Command_LoadAddress(void);
static void V2Protocol_Command_SPIMulti(void);
#endif |