From d2557e14bb51275db5bf8e40083efd0f9509275d Mon Sep 17 00:00:00 2001 From: Olaf Rempel Date: Mon, 29 Sep 2014 22:26:41 +0200 Subject: [PATCH] add mega328p, bail out if device not supported --- ispprog.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ispprog.c b/ispprog.c index dae8c0d..e4155dd 100644 --- a/ispprog.c +++ b/ispprog.c @@ -98,6 +98,7 @@ static const struct _device devices[] PROGMEM = { { { 0x1E, 0x94, 0x06 }, 0xFF, 0x3F, POLL_FF }, /* mega168 (no devcode) */ { { 0x1E, 0x95, 0x02 }, 0x72, 0x3F, POLL_FF }, /* mega32 */ + { { 0x1E, 0x95, 0x0F }, 0xFF, 0x3F, POLL_FF }, /* mega328p (no devcode) */ { { 0x1E, 0x95, 0x87 }, 0xFF, 0x3F, POLL_FF }, /* mega32u4 (no devcode) */ { { 0x1E, 0x96, 0x02 }, 0x45, 0x7F, POLL_FF }, /* mega64 */ @@ -367,7 +368,7 @@ static void cmdloop(void) switch (ser_recv()) { /* Enter programming mode */ case 'P': { - uint8_t sync, count = 0x20; + uint8_t sync, count = 0x20, retval = '!'; led_mode = LED_ON; do { set_reset(1); @@ -394,12 +395,19 @@ static void cmdloop(void) for (i = 0; i < ARRAY_SIZE(devices); i++) { if (memcmp_P(device.sig, devices[i].sig, sizeof(device.sig)) == 0) { memcpy_P(&device, &devices[i], sizeof(struct _device)); + retval = '\r'; break; } } } - ser_send('\r'); + /* device not supported */ + if (retval == '!') { + set_reset(1); + led_mode = LED_OFF; + } + + ser_send(retval); break; }