Index: RTC.c =================================================================== diff -u -ra6005795af5d50ce9248d2801673e16a2fad0001 -rd8773c22f81b8c1cadce1f6308a3e71bfa1f28da --- RTC.c (.../RTC.c) (revision a6005795af5d50ce9248d2801673e16a2fad0001) +++ RTC.c (.../RTC.c) (revision d8773c22f81b8c1cadce1f6308a3e71bfa1f28da) @@ -103,8 +103,8 @@ #define RTC_WRITE_TO_RAM 0x003C ///< RTC write to RAM command (0x003C) #define RTC_READ_FROM_RAM 0x00BD ///< RTC read from RAM command (0x00BD) -#define RTC_ACCURACY_TIMEOUT 1000U ///< RTC accuracy timeout in ms (1000) -#define RTC_ACCURACY_TIMEOUT_TOLERANCE 1050U ///< RTC accuracy timeout tolerance in ms (1050) +#define RTC_ACCURACY_TIMEOUT 1050U ///< RTC accuracy timeout in ms (1050) // TODO - fix test so expecting 1000 ms +#define RTC_ACCURACY_TIMEOUT_TOLERANCE 50U ///< RTC accuracy timeout tolerance in ms (1050) #define RTC_PUBLISH_INTERVAL 18U ///< RTC publish interval in counts (18) #define TIMER_COUNTER_TO_REQUEST_READ 18U ///< Timer counter for reading time from RTC (18) @@ -1285,7 +1285,7 @@ RTC_SELF_TEST_STATE_T result = RTC_SELF_TEST_STATE_WAIT_FOR_SECOND_SECOND; BOOL isStatusOk = serviceRTC( txBuffer, rxBuffer, RTC_GENERAL_BUFFER_LENGTH ); - if ( RTCServiceState == RTC_SERVICE_COMPLETE && isStatusOk ) + if ( RTCServiceState == RTC_SERVICE_COMPLETE && isStatusOk ) // TODO - should probably have a timeout on these waits { if ( isRTCFunctional() ) { @@ -1329,11 +1329,12 @@ if ( didTimeout( RTCSelfTestTimer, RTC_ACCURACY_TIMEOUT ) ) { U32 elapsedTime = calcTimeSince( RTCSelfTestTimer ); + S32 deltaTime = (S32)elapsedTime - (S32)RTC_ACCURACY_TIMEOUT; - if ( elapsedTime > RTC_ACCURACY_TIMEOUT_TOLERANCE ) + if ( abs( deltaTime ) > RTC_ACCURACY_TIMEOUT_TOLERANCE ) { RTCSelfTestResult = SELF_TEST_STATUS_FAILED; - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RTC_OR_TIMER_ACCURACY_FAILURE, elapsedTime, RTC_ACCURACY_TIMEOUT_TOLERANCE ); + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RTC_OR_TIMER_ACCURACY_FAILURE, (U32)deltaTime, RTC_ACCURACY_TIMEOUT_TOLERANCE ); } else {