forked from PAWPAW-Mirror/lib_xua
newDFUState always assigned to. Caused windows DFU issues since it sends extra requests.
This commit is contained in:
@@ -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():
|
||||||
|
|||||||
Reference in New Issue
Block a user