aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/px4io/px4io_uploader.cpp
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2013-08-28 09:14:38 +0200
committerLorenz Meier <lm@inf.ethz.ch>2013-08-28 09:14:38 +0200
commitd28f5ac03fc9e73cf26c8afa1ed701ca5af0df08 (patch)
tree56f14d6279ae23d6ce08eaf093ec85b212b114f6 /src/drivers/px4io/px4io_uploader.cpp
parent66c61fbe96e11ee7099431a8370d84f862543810 (diff)
downloadpx4-firmware-d28f5ac03fc9e73cf26c8afa1ed701ca5af0df08.tar.gz
px4-firmware-d28f5ac03fc9e73cf26c8afa1ed701ca5af0df08.tar.bz2
px4-firmware-d28f5ac03fc9e73cf26c8afa1ed701ca5af0df08.zip
Updated IO firmware upgrade strategy and locations
Diffstat (limited to 'src/drivers/px4io/px4io_uploader.cpp')
-rw-r--r--src/drivers/px4io/px4io_uploader.cpp41
1 files changed, 21 insertions, 20 deletions
diff --git a/src/drivers/px4io/px4io_uploader.cpp b/src/drivers/px4io/px4io_uploader.cpp
index c7ce60b5e..7db28ecad 100644
--- a/src/drivers/px4io/px4io_uploader.cpp
+++ b/src/drivers/px4io/px4io_uploader.cpp
@@ -82,6 +82,27 @@ PX4IO_Uploader::upload(const char *filenames[])
#error Must define PX4IO_SERIAL_DEVICE in board configuration to support firmware upload
#endif
+ /* allow an early abort and look for file first */
+ for (unsigned i = 0; filenames[i] != nullptr; i++) {
+ _fw_fd = open(filenames[i], O_RDONLY);
+
+ if (_fw_fd < 0) {
+ log("failed to open %s", filenames[i]);
+ continue;
+ }
+
+ log("using firmware from %s", filenames[i]);
+ filename = filenames[i];
+ break;
+ }
+
+ if (filename == NULL) {
+ log("no firmware found");
+ close(_io_fd);
+ _io_fd = -1;
+ return -ENOENT;
+ }
+
_io_fd = open(PX4IO_SERIAL_DEVICE, O_RDWR);
if (_io_fd < 0) {
@@ -106,26 +127,6 @@ PX4IO_Uploader::upload(const char *filenames[])
return -EIO;
}
- for (unsigned i = 0; filenames[i] != nullptr; i++) {
- _fw_fd = open(filenames[i], O_RDONLY);
-
- if (_fw_fd < 0) {
- log("failed to open %s", filenames[i]);
- continue;
- }
-
- log("using firmware from %s", filenames[i]);
- filename = filenames[i];
- break;
- }
-
- if (filename == NULL) {
- log("no firmware found");
- close(_io_fd);
- _io_fd = -1;
- return -ENOENT;
- }
-
struct stat st;
if (stat(filename, &st) != 0) {
log("Failed to stat %s - %d\n", filename, (int)errno);