static int stk500generic_open(PROGRAMMER * pgm, char * port) { stk500_initpgm(pgm); if (pgm->open(pgm, port) >= 0) { fprintf(stderr, "%s: successfully opened stk500v1 device -- please use -c stk500v1\n", progname); return 0; } pgm->close(pgm); stk500v2_initpgm(pgm); if (pgm->open(pgm, port) >= 0) { fprintf(stderr, "%s: successfully opened stk500v2 device -- please use -c stk500v2\n", progname); return 0; } fprintf(stderr, "%s: cannot open either stk500v1 or stk500v2 programmer\n", progname); return -1; }
static void stk500generic_setup(PROGRAMMER * pgm) { /* * Only STK500v2 needs setup/teardown. */ stk500v2_initpgm(pgm); pgm->setup(pgm); }
void wiring_initpgm(PROGRAMMER * pgm) { /* The Wiring bootloader uses a near-complete STK500v2 protocol. */ stk500v2_initpgm(pgm); strcpy(pgm->type, "Wiring"); pgm->open = wiring_open; pgm->close = wiring_close; pgm->setup = wiring_setup; pgm->teardown = wiring_teardown; pgm->parseextparams = wiring_parseextparms; }
static void stk500generic_teardown(PROGRAMMER * pgm) { stk500v2_initpgm(pgm); pgm->teardown(pgm); }