mirror of
https://github.com/avrdudes/avrdude.git
synced 2026-09-22 00:56:21 +03:00
Rename main static pgm to mpgm
This commit is contained in:
146
src/main.c
146
src/main.c
@@ -215,7 +215,7 @@ static LISTID extended_params = NULL;
|
||||
|
||||
static LISTID additional_config_files = NULL;
|
||||
|
||||
static PROGRAMMER *pgm;
|
||||
static PROGRAMMER *mpgm;
|
||||
|
||||
// Global options
|
||||
int verbose; // Verbose output
|
||||
@@ -451,8 +451,8 @@ static void list_parts(FILE *f, const char *prefix, LISTID avrparts, int pm) {
|
||||
}
|
||||
|
||||
static void exithook(void) {
|
||||
if(pgm && pgm->teardown)
|
||||
pgm->teardown(pgm);
|
||||
if(mpgm && mpgm->teardown)
|
||||
mpgm->teardown(mpgm);
|
||||
}
|
||||
|
||||
static void cleanup_main(void) {
|
||||
@@ -702,7 +702,7 @@ int main(int argc, char *argv[]) {
|
||||
partdesc = NULL;
|
||||
ovsigck = 0;
|
||||
quell_progress = 0;
|
||||
pgm = NULL;
|
||||
mpgm = NULL;
|
||||
pgmid = "";
|
||||
verbose = 0;
|
||||
|
||||
@@ -1026,14 +1026,14 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
if(partdesc && str_eq(partdesc, "?")) {
|
||||
if(pgmid && *pgmid && explicit_c) {
|
||||
PROGRAMMER *pgm = locate_programmer_starts_set(programmers, pgmid, &pgmid, NULL);
|
||||
PROGRAMMER *qpgm = locate_programmer_starts_set(programmers, pgmid, &pgmid, NULL);
|
||||
|
||||
if(!pgm || !is_programmer(pgm)) {
|
||||
programmer_not_found(pgmid, pgm, NULL);
|
||||
if(!qpgm || !is_programmer(qpgm)) {
|
||||
programmer_not_found(pgmid, qpgm, NULL);
|
||||
exit(1);
|
||||
}
|
||||
msg_error("\nValid parts for programmer %s are:\n", pgmid);
|
||||
list_parts(stderr, " ", part_list, pgm->prog_modes);
|
||||
list_parts(stderr, " ", part_list, qpgm->prog_modes);
|
||||
} else {
|
||||
msg_error("\nValid parts are:\n");
|
||||
list_parts(stderr, " ", part_list, ~0);
|
||||
@@ -1075,13 +1075,13 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
pt = partdesc && *partdesc? locate_part(part_list, partdesc): NULL;
|
||||
pgm = locate_programmer_starts_set(programmers, pgmid, &pgmid, pt);
|
||||
if(pgm == NULL || !is_programmer(pgm)) {
|
||||
programmer_not_found(pgmid, pgm, pt);
|
||||
mpgm = locate_programmer_starts_set(programmers, pgmid, &pgmid, pt);
|
||||
if(mpgm == NULL || !is_programmer(mpgm)) {
|
||||
programmer_not_found(pgmid, mpgm, pt);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if(pt && !(pt->prog_modes & pgm->prog_modes)) {
|
||||
if(pt && !(pt->prog_modes & mpgm->prog_modes)) {
|
||||
pmsg_error("-c %s cannot program %s for lack of a common programming mode\n", pgmid, pt->desc);
|
||||
if(!ovsigck) {
|
||||
imsg_error("use -F to override this check\n");
|
||||
@@ -1089,20 +1089,20 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
}
|
||||
|
||||
if(!pgm->initpgm) {
|
||||
if(!mpgm->initpgm) {
|
||||
pmsg_error("cannot initialize the programmer\n\n");
|
||||
exit(1);
|
||||
}
|
||||
pgm->initpgm(pgm);
|
||||
mpgm->initpgm(mpgm);
|
||||
|
||||
if(pgm->setup)
|
||||
pgm->setup(pgm);
|
||||
if(mpgm->setup)
|
||||
mpgm->setup(mpgm);
|
||||
|
||||
if(pgm->teardown)
|
||||
if(mpgm->teardown)
|
||||
atexit(exithook);
|
||||
|
||||
if(lsize(extended_params) > 0) {
|
||||
if(pgm->parseextparams == NULL) {
|
||||
if(mpgm->parseextparams == NULL) {
|
||||
for(LNODEID ln = lfirst(extended_params); ln; ln = lnext(ln)) {
|
||||
const char *extended_param = ldata(ln);
|
||||
|
||||
@@ -1114,7 +1114,7 @@ int main(int argc, char *argv[]) {
|
||||
pmsg_error("programmer does not support extended parameter -x %s, option ignored\n", extended_param);
|
||||
}
|
||||
} else {
|
||||
int rc = pgm->parseextparams(pgm, extended_params);
|
||||
int rc = mpgm->parseextparams(mpgm, extended_params);
|
||||
|
||||
if(rc == LIBAVRDUDE_EXIT_OK)
|
||||
exit(0);
|
||||
@@ -1125,11 +1125,11 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
}
|
||||
|
||||
if(port == NULL && *pgm->default_port)
|
||||
port = mmt_strdup(pgm->default_port);
|
||||
if(port == NULL && *mpgm->default_port)
|
||||
port = mmt_strdup(mpgm->default_port);
|
||||
|
||||
if(port == NULL) {
|
||||
switch(pgm->conntype) {
|
||||
switch(mpgm->conntype) {
|
||||
case CONNTYPE_PARALLEL:
|
||||
port = mmt_strdup(default_parallel);
|
||||
break;
|
||||
@@ -1163,7 +1163,7 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
}
|
||||
|
||||
int is_dryrun = str_eq(pgm->ptyp, "Dryrun") || (dry && pgm->initpgm == dry->initpgm);
|
||||
int is_dryrun = str_eq(mpgm->ptyp, "Dryrun") || (dry && mpgm->initpgm == dry->initpgm);
|
||||
|
||||
if((port[0] == 0 || str_eq(port, "unknown")) && !is_dryrun) {
|
||||
msg_error("\n");
|
||||
@@ -1183,7 +1183,7 @@ int main(int argc, char *argv[]) {
|
||||
bool print_ports = true;
|
||||
SERIALADAPTER *ser = NULL;
|
||||
|
||||
if(pgm->conntype == CONNTYPE_SERIAL) {
|
||||
if(mpgm->conntype == CONNTYPE_SERIAL) {
|
||||
char *portdup = mmt_strdup(port);
|
||||
char *port_tok[4], *tok = portdup;
|
||||
|
||||
@@ -1243,33 +1243,33 @@ int main(int argc, char *argv[]) {
|
||||
pmsg_notice("using port : %s\n", port);
|
||||
pmsg_notice("using programmer : %s\n", pgmid);
|
||||
|
||||
if(baudrate && !pgm->baudrate && !default_baudrate) { // None set
|
||||
if(baudrate && !mpgm->baudrate && !default_baudrate) { // None set
|
||||
pmsg_notice("setting baud rate : %d\n", baudrate);
|
||||
pgm->baudrate = baudrate;
|
||||
} else if(baudrate && ((pgm->baudrate && pgm->baudrate != baudrate)
|
||||
|| (!pgm->baudrate && default_baudrate != baudrate))) {
|
||||
mpgm->baudrate = baudrate;
|
||||
} else if(baudrate && ((mpgm->baudrate && mpgm->baudrate != baudrate)
|
||||
|| (!mpgm->baudrate && default_baudrate != baudrate))) {
|
||||
pmsg_notice("overriding baud rate : %d\n", baudrate);
|
||||
pgm->baudrate = baudrate;
|
||||
} else if(!pgm->baudrate && default_baudrate) {
|
||||
mpgm->baudrate = baudrate;
|
||||
} else if(!mpgm->baudrate && default_baudrate) {
|
||||
pmsg_notice("default baud rate : %d\n", default_baudrate);
|
||||
pgm->baudrate = default_baudrate;
|
||||
mpgm->baudrate = default_baudrate;
|
||||
} else if(ser && ser->baudrate) {
|
||||
pmsg_notice("serial baud rate : %d\n", ser->baudrate);
|
||||
pgm->baudrate = ser->baudrate;
|
||||
} else if(pgm->baudrate != 0)
|
||||
pmsg_notice("programmer baud rate : %d\n", pgm->baudrate);
|
||||
mpgm->baudrate = ser->baudrate;
|
||||
} else if(mpgm->baudrate != 0)
|
||||
pmsg_notice("programmer baud rate : %d\n", mpgm->baudrate);
|
||||
|
||||
if(bitclock != 0.0) {
|
||||
pmsg_notice("setting bit clk period: %.1f us\n", bitclock);
|
||||
pgm->bitclock = bitclock*1e-6;
|
||||
mpgm->bitclock = bitclock*1e-6;
|
||||
}
|
||||
|
||||
if(ispdelay != 0) {
|
||||
pmsg_notice("setting ISP clk delay : %3i us\n", ispdelay);
|
||||
pgm->ispdelay = ispdelay;
|
||||
mpgm->ispdelay = ispdelay;
|
||||
}
|
||||
|
||||
int rc = pgm->open(pgm, port);
|
||||
int rc = mpgm->open(mpgm, port);
|
||||
if(rc < 0) {
|
||||
if(rc == LIBAVRDUDE_EXIT_FAIL || rc == LIBAVRDUDE_EXIT_OK) {
|
||||
exitrc = rc == LIBAVRDUDE_EXIT_FAIL;
|
||||
@@ -1278,7 +1278,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
pmsg_error("unable to open port %s for programmer %s\n", port, pgmid);
|
||||
skipopen:
|
||||
if(print_ports && pgm->conntype == CONNTYPE_SERIAL) {
|
||||
if(print_ports && mpgm->conntype == CONNTYPE_SERIAL) {
|
||||
|
||||
#ifdef HAVE_LIBSERIALPORT
|
||||
list_available_serialports(programmers);
|
||||
@@ -1287,7 +1287,7 @@ int main(int argc, char *argv[]) {
|
||||
#endif
|
||||
}
|
||||
exitrc = 1;
|
||||
pgm->ppidata = 0; // Clear all bits at exit
|
||||
mpgm->ppidata = 0; // Clear all bits at exit
|
||||
goto main_exit;
|
||||
}
|
||||
is_open = 1;
|
||||
@@ -1305,11 +1305,11 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
if(exitspecs != NULL) {
|
||||
if(pgm->parseexitspecs == NULL) {
|
||||
if(mpgm->parseexitspecs == NULL) {
|
||||
pmsg_warning("-E option not supported by this programmer type\n");
|
||||
exitspecs = NULL;
|
||||
} else {
|
||||
int rc = pgm->parseexitspecs(pgm, exitspecs);
|
||||
int rc = mpgm->parseexitspecs(mpgm, exitspecs);
|
||||
|
||||
if(rc == LIBAVRDUDE_EXIT_OK)
|
||||
exit(0);
|
||||
@@ -1328,7 +1328,7 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
if(verbose > 0) {
|
||||
if((str_eq(pgm->ptyp, "avr910"))) {
|
||||
if((str_eq(mpgm->ptyp, "avr910"))) {
|
||||
imsg_notice("avr910_devcode (avrdude.conf) : ");
|
||||
if(pt->avr910_devcode)
|
||||
msg_notice("0x%02x\n", (uint8_t) pt->avr910_devcode);
|
||||
@@ -1366,12 +1366,12 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
if(calibrate) {
|
||||
// Perform an RC oscillator calibration as outlined in appnote AVR053
|
||||
if(pgm->perform_osccal == 0) {
|
||||
if(mpgm->perform_osccal == 0) {
|
||||
pmsg_error("programmer does not support RC oscillator calibration\n");
|
||||
exitrc = 1;
|
||||
} else {
|
||||
pmsg_notice2("performing RC oscillator calibration\n");
|
||||
exitrc = pgm->perform_osccal(pgm);
|
||||
exitrc = mpgm->perform_osccal(mpgm);
|
||||
}
|
||||
if(exitrc)
|
||||
pmsg_error("RC calibration unsuccesful\n");
|
||||
@@ -1382,9 +1382,9 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
if(verbose > 0 && quell_progress < 2) {
|
||||
avr_display(stderr, pgm, pt, "", verbose);
|
||||
avr_display(stderr, mpgm, pt, "", verbose);
|
||||
msg_notice2("\n");
|
||||
programmer_display(pgm, "");
|
||||
programmer_display(mpgm, "");
|
||||
}
|
||||
|
||||
lmsg_info("");
|
||||
@@ -1392,16 +1392,16 @@ int main(int argc, char *argv[]) {
|
||||
exitrc = 0;
|
||||
|
||||
// Enable the programmer
|
||||
pgm->enable(pgm, pt);
|
||||
mpgm->enable(mpgm, pt);
|
||||
|
||||
// Turn off all the status LEDs and reset LED states
|
||||
led_set(pgm, LED_BEG);
|
||||
led_set(mpgm, LED_BEG);
|
||||
|
||||
// Initialize the chip in preparation for accepting commands
|
||||
int reinitialised = 0;
|
||||
int erased_by_unlock = 0;
|
||||
init_again:
|
||||
init_ok = (rc = pgm->initialize(pgm, pt)) >= 0;
|
||||
init_ok = (rc = mpgm->initialize(mpgm, pt)) >= 0;
|
||||
if(!init_ok) {
|
||||
if(rc == LIBAVRDUDE_EXIT_FAIL || rc == LIBAVRDUDE_EXIT_OK) {
|
||||
exitrc = rc == LIBAVRDUDE_EXIT_FAIL;
|
||||
@@ -1422,7 +1422,7 @@ init_again:
|
||||
// Reinitialise at most once if erase successful
|
||||
if(reinitialised++)
|
||||
pmsg_error("re-initialization failed despite part erasure; try re-running command line\n");
|
||||
else if(pgm->chip_erase(pgm, pt) == LIBAVRDUDE_SUCCESS) {
|
||||
else if(mpgm->chip_erase(mpgm, pt) == LIBAVRDUDE_SUCCESS) {
|
||||
erased_by_unlock = 1;
|
||||
goto init_again;
|
||||
}
|
||||
@@ -1435,17 +1435,17 @@ init_again:
|
||||
else
|
||||
imsg_error(" - double check the connections and try again\n");
|
||||
|
||||
if(str_eq(pgm->ptyp, "serialupdi"))
|
||||
if(str_eq(mpgm->ptyp, "serialupdi"))
|
||||
imsg_error(" - use -b to set lower baud rate, e.g. -b %d\n", baudrate? baudrate/2: 57600);
|
||||
else if(str_eq(pgm->ptyp, "BusPirate_BB") || str_eq(pgm->ptyp, "linuxgpio") ||
|
||||
str_eq(pgm->ptyp, "PPI") || str_eq(pgm->ptyp, "SERBB")) {
|
||||
else if(str_eq(mpgm->ptyp, "BusPirate_BB") || str_eq(mpgm->ptyp, "linuxgpio") ||
|
||||
str_eq(mpgm->ptyp, "PPI") || str_eq(mpgm->ptyp, "SERBB")) {
|
||||
imsg_error(" - use -i %sto set a longer delay (in microseconds) between each bit state change, e.g. -i 50\n",
|
||||
bitclock? "instead of -B ": "");
|
||||
}
|
||||
else
|
||||
imsg_error(" - use -B to set lower the bit clock frequency, e.g. -B 125kHz\n");
|
||||
|
||||
if(str_starts(pgm->ptyp, "pickit5"))
|
||||
if(str_starts(mpgm->ptyp, "pickit5"))
|
||||
imsg_error(" - reset the programmer by unplugging it");
|
||||
|
||||
if(!ovsigck) {
|
||||
@@ -1456,7 +1456,7 @@ init_again:
|
||||
}
|
||||
|
||||
// Indicate programmer is ready
|
||||
led_set(pgm, LED_RDY);
|
||||
led_set(mpgm, LED_RDY);
|
||||
|
||||
msg_notice("\n");
|
||||
pmsg_notice("AVR device initialized and ready to accept instructions\n");
|
||||
@@ -1473,7 +1473,7 @@ init_again:
|
||||
sig_again:
|
||||
usleep(waittime);
|
||||
if(init_ok) {
|
||||
int rc = avr_signature(pgm, pt);
|
||||
int rc = avr_signature(mpgm, pt);
|
||||
if(rc == LIBAVRDUDE_EXIT_FAIL || rc == LIBAVRDUDE_EXIT_OK) {
|
||||
exitrc = (rc == LIBAVRDUDE_EXIT_FAIL);
|
||||
goto main_exit;
|
||||
@@ -1487,7 +1487,7 @@ init_again:
|
||||
pmsg_warning("conflicting -e and -n options specified, NOT erasing chip\n");
|
||||
} else {
|
||||
pmsg_info("unlocking the chip");
|
||||
exitrc = avr_unlock(pgm, pt);
|
||||
exitrc = avr_unlock(mpgm, pt);
|
||||
if(exitrc)
|
||||
goto main_exit;
|
||||
msg_info(" and trying again\n");
|
||||
@@ -1513,7 +1513,7 @@ init_again:
|
||||
if(sig == NULL)
|
||||
pmsg_warning("signature memory not defined for device %s\n", pt->desc);
|
||||
else {
|
||||
const char *mculist = str_ccmcunames_signature(sig->buf, pgm->prog_modes);
|
||||
const char *mculist = str_ccmcunames_signature(sig->buf, mpgm->prog_modes);
|
||||
|
||||
if(!*mculist) { // No matching signatures?
|
||||
if(is_updi(pt)) { // UPDI parts have different(!) offsets for signature
|
||||
@@ -1534,8 +1534,8 @@ init_again:
|
||||
// Now go through the list of other(!) sig offsets and try these
|
||||
for(k = 0; k < n; k++) {
|
||||
sig->offset = offlist[k];
|
||||
if(avr_signature(pgm, pt) >= 0)
|
||||
if(*(mculist = str_ccmcunames_signature(sig->buf, pgm->prog_modes)))
|
||||
if(avr_signature(mpgm, pt) >= 0)
|
||||
if(*(mculist = str_ccmcunames_signature(sig->buf, mpgm->prog_modes)))
|
||||
break;
|
||||
}
|
||||
sig->offset = myoff;
|
||||
@@ -1590,7 +1590,7 @@ init_again:
|
||||
}
|
||||
|
||||
if(uflags & UF_AUTO_ERASE) {
|
||||
if((pt->prog_modes & (PM_PDI | PM_UPDI)) && pgm->page_erase && lsize(updates) > 0) {
|
||||
if((pt->prog_modes & (PM_PDI | PM_UPDI)) && mpgm->page_erase && lsize(updates) > 0) {
|
||||
for(LNODEID ln = lfirst(updates); ln; ln = lnext(ln)) {
|
||||
UPDATE *upd = ldata(ln);
|
||||
if(upd->memstr && upd->op == DEVICE_WRITE && memlist_contains_flash(upd->memstr, pt)) {
|
||||
@@ -1639,7 +1639,7 @@ init_again:
|
||||
else
|
||||
pmsg_notice("-n specified, NOT erasing chip\n");
|
||||
} else {
|
||||
exitrc = avr_chip_erase(pgm, pt);
|
||||
exitrc = avr_chip_erase(mpgm, pt);
|
||||
if(exitrc == LIBAVRDUDE_SOFTFAIL) {
|
||||
pmsg_notice("delaying chip erase until first -U upload to flash\n");
|
||||
ce_delayed = 1;
|
||||
@@ -1667,35 +1667,35 @@ init_again:
|
||||
UPDATE *upd = ldata(ln);
|
||||
if(upd->cmdline && wrmem) { // Invalidate cache if device was written to
|
||||
wrmem = 0;
|
||||
pgm->reset_cache(pgm, pt);
|
||||
mpgm->reset_cache(mpgm, pt);
|
||||
} else if(!upd->cmdline) { // Flush cache before any device memory access
|
||||
pgm->flush_cache(pgm, pt);
|
||||
mpgm->flush_cache(mpgm, pt);
|
||||
wrmem |= upd->op == DEVICE_WRITE;
|
||||
}
|
||||
if((uflags & UF_NOWRITE) && upd->cmdline && !terminal++)
|
||||
pmsg_warning("the terminal ignores option -n, that is, it writes to the device\n");
|
||||
int rc = do_op(pgm, pt, upd, uflags);
|
||||
int rc = do_op(mpgm, pt, upd, uflags);
|
||||
if(rc && rc != LIBAVRDUDE_SOFTFAIL) {
|
||||
exitrc = 1;
|
||||
break;
|
||||
} else if(rc == 0 && upd->op == DEVICE_WRITE && (m = avr_locate_mem(pt, upd->memstr)) && mem_is_in_flash(m))
|
||||
ce_delayed = 0; // Redeemed chip erase promise
|
||||
}
|
||||
pgm->flush_cache(pgm, pt);
|
||||
mpgm->flush_cache(mpgm, pt);
|
||||
|
||||
if(pgm->end_programming)
|
||||
if(pgm->end_programming(pgm, pt) < 0)
|
||||
if(mpgm->end_programming)
|
||||
if(mpgm->end_programming(mpgm, pt) < 0)
|
||||
pmsg_error("could not end programming, aborting\n");
|
||||
|
||||
main_exit:
|
||||
|
||||
// Program complete
|
||||
if(is_open) {
|
||||
// Clear rdy LED and summarise interaction in err, pgm and vfy LEDs
|
||||
led_set(pgm, LED_END);
|
||||
pgm->powerdown(pgm);
|
||||
pgm->disable(pgm);
|
||||
pgm->close(pgm);
|
||||
// Clear rdy LED and summarise interaction in err, mpgm and vfy LEDs
|
||||
led_set(mpgm, LED_END);
|
||||
mpgm->powerdown(mpgm);
|
||||
mpgm->disable(mpgm);
|
||||
mpgm->close(mpgm);
|
||||
}
|
||||
|
||||
if(cx->usb_access_error) {
|
||||
|
||||
Reference in New Issue
Block a user