From 86b1947132f8455493f403c428a7649c2e0a4db7 Mon Sep 17 00:00:00 2001 From: "Brian S. Dean" Date: Wed, 19 May 2004 23:00:38 +0000 Subject: [PATCH] Allow the baud rate to be specified on the command line with a new -b switch. The specified baud rate will override the default serial port baud rate for a particular programmer. git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk@416 81a1dc3b-b13d-400b-aceb-764788c761c2 --- avrdude/main.c | 20 +++++++++++++++++++- avrdude/stk500.c | 5 ++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/avrdude/main.c b/avrdude/main.c index 9aa2bf5e..67d3263c 100644 --- a/avrdude/main.c +++ b/avrdude/main.c @@ -699,6 +699,7 @@ int main(int argc, char * argv []) int set_cycles; /* value to set the erase-rewrite cycles to */ char * e; /* for strtol() error checking */ int quell_progress; + int baudrate; /* override default programmer baud rate */ #if !defined(__CYGWIN__) char * homedir; #endif @@ -738,6 +739,7 @@ int main(int argc, char * argv []) verbose = 0; do_cycles = 0; set_cycles = -1; + baudrate = 0; #if defined(__CYGWIN__) @@ -782,9 +784,18 @@ int main(int argc, char * argv []) /* * process command line arguments */ - while ((ch = getopt(argc,argv,"?c:C:DeE:Fnp:P:qtU:vVyY:")) != -1) { + while ((ch = getopt(argc,argv,"?b:c:C:DeE:Fnp:P:qtU:vVyY:")) != -1) { switch (ch) { + case 'b': /* override default programmer baud rate */ + baudrate = strtol(optarg, &e, 0); + if ((e == optarg) || (*e != 0)) { + fprintf(stderr, "%s: invalid baud rate specified '%s'\n", + progname, optarg); + exit(1); + } + break; + case 'c': /* programmer id */ programmer = optarg; break; @@ -1064,6 +1075,13 @@ int main(int argc, char * argv []) fprintf(stderr, "%sUsing Programmer : %s\n", progbuf, programmer); } + if (baudrate != 0) { + if (verbose) { + fprintf(stderr, "%sOverriding Baud Rate : %d\n", progbuf, baudrate); + } + pgm->baudrate = baudrate; + } + rc = pgm->open(pgm, port); if (rc < 0) { exitrc = 1; diff --git a/avrdude/stk500.c b/avrdude/stk500.c index 45bd8a13..dba06a85 100644 --- a/avrdude/stk500.c +++ b/avrdude/stk500.c @@ -540,7 +540,10 @@ static void stk500_enable(PROGRAMMER * pgm) static int stk500_open(PROGRAMMER * pgm, char * port) { strcpy(pgm->port, port); - pgm->fd = serial_open(port, 115200); + if (pgm->baudrate) + pgm->fd = serial_open(port, pgm->baudrate); + else + pgm->fd = serial_open(port, 115200); /* * drain any extraneous input