|
@@ -122,12 +122,14 @@ uint8_t optiboot_w25x20cl_enter()
|
|
unsigned long boot_timer = 0;
|
|
unsigned long boot_timer = 0;
|
|
const char *ptr = entry_magic_send;
|
|
const char *ptr = entry_magic_send;
|
|
const char *end = strlen_P(entry_magic_send) + ptr;
|
|
const char *end = strlen_P(entry_magic_send) + ptr;
|
|
|
|
+ const uint8_t selectedSerialPort_bak = selectedSerialPort;
|
|
|
|
|
|
while (RECV_READY) {
|
|
while (RECV_READY) {
|
|
watchdogReset();
|
|
watchdogReset();
|
|
|
|
|
|
(void)(*(char *)UDR0);
|
|
(void)(*(char *)UDR0);
|
|
}
|
|
}
|
|
|
|
+ selectedSerialPort = 0;
|
|
MYSERIAL.flush();
|
|
MYSERIAL.flush();
|
|
int SerialHead = rx_buffer.head;
|
|
int SerialHead = rx_buffer.head;
|
|
|
|
|
|
@@ -143,14 +145,20 @@ uint8_t optiboot_w25x20cl_enter()
|
|
watchdogReset();
|
|
watchdogReset();
|
|
delayMicroseconds(1);
|
|
delayMicroseconds(1);
|
|
if (++ boot_timer > boot_timeout)
|
|
if (++ boot_timer > boot_timeout)
|
|
|
|
+ {
|
|
|
|
|
|
|
|
+ selectedSerialPort = selectedSerialPort_bak;
|
|
return 0;
|
|
return 0;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
ch = rx_buffer.buffer[SerialHead];
|
|
ch = rx_buffer.buffer[SerialHead];
|
|
SerialHead = (unsigned int)(SerialHead + 1) % RX_BUFFER_SIZE;
|
|
SerialHead = (unsigned int)(SerialHead + 1) % RX_BUFFER_SIZE;
|
|
if (pgm_read_byte(ptr ++) != ch)
|
|
if (pgm_read_byte(ptr ++) != ch)
|
|
|
|
+ {
|
|
|
|
|
|
|
|
+ selectedSerialPort = selectedSerialPort_bak;
|
|
return 0;
|
|
return 0;
|
|
|
|
+ }
|
|
watchdogReset();
|
|
watchdogReset();
|
|
}
|
|
}
|
|
cbi(UCSR0B, RXCIE0);
|
|
cbi(UCSR0B, RXCIE0);
|