diff --git a/support/stmloader/Makefile b/support/stmloader/Makefile index 6782ed952..936fa697a 100644 --- a/support/stmloader/Makefile +++ b/support/stmloader/Makefile @@ -11,4 +11,4 @@ all: -Wall clean: - rm -f stmloader + rm -f stmloader; rm -rf stmloader.dSYM diff --git a/support/stmloader/loader.c b/support/stmloader/loader.c index e5d6aee34..90da60b4f 100644 --- a/support/stmloader/loader.c +++ b/support/stmloader/loader.c @@ -35,10 +35,11 @@ serialStruct_t *s; char port[256]; unsigned int baud; unsigned char overrideParity; +unsigned char noSendR; char firmFile[256]; void loaderUsage(void) { - fprintf(stderr, "usage: loader <-h> <-p device_file> <-b baud_rate> <-f firmware_file> <-o>\n"); + fprintf(stderr, "usage: loader <-h> <-p device_file> <-b baud_rate> <-f firmware_file> <-o> <-n>\n"); } unsigned int loaderOptions(int argc, char **argv) { @@ -47,16 +48,18 @@ unsigned int loaderOptions(int argc, char **argv) { strncpy(port, DEFAULT_PORT, sizeof(port)); baud = DEFAULT_BAUD; overrideParity = 0; + noSendR = 0; strncpy(firmFile, FIRMWARE_FILENAME, sizeof(firmFile)); /* options descriptor */ static struct option longopts[] = { - { "help", required_argument, NULL, 'h' }, - { "port", required_argument, NULL, 'p' }, - { "baud", required_argument, NULL, 's' }, - { "firm_file", required_argument, NULL, 'f' }, - { "overide_party",no_argument, NULL, 'o' }, - { NULL, 0, NULL, 0 } + { "help", required_argument, NULL, 'h' }, + { "port", required_argument, NULL, 'p' }, + { "baud", required_argument, NULL, 's' }, + { "firm_file", required_argument, NULL, 'f' }, + { "override_parity", no_argument, NULL, 'o' }, + { "no_send_r", no_argument, NULL, 'n' }, + { NULL, 0, NULL, 0 } }; while ((ch = getopt_long(argc, argv, "hp:b:f:o", longopts, NULL)) != -1) @@ -77,6 +80,9 @@ unsigned int loaderOptions(int argc, char **argv) { case 'o': overrideParity = 1; break; + case 'n': + noSendR = 1; + break; default: loaderUsage(); return 0; @@ -109,7 +115,7 @@ int main(int argc, char **argv) { } else { printf("Upgrading STM on port %s from %s...\n", port, firmFile); - stmLoader(s, fw, overrideParity); + stmLoader(s, fw, overrideParity, noSendR); } return 0; diff --git a/support/stmloader/stmbootloader.c b/support/stmloader/stmbootloader.c index 75fd18785..e28af4c9b 100644 --- a/support/stmloader/stmbootloader.c +++ b/support/stmloader/stmbootloader.c @@ -175,7 +175,7 @@ char *stmHexLoader(serialStruct_t *s, FILE *fp) { return 0; } -void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity) { +void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity, unsigned char noSendR) { char c; unsigned char b1, b2, b3; unsigned char i, n; @@ -185,13 +185,15 @@ void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity) { if (!overrideParity) serialEvenParity(s); - top: - printf("Sending R to place Baseflight in bootloader, press a key to continue"); - serialFlush(s); - c = 'R'; - serialWrite(s, &c, 1); - getchar(); - printf("\n"); + if(!noSendR) { + top: + printf("Sending R to place Baseflight in bootloader, press a key to continue"); + serialFlush(s); + c = 'R'; + serialWrite(s, &c, 1); + getchar(); + printf("\n"); + } serialFlush(s); diff --git a/support/stmloader/stmbootloader.h b/support/stmloader/stmbootloader.h index 89a1b6bd1..9c7a5de5a 100644 --- a/support/stmloader/stmbootloader.h +++ b/support/stmloader/stmbootloader.h @@ -22,6 +22,6 @@ #include #include "serial.h" -extern void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity); +extern void stmLoader(serialStruct_t *s, FILE *fp, unsigned char overrideParity, unsigned char noSendR); #endif