I2C reboot procedure for EIVE system #578

Merged
muellerr merged 17 commits from feature_i2c_reboot_procedure into develop 2023-04-07 11:07:05 +02:00
2 changed files with 5 additions and 2 deletions
Showing only changes of commit e9fc0c453d - Show all commits

View File

@ -68,9 +68,11 @@ static constexpr Event REBOOT_COUNTER = event::makeEvent(SUBSYSTEM_ID, 7, severi
//! P1: First 16 bits boot count of image 0 0, last 16 bits boot count of image 0 1. //! P1: First 16 bits boot count of image 0 0, last 16 bits boot count of image 0 1.
//! P2: First 16 bits boot count of image 1 0, last 16 bits boot count of image 1 1. //! P2: First 16 bits boot count of image 1 0, last 16 bits boot count of image 1 1.
static constexpr Event INDIVIDUAL_BOOT_COUNTS = event::makeEvent(SUBSYSTEM_ID, 8, severity::INFO); static constexpr Event INDIVIDUAL_BOOT_COUNTS = event::makeEvent(SUBSYSTEM_ID, 8, severity::INFO);
//! [EXPORT] : [COMMENT] I2C is unavailable. Triggered to system object can take further steps //! [EXPORT] : [COMMENT] I2C is unavailable. Trying recovery of I2C bus by power cycling all I2C
//! like I2C reboot or reboot. //! devices.
static constexpr Event TRYING_I2C_RECOVERY = event::makeEvent(SUBSYSTEM_ID, 10, severity::MEDIUM); static constexpr Event TRYING_I2C_RECOVERY = event::makeEvent(SUBSYSTEM_ID, 10, severity::MEDIUM);
//! [EXPORT] : [COMMENT] I2C is unavailable. Recovery did not work, performing full reboot.
static constexpr Event I2C_REBOOT = event::makeEvent(SUBSYSTEM_ID, 10, severity::MEDIUM);
} // namespace core } // namespace core

View File

@ -169,6 +169,7 @@ void EiveSystem::i2cRecoveryLogic() {
if (i2cRecoveryClearCountdown.hasTimedOut()) { if (i2cRecoveryClearCountdown.hasTimedOut()) {
i2cErrors = 0; i2cErrors = 0;
alreadyTriedI2cRecovery = false; alreadyTriedI2cRecovery = false;
i2cRebootHandlingCountdown.resetTimer();
} }
// If an I2C recovery is not ongoing and the I2C error counter is above a threshold, try // If an I2C recovery is not ongoing and the I2C error counter is above a threshold, try
// recovery or reboot if recovery was already attempted. // recovery or reboot if recovery was already attempted.