h1x0/h300: change when the hold switch and failsafe are used

After reviewing the code awhile I realized that the failsafe and hold
switch have no impact on the boot process when the usb or charger is
connected. That makes no real sense to me. If these are connected then
neither will be used at all. The boot process will never revisit it
either once those other modes end and resume the boot process. It will
just continue to try to boot from disk as if these emergency settings
never existed.

I have decided it makes more sense for them to be evaluated once the
higher priority charge and disk mode have finished their roles. Given
how the code was originally written it seems to be they were not
intended to run prior to these at the very least since the logical
conditions preclude that possibility as they include the inverse of
the conditions that trigger the charge and disk modes.

Change-Id: I0531c97474572c573178f480c239c3c1659f9653
This commit is contained in:
James Buren 2020-11-15 10:33:12 +00:00
parent fc5c8192ff
commit 1bc68d5ad7
2 changed files with 28 additions and 35 deletions

View File

@ -479,19 +479,6 @@ void main(void)
check_battery();
/* Don't start if the Hold button is active on the device you
are starting with */
if ((usb_detect() != USB_INSERTED) && (hold_status || recovery_mode))
{
if (detect_original_firmware())
{
printf("Hold switch on");
shutdown();
}
failsafe_menu();
}
/* Holding REC while starting runs the original firmware */
if (detect_original_firmware() && rec_button)
{
@ -544,10 +531,20 @@ void main(void)
lcd_update();
}
/* boot from flash if that is the default */
try_flashboot();
if (recovery_mode)
printf("Falling back to boot from disk");
/* recheck the hold switch status as it may have changed */
hold_status = (button_hold() || remote_button_hold());
/* hold switch shutdown or failsafe recovery mode */
if (hold_status || recovery_mode)
{
if (detect_original_firmware())
{
printf("Hold switch on");
shutdown();
}
failsafe_menu();
}
rc = storage_init();
if(rc)

View File

@ -473,20 +473,6 @@ void main(void)
if(rtc_alarm)
printf("RTC alarm detected");
/* Don't start if the Hold button is active on the device you
are starting with */
if ((hold_status || recovery_mode) && !rtc_alarm &&
(usb_detect() != USB_INSERTED) && !charger_inserted())
{
if (detect_original_firmware())
{
printf("Hold switch on");
shutdown();
}
failsafe_menu();
}
/* Holding REC while starting runs the original firmware */
if (detect_original_firmware() && rec_button)
{
@ -605,10 +591,20 @@ void main(void)
usb_charge = false;
}
/* boot from flash if that is the default */
try_flashboot();
if (recovery_mode)
printf("Falling back to boot from disk");
/* recheck the hold switch status as it may have changed */
hold_status = (button_hold() || remote_button_hold());
/* hold switch shutdown or failsafe recovery mode */
if (hold_status || recovery_mode)
{
if (detect_original_firmware())
{
printf("Hold switch on");
shutdown();
}
failsafe_menu();
}
rc = storage_init();
if(rc)