diff --git a/ground/src/experimental/USB_UPLOAD_TOOL/main.cpp b/ground/src/experimental/USB_UPLOAD_TOOL/main.cpp index 47c7c8982..dc74e2ed6 100644 --- a/ground/src/experimental/USB_UPLOAD_TOOL/main.cpp +++ b/ground/src/experimental/USB_UPLOAD_TOOL/main.cpp @@ -93,13 +93,13 @@ int main(int argc, char *argv[]) } } - else if(args.contains(COMPAREHASH) || args.contains(COMPAREALL)) + else if(args.contains(COMPARECRC) || args.contains(COMPAREALL)) { int index; - if(args.contains(COMPAREHASH)) + if(args.contains(COMPARECRC)) { - index=args.indexOf(COMPAREHASH); - action=OP_DFU::actionCompareHash; + index=args.indexOf(COMPARECRC); + action=OP_DFU::actionCompareCrc; } else { @@ -218,6 +218,8 @@ int main(int argc, char *argv[]) cout<<"Error:Invalid Device"; return -1; } +// if(dfu.numberOfDevices==1) +// dfu.use_delay=false; if(!dfu.enterDFU(device)) { cout<<"Error:Could not enter DFU mode\n"; @@ -225,6 +227,12 @@ int main(int argc, char *argv[]) } if (action==OP_DFU::actionProgram) { + if(((OP_DFU::device)dfu.devices[device]).Writable==false) + { + cout<<"ERROR device not Writable\n"; + return false; + } + OP_DFU::Status retstatus=dfu.UploadFirmware(file.toAscii(),verify, device); if(retstatus!=OP_DFU::Last_operation_Success) { @@ -244,23 +252,28 @@ int main(int argc, char *argv[]) } else if (action==OP_DFU::actionDownload) { + if(((OP_DFU::device)dfu.devices[device]).Readable==false) + { + cout<<"ERROR device not readable\n"; + return false; + } qint32 size=((OP_DFU::device)dfu.devices[device]).SizeOfCode; bool ret=dfu.SaveByteArrayToFile(file.toAscii(),dfu.StartDownload(size,OP_DFU::FW)); return ret; } - // else if(action==OP_DFU::downdesc) - // { - // int size=((OP_DFU::device)dfu.devices[device]).SizeOfDesc; - // cout<<"Description:"< devices; int numberOfDevices; QString StatusToString(OP_DFU::Status const & status); - OP_DFU::Status CompareFirmware(const QString &sfile, const CompareType &type); + OP_DFU::Status CompareFirmware(const QString &sfile, const CompareType &type,int device); quint32 CRC32WideFast(quint32 Crc, quint32 Size, quint32 *Buffer); quint32 CRCFromQBArray(QByteArray array, quint32 Size); void test(); int send_delay; + bool use_delay; private: bool debug; int RWFlags;