From ed017002af67314262373e1c162299bcdde28bea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9D=E6=97=A5=E8=96=AB=20/=20K=2ESato?= Date: Wed, 3 Jan 2024 22:04:41 +0900 Subject: [PATCH] jtagmkII_updi_term_keep_alive (#1603) --- src/jtagmkII.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/jtagmkII.c b/src/jtagmkII.c index a1722f20..9abcaf34 100644 --- a/src/jtagmkII.c +++ b/src/jtagmkII.c @@ -3601,6 +3601,31 @@ static int jtagmkII_flash_clear_pagebuffer32(const PROGRAMMER *pgm) { return -1; } +// Periodic calls in terminal mode to keep the programmer jtagmkii_updi enabled +static int jtagmkII_updi_term_keep_alive(const PROGRAMMER *pgm, const AVRPART *p_unused) { + unsigned char buf[2], *resp, c = 0xff; + int status; + + buf[0] = CMND_GET_SYNC; + jtagmkII_send(pgm, buf, 1); + + status = jtagmkII_recv(pgm, &resp); + if (status <= 0) { + msg_notice2("\n"); + pmsg_error("timeout/error communicating with programmer (status %d)\n", status); + return -1; + } + + c = resp[0]; + free(resp); + if (c != RSP_OK) { + pmsg_error("bad response to `get_sync` command: %s\n", jtagmkII_get_rc(c)); + return -1; + } + + return 0; +} + #ifdef __OBJC__ #pragma mark - #endif @@ -3737,6 +3762,7 @@ void jtagmkII_updi_initpgm(PROGRAMMER *pgm) { pgm->read_chip_rev = jtagmkII_read_chip_rev; pgm->page_size = 256; pgm->flag = PGM_FL_IS_PDI; + pgm->term_keep_alive= jtagmkII_updi_term_keep_alive; } const char jtagmkII_dragon_desc[] = "Atmel AVR Dragon in JTAG mode";