From a02994dd12331d8adad33b253a47cf603694d0b7 Mon Sep 17 00:00:00 2001 From: Joerg Wunsch Date: Wed, 20 Mar 2024 13:46:26 +0100 Subject: [PATCH] Always populate setup and teardown methods of struct programmer_t Many programmer implementations require "cookies" to store internal data. It helps to be able to always call setup and teardown methods. --- src/pgm.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/pgm.c b/src/pgm.c index 6e1ac2dd..8ae75418 100644 --- a/src/pgm.c +++ b/src/pgm.c @@ -36,7 +36,7 @@ static void pgm_default_4(const PROGRAMMER *); static int pgm_default_5(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM *mem, unsigned long addr, unsigned char data); static void pgm_default_6(const PROGRAMMER *, const char *); - +static void pgm_default_setup_teardown(PROGRAMMER *pgm); static int pgm_default_open(PROGRAMMER *pgm, const char *name) { pmsg_error("programmer does not support open()"); @@ -128,6 +128,8 @@ PROGRAMMER *pgm_new(void) { pgm->page_erase_cached = avr_page_erase_cached; pgm->flush_cache = avr_flush_cache; pgm->reset_cache = avr_reset_cache; + pgm->setup = pgm_default_setup_teardown; + pgm->teardown = pgm_default_setup_teardown; /* * optional functions - these are checked to make sure they are @@ -159,8 +161,6 @@ PROGRAMMER *pgm_new(void) { pgm->parseexitspecs = NULL; pgm->perform_osccal = NULL; pgm->parseextparams = NULL; - pgm->setup = NULL; - pgm->teardown = NULL; pgm->readonly = NULL; pgm->flash_readhook = NULL; @@ -268,6 +268,11 @@ static void pgm_default_6 (const PROGRAMMER *pgm, const char *p) { pgm_default(); } +static void pgm_default_setup_teardown(PROGRAMMER *pgm) { + // ignore + (void)pgm; +} + void programmer_display(PROGRAMMER *pgm, const char * p) { msg_info("%sProgrammer Type : %s\n", p, pgm->type);