Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rf699178c91a882b71e96ebab9d24bb21005a4526 -re63c54262fd4ccd8ffd9ef9bb49e66458893528f --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision f699178c91a882b71e96ebab9d24bb21005a4526) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision e63c54262fd4ccd8ffd9ef9bb49e66458893528f) @@ -306,7 +306,15 @@ U32 const elapsedSelfTestTimeInSecs = calcTimeSince( selfTestStartTime ) / MS_PER_SECOND; selfTestPreviousPublishDataTime = getMSTimerCount(); - broadcastNoCartSelfTestTime( MAX_NO_CARTRIDGE_SELF_TEST_TIME, ( MAX_NO_CARTRIDGE_SELF_TEST_TIME - elapsedSelfTestTimeInSecs ) ); + + if ( elapsedSelfTestTimeInSecs <= MAX_NO_CARTRIDGE_SELF_TEST_TIME ) + { + broadcastNoCartSelfTestTime( MAX_NO_CARTRIDGE_SELF_TEST_TIME, ( MAX_NO_CARTRIDGE_SELF_TEST_TIME - elapsedSelfTestTimeInSecs ) ); + } + else + { + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_NO_CART_SELF_TEST_TIMEOUT, currentNoCartSelfTestsState ); + } } } @@ -437,7 +445,15 @@ U32 const elapsedSelfTestTimeInSecs = calcTimeSince( selfTestStartTime ) / MS_PER_SECOND; selfTestPreviousPublishDataTime = getMSTimerCount(); - broadcastDrySelfTestTime( MAX_DRY_SELF_TEST_TIME, ( MAX_DRY_SELF_TEST_TIME - elapsedSelfTestTimeInSecs ) ); + + if ( elapsedSelfTestTimeInSecs <= MAX_DRY_SELF_TEST_TIME ) + { + broadcastDrySelfTestTime( MAX_DRY_SELF_TEST_TIME, ( MAX_DRY_SELF_TEST_TIME - elapsedSelfTestTimeInSecs ) ); + } + else + { + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_DRY_SELF_TEST_TIMEOUT, currentDrySelfTestsState ); + } } }