Show correct signature bytes for unknown devices
This commit is contained in:
parent
cb3707d2c0
commit
c3f43e7fb3
31
ispprog.c
31
ispprog.c
@ -889,17 +889,18 @@ static void reset_statemachine(uint8_t event)
|
|||||||
|
|
||||||
#if defined(DISP_WR)
|
#if defined(DISP_WR)
|
||||||
uint8_t *dst = disp_text;
|
uint8_t *dst = disp_text;
|
||||||
uint8_t *src = (uint8_t *)"unknown";
|
uint8_t *src;
|
||||||
|
|
||||||
if (device.sig[0] != 0x00) {
|
if (device.name[0] != '\0')
|
||||||
|
{
|
||||||
src = device.name;
|
src = device.name;
|
||||||
|
while (*src != '\0')
|
||||||
|
{
|
||||||
|
*dst++ = *src++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
while (*src != '\0') {
|
{
|
||||||
*dst++ = *src++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (device.sig[0] == 0x00) {
|
|
||||||
*dst++ = ' ';
|
*dst++ = ' ';
|
||||||
*dst++ = '0';
|
*dst++ = '0';
|
||||||
*dst++ = 'X';
|
*dst++ = 'X';
|
||||||
@ -927,7 +928,6 @@ static void reset_statemachine(uint8_t event)
|
|||||||
#endif /* defined(DISP_WR) */
|
#endif /* defined(DISP_WR) */
|
||||||
|
|
||||||
} else if ((event == EV_BUTTON_PRESSED) || (event == EV_PROG_ENTER)) {
|
} else if ((event == EV_BUTTON_PRESSED) || (event == EV_PROG_ENTER)) {
|
||||||
memset(&device, 0x00, sizeof(struct _device));
|
|
||||||
reset_retries = 5;
|
reset_retries = 5;
|
||||||
reset_cause = event;
|
reset_cause = event;
|
||||||
|
|
||||||
@ -958,21 +958,28 @@ static void reset_statemachine(uint8_t event)
|
|||||||
sync = spi_rxtx(0x00);
|
sync = spi_rxtx(0x00);
|
||||||
spi_rxtx(0x00);
|
spi_rxtx(0x00);
|
||||||
|
|
||||||
|
memset(&device, 0x00, sizeof(struct _device));
|
||||||
|
|
||||||
if (sync == CMD_PROG_ENABLE_2) {
|
if (sync == CMD_PROG_ENABLE_2) {
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
uint8_t sig[3];
|
|
||||||
|
|
||||||
for (i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
sig[i] = mem_read(CMD_READ_SIG_1, (CMD_READ_SIG_2 << 8) | i);
|
device.sig[i] = mem_read(CMD_READ_SIG_1, (CMD_READ_SIG_2 << 8) | i);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(devices); i++) {
|
for (i = 0; i < ARRAY_SIZE(devices); i++) {
|
||||||
if (memcmp_P(sig, devices[i].sig, sizeof(device.sig)) == 0) {
|
if (memcmp_P(device.sig, devices[i].sig, sizeof(device.sig)) == 0) {
|
||||||
memcpy_P(&device, &devices[i], sizeof(struct _device));
|
memcpy_P(&device, &devices[i], sizeof(struct _device));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* unknown devices are untested */
|
||||||
|
if (device.name[0] == '\0')
|
||||||
|
{
|
||||||
|
device.flags |= POLL_UNTESTED;
|
||||||
|
}
|
||||||
|
|
||||||
state = (reset_cause == EV_PROG_ENTER) ? STATE_RESET_PROGMODE
|
state = (reset_cause == EV_PROG_ENTER) ? STATE_RESET_PROGMODE
|
||||||
: STATE_IDLE;
|
: STATE_IDLE;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user