|
|
|
@ -39,6 +39,7 @@
@@ -39,6 +39,7 @@
|
|
|
|
|
#include <nuttx/config.h> |
|
|
|
|
|
|
|
|
|
#include <sys/types.h> |
|
|
|
|
#include <stdlib.h> |
|
|
|
|
#include <stdint.h> |
|
|
|
|
#include <stdbool.h> |
|
|
|
|
#include <assert.h> |
|
|
|
@ -413,11 +414,17 @@ static int read_with_retry(int fd, void *buf, size_t n)
@@ -413,11 +414,17 @@ static int read_with_retry(int fd, void *buf, size_t n)
|
|
|
|
|
int |
|
|
|
|
PX4IO_Uploader::program(size_t fw_size) |
|
|
|
|
{ |
|
|
|
|
uint8_t file_buf[PROG_MULTI_MAX]; |
|
|
|
|
uint8_t *file_buf; |
|
|
|
|
ssize_t count; |
|
|
|
|
int ret; |
|
|
|
|
size_t sent = 0; |
|
|
|
|
|
|
|
|
|
file_buf = (uint8_t *)malloc(PROG_MULTI_MAX); |
|
|
|
|
if (!file_buf) { |
|
|
|
|
log("Can't allocate program buffer"); |
|
|
|
|
return -ENOMEM; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
log("programming %u bytes...", (unsigned)fw_size); |
|
|
|
|
|
|
|
|
|
ret = lseek(_fw_fd, 0, SEEK_SET); |
|
|
|
@ -438,8 +445,10 @@ PX4IO_Uploader::program(size_t fw_size)
@@ -438,8 +445,10 @@ PX4IO_Uploader::program(size_t fw_size)
|
|
|
|
|
(int)errno); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (count == 0) |
|
|
|
|
if (count == 0) { |
|
|
|
|
free(file_buf); |
|
|
|
|
return OK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
sent += count; |
|
|
|
|
|
|
|
|
@ -455,9 +464,12 @@ PX4IO_Uploader::program(size_t fw_size)
@@ -455,9 +464,12 @@ PX4IO_Uploader::program(size_t fw_size)
|
|
|
|
|
|
|
|
|
|
ret = get_sync(1000); |
|
|
|
|
|
|
|
|
|
if (ret != OK) |
|
|
|
|
if (ret != OK) { |
|
|
|
|
free(file_buf); |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
free(file_buf); |
|
|
|
|
return OK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|