newDFUState always assigned to. Caused windows DFU issues since it sends extra requests.

This commit is contained in:
Ross Owen
2015-06-23 16:14:15 +01:00
parent 346f5a704f
commit 23b325a89f

View File

@@ -417,7 +417,7 @@ void DFUHandler(server interface i_dfu i, chanend ?c_user_cmd)
reset_device_after_ack = 0; reset_device_after_ack = 0;
return_data_len = 0; return_data_len = 0;
dfu_reset_override = 0; dfu_reset_override = 0;
unsigned tmpDfuState; unsigned tmpDfuState = dfuState;
returnVal = 0; returnVal = 0;
// Map Standard DFU commands onto device level firmware upgrade mechanism // Map Standard DFU commands onto device level firmware upgrade mechanism
@@ -433,49 +433,36 @@ void DFUHandler(server interface i_dfu i, chanend ?c_user_cmd)
unsigned data[16]; unsigned data[16];
for(int i = 0; i < 16; i++) for(int i = 0; i < 16; i++)
data[i] = data_buffer[i]; data[i] = data_buffer[i];
tmpDfuState = dfuState;
returnVal = DFU_Dnload(sp.wLength, sp.wValue, data, c_user_cmd, return_data_len, tmpDfuState); returnVal = DFU_Dnload(sp.wLength, sp.wValue, data, c_user_cmd, return_data_len, tmpDfuState);
newDfuState = tmpDfuState;
break; break;
case DFU_UPLOAD: case DFU_UPLOAD:
unsigned data_out[16]; unsigned data_out[16];
tmpDfuState = dfuState;
return_data_len = DFU_Upload(sp.wLength, sp.wValue, data_out, tmpDfuState); return_data_len = DFU_Upload(sp.wLength, sp.wValue, data_out, tmpDfuState);
newDfuState = tmpDfuState;
for(int i = 0; i < 16; i++) for(int i = 0; i < 16; i++)
data_buffer[i] = data_out[i]; data_buffer[i] = data_out[i];
break; break;
case DFU_GETSTATUS: case DFU_GETSTATUS:
unsigned data_out[16]; unsigned data_out[16];
tmpDfuState = dfuState;
return_data_len = DFU_GetStatus(sp.wLength, data_out, c_user_cmd, tmpDfuState); return_data_len = DFU_GetStatus(sp.wLength, data_out, c_user_cmd, tmpDfuState);
newDfuState = tmpDfuState;
for(int i = 0; i < 16; i++) for(int i = 0; i < 16; i++)
data_buffer[i] = data_out[i]; data_buffer[i] = data_out[i];
break; break;
case DFU_CLRSTATUS: case DFU_CLRSTATUS:
tmpDfuState = dfuState;
return_data_len = DFU_ClrStatus(tmpDfuState); return_data_len = DFU_ClrStatus(tmpDfuState);
newDfuState = tmpDfuState;
break; break;
case DFU_GETSTATE: case DFU_GETSTATE:
unsigned data_out[16]; unsigned data_out[16];
tmpDfuState = dfuState;
return_data_len = DFU_GetState(sp.wLength, data_out, c_user_cmd, tmpDfuState); return_data_len = DFU_GetState(sp.wLength, data_out, c_user_cmd, tmpDfuState);
newDfuState = tmpDfuState;
for(int i = 0; i < 16; i++) for(int i = 0; i < 16; i++)
data_buffer[i] = data_out[i]; data_buffer[i] = data_out[i];
break; break;
case DFU_ABORT: case DFU_ABORT:
tmpDfuState = dfuState;
return_data_len = DFU_Abort(tmpDfuState); return_data_len = DFU_Abort(tmpDfuState);
newDfuState = tmpDfuState;
break; break;
/* XMOS Custom DFU requests */ /* XMOS Custom DFU requests */
@@ -517,6 +504,7 @@ void DFUHandler(server interface i_dfu i, chanend ?c_user_cmd)
default: default:
break; break;
} }
newDfuState = tmpDfuState;
break; break;
case i.finish(): case i.finish():