|
|
|
@ -562,6 +562,18 @@ void checkModemStatus() { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void validateStatus() { |
|
|
|
|
if (OPTIBOOT_MCUSR & (1<<PORF)) { |
|
|
|
|
boot_vector = START_FROM_POWERON; |
|
|
|
|
} else if (OPTIBOOT_MCUSR & (1<<BORF)) { |
|
|
|
|
boot_vector = START_FROM_BROWNOUT; |
|
|
|
|
} else if (OPTIBOOT_MCUSR & (1<<WDRF)) { |
|
|
|
|
boot_vector = START_FROM_BOOTLOADER; |
|
|
|
|
} else { |
|
|
|
|
Serial.write("Error, indeterminate boot vector\r\n"); |
|
|
|
|
led_indicate_boot_error(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (boot_vector == START_FROM_BOOTLOADER) { |
|
|
|
|
if (eeprom_lock_set()) { |
|
|
|
|
if (eeprom_product_valid() && eeprom_model_valid() && eeprom_hwrev_valid()) { |
|
|
|
|
if (eeprom_checksum_valid()) { |
|
|
|
@ -579,6 +591,11 @@ void validateStatus() { |
|
|
|
|
} else { |
|
|
|
|
hw_ready = false; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
hw_ready = false; |
|
|
|
|
Serial.write("Error, incorrect boot vector\r\n"); |
|
|
|
|
led_indicate_boot_error(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void loop() { |
|
|
|
|