X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/279e1b6ece7fbc90db6cb642f1c289b45648cf9c..8e20e8697ff88d38ac01d62198dbdd552449e4aa:/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c index ffc07ad33..d34273093 100644 --- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c +++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2011. + Copyright (C) Dean Camera, 2012. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -70,8 +70,8 @@ void XPROGProtocol_SetMode(void) XPROG_SelectedProtocol = SetMode_XPROG_Params.Protocol; - Endpoint_Write_Byte(CMD_XPROG_SETMODE); - Endpoint_Write_Byte((SetMode_XPROG_Params.Protocol != XPRG_PROTOCOL_JTAG) ? STATUS_CMD_OK : STATUS_CMD_FAILED); + Endpoint_Write_8(CMD_XPROG_SETMODE); + Endpoint_Write_8((SetMode_XPROG_Params.Protocol != XPRG_PROTOCOL_JTAG) ? STATUS_CMD_OK : STATUS_CMD_FAILED); Endpoint_ClearIN(); } @@ -80,7 +80,7 @@ void XPROGProtocol_SetMode(void) */ void XPROGProtocol_Command(void) { - uint8_t XPROGCommand = Endpoint_Read_Byte(); + uint8_t XPROGCommand = Endpoint_Read_8(); switch (XPROGCommand) { @@ -122,9 +122,9 @@ static void XPROGProtocol_EnterXPROGMode(void) else if (XPROG_SelectedProtocol == XPRG_PROTOCOL_TPI) NVMBusEnabled = TINYNVM_EnableTPI(); - Endpoint_Write_Byte(CMD_XPROG); - Endpoint_Write_Byte(XPRG_CMD_ENTER_PROGMODE); - Endpoint_Write_Byte(NVMBusEnabled ? XPRG_ERR_OK : XPRG_ERR_FAILED); + Endpoint_Write_8(CMD_XPROG); + Endpoint_Write_8(XPRG_CMD_ENTER_PROGMODE); + Endpoint_Write_8(NVMBusEnabled ? XPRG_ERR_OK : XPRG_ERR_FAILED); Endpoint_ClearIN(); } @@ -143,14 +143,14 @@ static void XPROGProtocol_LeaveXPROGMode(void) TINYNVM_DisableTPI(); #if defined(XCK_RESCUE_CLOCK_ENABLE) && defined(ENABLE_ISP_PROTOCOL) - /* If the XCK rescue clock option is enabled, we need to restart it once the + /* If the XCK rescue clock option is enabled, we need to restart it once the * XPROG mode has been exited, since the XPROG protocol stops it after use. */ ISPTarget_ConfigureRescueClock(); #endif - Endpoint_Write_Byte(CMD_XPROG); - Endpoint_Write_Byte(XPRG_CMD_LEAVE_PROGMODE); - Endpoint_Write_Byte(XPRG_ERR_OK); + Endpoint_Write_8(CMD_XPROG); + Endpoint_Write_8(XPRG_CMD_LEAVE_PROGMODE); + Endpoint_Write_8(XPRG_ERR_OK); Endpoint_ClearIN(); } @@ -224,9 +224,9 @@ static void XPROGProtocol_Erase(void) ReturnStatus = XPRG_ERR_TIMEOUT; } - Endpoint_Write_Byte(CMD_XPROG); - Endpoint_Write_Byte(XPRG_CMD_ERASE); - Endpoint_Write_Byte(ReturnStatus); + Endpoint_Write_8(CMD_XPROG); + Endpoint_Write_8(XPRG_CMD_ERASE); + Endpoint_Write_8(ReturnStatus); Endpoint_ClearIN(); } @@ -258,7 +258,7 @@ static void XPROGProtocol_WriteMemory(void) Endpoint_ClearOUT(); Endpoint_WaitUntilReady(); } - + Endpoint_ClearOUT(); Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM); Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN); @@ -317,9 +317,9 @@ static void XPROGProtocol_WriteMemory(void) } } - Endpoint_Write_Byte(CMD_XPROG); - Endpoint_Write_Byte(XPRG_CMD_WRITE_MEM); - Endpoint_Write_Byte(ReturnStatus); + Endpoint_Write_8(CMD_XPROG); + Endpoint_Write_8(XPRG_CMD_WRITE_MEM); + Endpoint_Write_8(ReturnStatus); Endpoint_ClearIN(); } @@ -360,9 +360,9 @@ static void XPROGProtocol_ReadMemory(void) ReturnStatus = XPRG_ERR_TIMEOUT; } - Endpoint_Write_Byte(CMD_XPROG); - Endpoint_Write_Byte(XPRG_CMD_READ_MEM); - Endpoint_Write_Byte(ReturnStatus); + Endpoint_Write_8(CMD_XPROG); + Endpoint_Write_8(XPRG_CMD_READ_MEM); + Endpoint_Write_8(ReturnStatus); if (ReturnStatus == XPRG_ERR_OK) Endpoint_Write_Stream_LE(ReadBuffer, ReadMemory_XPROG_Params.Length, NULL); @@ -418,14 +418,14 @@ static void XPROGProtocol_ReadCRC(void) ReturnStatus = XPRG_ERR_FAILED; } - Endpoint_Write_Byte(CMD_XPROG); - Endpoint_Write_Byte(XPRG_CMD_CRC); - Endpoint_Write_Byte(ReturnStatus); + Endpoint_Write_8(CMD_XPROG); + Endpoint_Write_8(XPRG_CMD_CRC); + Endpoint_Write_8(ReturnStatus); if (ReturnStatus == XPRG_ERR_OK) { - Endpoint_Write_Byte(MemoryCRC >> 16); - Endpoint_Write_Word_LE(MemoryCRC & 0xFFFF); + Endpoint_Write_8(MemoryCRC >> 16); + Endpoint_Write_16_LE(MemoryCRC & 0xFFFF); } Endpoint_ClearIN(); @@ -438,22 +438,28 @@ static void XPROGProtocol_SetParam(void) { uint8_t ReturnStatus = XPRG_ERR_OK; - uint8_t XPROGParam = Endpoint_Read_Byte(); + uint8_t XPROGParam = Endpoint_Read_8(); /* Determine which parameter is being set, store the new parameter value */ switch (XPROGParam) { case XPRG_PARAM_NVMBASE: - XPROG_Param_NVMBase = Endpoint_Read_DWord_BE(); + XPROG_Param_NVMBase = Endpoint_Read_32_BE(); break; case XPRG_PARAM_EEPPAGESIZE: - XPROG_Param_EEPageSize = Endpoint_Read_Word_BE(); + XPROG_Param_EEPageSize = Endpoint_Read_16_BE(); break; case XPRG_PARAM_NVMCMD_REG: - XPROG_Param_NVMCMDRegAddr = Endpoint_Read_Byte(); + XPROG_Param_NVMCMDRegAddr = Endpoint_Read_8(); break; case XPRG_PARAM_NVMCSR_REG: - XPROG_Param_NVMCSRRegAddr = Endpoint_Read_Byte(); + XPROG_Param_NVMCSRRegAddr = Endpoint_Read_8(); + break; + case XPRG_PARAM_UNKNOWN_1: + /* TODO: Undocumented parameter added in AVRStudio 5.1, purpose unknown. Must ACK and discard or + the communication with AVRStudio 5.1 will fail. + */ + Endpoint_Discard_16(); break; default: ReturnStatus = XPRG_ERR_FAILED; @@ -464,9 +470,9 @@ static void XPROGProtocol_SetParam(void) Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM); Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN); - Endpoint_Write_Byte(CMD_XPROG); - Endpoint_Write_Byte(XPRG_CMD_SET_PARAM); - Endpoint_Write_Byte(ReturnStatus); + Endpoint_Write_8(CMD_XPROG); + Endpoint_Write_8(XPRG_CMD_SET_PARAM); + Endpoint_Write_8(ReturnStatus); Endpoint_ClearIN(); }