projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed Set/Clear Feature requests directed to a non-configured endpoint not returning...
[pub/USBasp.git]
/
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
07dce50
..
cc521ce
100644
(file)
--- a/
Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
+++ b/
Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
@@
-65,6
+65,7
@@
void XPROGProtocol_SetMode(void)
Endpoint_Read_Stream_LE(&SetMode_XPROG_Params, sizeof(SetMode_XPROG_Params), NO_STREAM_CALLBACK);
\r
\r
Endpoint_ClearOUT();
\r
Endpoint_Read_Stream_LE(&SetMode_XPROG_Params, sizeof(SetMode_XPROG_Params), NO_STREAM_CALLBACK);
\r
\r
Endpoint_ClearOUT();
\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
XPROG_SelectedProtocol = SetMode_XPROG_Params.Protocol;
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
XPROG_SelectedProtocol = SetMode_XPROG_Params.Protocol;
\r
@@
-111,6
+112,7
@@
void XPROGProtocol_Command(void)
static void XPROGProtocol_EnterXPROGMode(void)
\r
{
\r
Endpoint_ClearOUT();
\r
static void XPROGProtocol_EnterXPROGMode(void)
\r
{
\r
Endpoint_ClearOUT();
\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
bool NVMBusEnabled;
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
bool NVMBusEnabled;
\r
@@
-166,6
+168,7
@@
static void XPROGProtocol_EnterXPROGMode(void)
static void XPROGProtocol_LeaveXPROGMode(void)
\r
{
\r
Endpoint_ClearOUT();
\r
static void XPROGProtocol_LeaveXPROGMode(void)
\r
{
\r
Endpoint_ClearOUT();
\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
if (XPROG_SelectedProtocol == XPRG_PROTOCOL_PDI)
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
if (XPROG_SelectedProtocol == XPRG_PROTOCOL_PDI)
\r
@@
-176,6
+179,10
@@
static void XPROGProtocol_LeaveXPROGMode(void)
XPROGTarget_SendByte(PDI_CMD_STCS | PDI_RESET_REG);
\r
XPROGTarget_SendByte(0x00);
\r
\r
XPROGTarget_SendByte(PDI_CMD_STCS | PDI_RESET_REG);
\r
XPROGTarget_SendByte(0x00);
\r
\r
+ /* Do it twice to make sure it takes affect (silicon bug?) */
\r
+ XPROGTarget_SendByte(PDI_CMD_STCS | PDI_RESET_REG);
\r
+ XPROGTarget_SendByte(0x00);
\r
+
\r
XPROGTarget_DisableTargetPDI();
\r
}
\r
else
\r
XPROGTarget_DisableTargetPDI();
\r
}
\r
else
\r
@@
-210,6
+217,7
@@
static void XPROGProtocol_Erase(void)
Erase_XPROG_Params.Address = SwapEndian_32(Erase_XPROG_Params.Address);
\r
\r
Endpoint_ClearOUT();
\r
Erase_XPROG_Params.Address = SwapEndian_32(Erase_XPROG_Params.Address);
\r
\r
Endpoint_ClearOUT();
\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
uint8_t EraseCommand;
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
uint8_t EraseCommand;
\r
@@
-291,6
+299,7
@@
static void XPROGProtocol_WriteMemory(void)
Endpoint_Read_Stream_LE(&WriteMemory_XPROG_Params.ProgData, WriteMemory_XPROG_Params.Length, NO_STREAM_CALLBACK);
\r
\r
Endpoint_ClearOUT();
\r
Endpoint_Read_Stream_LE(&WriteMemory_XPROG_Params.ProgData, WriteMemory_XPROG_Params.Length, NO_STREAM_CALLBACK);
\r
\r
Endpoint_ClearOUT();
\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
if (XPROG_SelectedProtocol == XPRG_PROTOCOL_PDI)
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
if (XPROG_SelectedProtocol == XPRG_PROTOCOL_PDI)
\r
@@
-374,6
+383,7
@@
static void XPROGProtocol_ReadMemory(void)
ReadMemory_XPROG_Params.Length = SwapEndian_16(ReadMemory_XPROG_Params.Length);
\r
\r
Endpoint_ClearOUT();
\r
ReadMemory_XPROG_Params.Length = SwapEndian_16(ReadMemory_XPROG_Params.Length);
\r
\r
Endpoint_ClearOUT();
\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
uint8_t ReadBuffer[256];
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
uint8_t ReadBuffer[256];
\r
@@
-416,6
+426,7
@@
static void XPROGProtocol_ReadCRC(void)
Endpoint_Read_Stream_LE(&ReadCRC_XPROG_Params, sizeof(ReadCRC_XPROG_Params), NO_STREAM_CALLBACK);
\r
\r
Endpoint_ClearOUT();
\r
Endpoint_Read_Stream_LE(&ReadCRC_XPROG_Params, sizeof(ReadCRC_XPROG_Params), NO_STREAM_CALLBACK);
\r
\r
Endpoint_ClearOUT();
\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
uint32_t MemoryCRC;
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
uint32_t MemoryCRC;
\r
@@
-491,6
+502,7
@@
static void XPROGProtocol_SetParam(void)
}
\r
\r
Endpoint_ClearOUT();
\r
}
\r
\r
Endpoint_ClearOUT();
\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
Endpoint_Write_Byte(CMD_XPROG);
\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
\r
\r
Endpoint_Write_Byte(CMD_XPROG);
\r