diff --git a/src/arduino.c b/src/arduino.c index 89b6e825..0a071b99 100644 --- a/src/arduino.c +++ b/src/arduino.c @@ -119,9 +119,9 @@ static int arduino_open(PROGRAMMER *pgm, const char *port) { union pinfo pinfo; pinfo.serialinfo.baud = pgm->baudrate? pgm->baudrate: 115200; pinfo.serialinfo.cflags = SERIAL_8N1; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; if(my.autoreset) { // This code assumes a negative-logic USB to TTL serial adapter diff --git a/src/avr910.c b/src/avr910.c index 67cac3f5..94d4c1b3 100644 --- a/src/avr910.c +++ b/src/avr910.c @@ -328,8 +328,9 @@ static int avr910_open(PROGRAMMER *pgm, const char *port) { pgm->port = port; pinfo.serialinfo.baud = pgm->baudrate? pgm->baudrate: 19200; pinfo.serialinfo.cflags = SERIAL_8N1; - if(serial_open(port, pinfo, &pgm->fd) < 0) - return -1; + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; (void) avr910_drain(pgm, 0); diff --git a/src/buspirate.c b/src/buspirate.c index 5a96a013..658c3b29 100644 --- a/src/buspirate.c +++ b/src/buspirate.c @@ -448,9 +448,9 @@ static int buspirate_open(PROGRAMMER *pgm, const char *port) { pinfo.serialinfo.baud = pgm->baudrate? pgm->baudrate: 115200; pinfo.serialinfo.cflags = SERIAL_8N1; pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input serial_drain(&pgm->fd, 0); diff --git a/src/butterfly.c b/src/butterfly.c index 5c803659..16d80f86 100644 --- a/src/butterfly.c +++ b/src/butterfly.c @@ -329,8 +329,9 @@ static int butterfly_open(PROGRAMMER *pgm, const char *port) { union pinfo pinfo; pinfo.serialinfo.baud = pgm->baudrate? pgm->baudrate: 19200; pinfo.serialinfo.cflags = SERIAL_8N1; - if(serial_open(port, pinfo, &pgm->fd) == -1) - return -1; + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; if(my.autoreset) { // This code assumes a negative-logic USB to TTL serial adapter diff --git a/src/jtag3.c b/src/jtag3.c index 89443af3..f3560bde 100644 --- a/src/jtag3.c +++ b/src/jtag3.c @@ -1673,6 +1673,8 @@ int jtag3_open_common(PROGRAMMER *pgm, const char *port, int mode_switch) { pgm->port = port; rv = serial_open(port, pinfo, &pgm->fd); + if(rv == LIBAVRDUDE_EXIT_FAIL || rv == LIBAVRDUDE_EXIT_OK) + return rv; } if(rv < 0) { #endif // HAVE_LIBHIDAPI @@ -1689,6 +1691,8 @@ int jtag3_open_common(PROGRAMMER *pgm, const char *port, int mode_switch) { pgm->port = port; rv = serial_open(port, pinfo, &pgm->fd); + if(rv == LIBAVRDUDE_EXIT_FAIL || rv == LIBAVRDUDE_EXIT_OK) + return rv; } #endif // HAVE_LIBUSB @@ -1714,9 +1718,13 @@ int jtag3_open_common(PROGRAMMER *pgm, const char *port, int mode_switch) { int pic_mode = serial_open(port, pinfo, &pgm->fd); if(pic_mode < 0) { + if(pic_mode == LIBAVRDUDE_EXIT_FAIL || pic_mode == LIBAVRDUDE_EXIT_OK) + return pic_mode; // Retry with bootloader USB PID pinfo.usbinfo.pid = bl_pid; pic_mode = serial_open(port, pinfo, &pgm->fd); + if(pic_mode == LIBAVRDUDE_EXIT_FAIL || pic_mode == LIBAVRDUDE_EXIT_OK) + return pic_mode; } if(pic_mode >= 0) { const char *partsdesc_flag = partdesc? " -p ": ""; diff --git a/src/jtagmkI.c b/src/jtagmkI.c index b4600d86..854abb4a 100644 --- a/src/jtagmkI.c +++ b/src/jtagmkI.c @@ -522,9 +522,9 @@ static int jtagmkI_open(PROGRAMMER *pgm, const char *port) { pinfo.serialinfo.baud = baudtab[i].baud; pinfo.serialinfo.cflags = SERIAL_8N1; pmsg_notice2("%s(): trying to sync at baud rate %ld:\n", __func__, pinfo.serialinfo.baud); - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input jtagmkI_drain(pgm, 0); diff --git a/src/jtagmkII.c b/src/jtagmkII.c index 0d7f6be4..a7fcaeb6 100644 --- a/src/jtagmkII.c +++ b/src/jtagmkII.c @@ -1417,9 +1417,9 @@ static int jtagmkII_open(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input jtagmkII_drain(pgm, 0); @@ -1467,9 +1467,9 @@ static int jtagmkII_open_dw(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input jtagmkII_drain(pgm, 0); @@ -1517,9 +1517,9 @@ static int jtagmkII_open_pdi(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input jtagmkII_drain(pgm, 0); @@ -1573,9 +1573,9 @@ static int jtagmkII_dragon_open(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input jtagmkII_drain(pgm, 0); @@ -1623,9 +1623,9 @@ static int jtagmkII_dragon_open_dw(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input jtagmkII_drain(pgm, 0); @@ -1650,11 +1650,7 @@ static int jtagmkII_dragon_open_pdi(PROGRAMMER *pgm, const char *port) { pinfo.serialinfo.baud = 19200; pinfo.serialinfo.cflags = SERIAL_8N1; - /* - * If the port name starts with "usb", divert the serial routines to the USB - * ones. The serial_open() function for USB overrides the meaning of the - * "baud" parameter to be the USB device ID to search for. - */ + // If the port name starts with "usb", divert the serial routines to the USB ones if(str_casestarts(port, "usb")) { #if defined(HAVE_LIBUSB) @@ -1673,9 +1669,9 @@ static int jtagmkII_dragon_open_pdi(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input jtagmkII_drain(pgm, 0); @@ -3255,9 +3251,9 @@ static int jtagmkII_open32(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input jtagmkII_drain(pgm, 0); diff --git a/src/serialadapter.c b/src/serialadapter.c index 07eedb87..c92a4b33 100644 --- a/src/serialadapter.c +++ b/src/serialadapter.c @@ -331,9 +331,10 @@ int touch_serialport(char **portp, int baudrate, int nwaits) { pinfo.serialinfo.baud = baudrate; pinfo.serialinfo.cflags = SERIAL_8N1; - if(serial_open(*portp, pinfo, &fd) == -1) { + int rc; + if((rc = serial_open(*portp, pinfo, &fd)) < 0) { pmsg_error("%s() failed to open port %s at %d baud\n", __func__, *portp, baudrate); - return -1; + return rc; } serial_set_dtr_rts(&fd, 1); usleep(100); diff --git a/src/serprog.c b/src/serprog.c index dfab68a3..d27cc886 100644 --- a/src/serprog.c +++ b/src/serprog.c @@ -169,8 +169,9 @@ static int serprog_open(PROGRAMMER *pgm, const char *port) { pgm->port = port; pinfo.serialinfo.baud = pgm->baudrate? pgm->baudrate: 115200; pinfo.serialinfo.cflags = SERIAL_8N1; - if(serial_open(port, pinfo, &pgm->fd) == -1) - return -1; + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; unsigned char buf[32]; diff --git a/src/stk500.c b/src/stk500.c index 6e00e753..a8100213 100644 --- a/src/stk500.c +++ b/src/stk500.c @@ -854,9 +854,9 @@ static int stk500_open(PROGRAMMER *pgm, const char *port) { pgm->port = port; pinfo.serialinfo.baud = pgm->baudrate? pgm->baudrate: 115200; pinfo.serialinfo.cflags = SERIAL_8N1; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input stk500_drain(pgm, 0); diff --git a/src/stk500v2.c b/src/stk500v2.c index 84feea26..c4a8f1c6 100644 --- a/src/stk500v2.c +++ b/src/stk500v2.c @@ -1365,7 +1365,7 @@ static int stk500v2_jtag3_initialize(const PROGRAMMER *pgm, const AVRPART *p) { if(my.vtarg_switch_get) { pmsg_info("Vtarg switch setting read as %u: target power is switched %s\n", my.vtarg_switch_data[0], my.vtarg_switch_data[0]? "on": "off"); - } + } // Write Vtarg switch value if(my.vtarg_switch_set) { if(jtag3_setparm(pgmcp, SCOPE_EDBG, EDBG_CTXT_CONTROL, @@ -1504,7 +1504,7 @@ static int stk500hv_initialize(const PROGRAMMER *pgm, const AVRPART *p, enum hvm my.varef_channel, (varef_read/100.0)); } // STK600: Write target voltage value for channel n - if(my.varef_set) { + if(my.varef_set) { msg_info("Changing analog reference channel %d voltage from %.2f V to %.2f V\n", my.varef_channel, (varef_read/100.0), my.varef_data); if(pgm->set_varef(pgm, my.varef_channel, my.varef_data) < 0) @@ -2148,9 +2148,9 @@ static int stk500v2_open(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Make USB serial number and USB product name available to programmer if(serdev) { @@ -2216,9 +2216,9 @@ static int stk600_open(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input, synchronise and drain again if(stk500v2_drain(pgm, 0) < 0 || stk500v2_getsync(pgm) < 0 || stk500v2_drain(pgm, 0) < 0) @@ -3927,9 +3927,9 @@ static int stk500v2_jtagmkII_open(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input stk500v2_drain(pgm, 0); @@ -4025,9 +4025,9 @@ static int stk500v2_dragon_isp_open(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input stk500v2_drain(pgm, 0); @@ -4098,9 +4098,9 @@ static int stk500v2_dragon_hv_open(PROGRAMMER *pgm, const char *port) { } pgm->port = port; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // Drain any extraneous input stk500v2_drain(pgm, 0); diff --git a/src/updi_link.c b/src/updi_link.c index 5666a6b9..89eff004 100644 --- a/src/updi_link.c +++ b/src/updi_link.c @@ -57,10 +57,10 @@ static int updi_physical_open(PROGRAMMER *pgm, int baudrate, unsigned long cflag pmsg_debug("opening serial port ...\n"); - if(serial_open(pgm->port, pinfo, &pgm->fd) == -1) { - + int rc; + if((rc = serial_open(pgm->port, pinfo, &pgm->fd)) < 0) { pmsg_debug("serial port open failed!\n"); - return -1; + return rc; } // Drain any extraneous input diff --git a/src/urclock.c b/src/urclock.c index 29dcbb94..7423320e 100644 --- a/src/urclock.c +++ b/src/urclock.c @@ -2249,8 +2249,9 @@ static int urclock_open(PROGRAMMER *pgm, const char *port) { pinfo.serialinfo.cflags = SERIAL_8N1; pmsg_debug("%s(\"%s\")\n", __func__, port); - if(serial_open(port, pinfo, &pgm->fd) == -1) - return -1; + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; if(!ur.noautoreset) { // This code assumes a negative-logic USB to TTL serial adapter diff --git a/src/wiring.c b/src/wiring.c index 80ab3f40..aee1cd05 100644 --- a/src/wiring.c +++ b/src/wiring.c @@ -144,7 +144,9 @@ static int wiring_open(PROGRAMMER *pgm, const char *port) { pgm->port = port; pinfo.serialinfo.baud = pgm->baudrate? pgm->baudrate: 115200; pinfo.serialinfo.cflags = SERIAL_8N1; - serial_open(port, pinfo, &pgm->fd); + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; // If we have a snoozetime, then we wait and do NOT toggle DTR/RTS if(mywiring.snoozetime > 0) { diff --git a/src/xbee.c b/src/xbee.c index e8b0f69a..06c85921 100644 --- a/src/xbee.c +++ b/src/xbee.c @@ -1438,9 +1438,9 @@ static int xbee_open(PROGRAMMER *pgm, const char *port) { serdev->set_dtr_rts = xbeedev_set_dtr_rts; serdev->flags = SERDEV_FL_NONE; - if(serial_open(port, pinfo, &pgm->fd) == -1) { - return -1; - } + int rc; + if((rc = serial_open(port, pinfo, &pgm->fd)) < 0) + return rc; xbeedev_setresetpin(&pgm->fd, my.xbeeResetPin);