diff --git a/src/fw_downloader/fw_downloader.cpp b/src/fw_downloader/fw_downloader.cpp index 633665f1968f1274f43fbc717f5020c7f1d5799f..2c08f8bed5fb1bc2ee5c12432f64fd38d0baa377 100755 --- a/src/fw_downloader/fw_downloader.cpp +++ b/src/fw_downloader/fw_downloader.cpp @@ -127,7 +127,8 @@ int main(int argc,char *argv[]) while(!bootloader_connected) { try{ - event_server->wait_all(events,20); + if((num_data=serial_port.get_num_data()==0)) + event_server->wait_all(events,20); num_data=serial_port.get_num_data(); serial_port.read((unsigned char *)bootloader_data,num_data); bootloader_data[num_data]='\0'; @@ -166,7 +167,8 @@ int main(int argc,char *argv[]) while(!end) { try{ - event_server->wait_all(events,300); + if((num_data=serial_port.get_num_data()==0)) + event_server->wait_all(events,300); num_data=serial_port.get_num_data(); serial_port.read(bootloader_data,num_data); bootloader_data[num_data]='\0'; @@ -179,6 +181,7 @@ int main(int argc,char *argv[]) } end=false; } + sleep(1); // start the download serial_port.write((unsigned char *)&bootloader_load,1); if(protocol==new_protocol) @@ -186,7 +189,8 @@ int main(int argc,char *argv[]) while(!end) { try{ - event_server->wait_all(events,300); + if((num_data=serial_port.get_num_data()==0)) + event_server->wait_all(events,300); num_data=serial_port.get_num_data(); serial_port.read(bootloader_data,num_data); bootloader_data[num_data]='\0'; @@ -212,6 +216,7 @@ int main(int argc,char *argv[]) printf("\rDownloading Firmware (%ld/%ld byte)", downloaded_size, binary_size); fflush(stdout); } + usleep(1000); // send the checksum serial_port.write(&checksum,1); std::cout << std::endl << "Download complete" << std::endl; @@ -219,7 +224,8 @@ int main(int argc,char *argv[]) while(!end) { try{ - event_server->wait_all(events,300); + if((num_data=serial_port.get_num_data()==0)) + event_server->wait_all(events,300); // there has been an error num_data=serial_port.get_num_data(); serial_port.read(bootloader_data,num_data);