Index: RTC.c =================================================================== diff -u -re1f9404958c9ddab9b004399fb0870e09e37512b -r409a568e2b1f477d783d0dacf71964d5abe86ac3 --- RTC.c (.../RTC.c) (revision e1f9404958c9ddab9b004399fb0870e09e37512b) +++ RTC.c (.../RTC.c) (revision 409a568e2b1f477d783d0dacf71964d5abe86ac3) @@ -682,7 +682,6 @@ *************************************************************************/ static BOOL isRTCFunctional( void ) { - // TODO: Add alarms BOOL hasTestPassed = TRUE; U16 controlReg1 = rxBuffer[ RTC_REG_1_INDEX ]; U16 controlReg2 = rxBuffer[ RTC_REG_2_INDEX ]; @@ -701,26 +700,32 @@ if ( controlReg1 & RTC_REG_1_12_HOUR_MODE_MASK ) { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RTC_CONFIG_ERROR, controlReg1, RTC_REG_1_12_HOUR_MODE_MASK ); hasTestPassed = FALSE; } if ( controlReg1 & RTC_REG_1_PORO ) { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RTC_CONFIG_ERROR, controlReg1, RTC_REG_1_PORO ); hasTestPassed = FALSE; } if ( controlReg1 & RTC_REG_1_CLK_STOPPED_MASK ) { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RTC_CONFIG_ERROR, controlReg1, RTC_REG_1_CLK_STOPPED_MASK ); hasTestPassed = FALSE; } if ( controlReg1 & RTC_REG_1_UNUSED_MASK ) { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RTC_CONFIG_ERROR, controlReg1, RTC_REG_1_UNUSED_MASK ); hasTestPassed = FALSE; } if ( controlReg1 & RTC_REG_1_EXT_CLK_MODE_MASK ) { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RTC_CONFIG_ERROR, controlReg1, RTC_REG_1_EXT_CLK_MODE_MASK ); hasTestPassed = FALSE; } if ( controlReg3 & RTC_REG_3_BLF_MASK ) { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RTC_BATTERY_LOW, controlReg3, RTC_REG_3_BLF_MASK ); hasTestPassed = FALSE; } @@ -952,15 +957,10 @@ { RTC_EXEC_STATE_T result = RTC_EXEC_STATE_WAIT_FOR_POST; - if ( RTCSelfTestState == RTC_SELF_TEST_STATE_COMPLETE && - RTCSelfTestResult == SELF_TEST_STATUS_PASSED ) + if ( RTCSelfTestState == RTC_SELF_TEST_STATE_COMPLETE ) { result = RTC_EXEC_STATE_IDLE; } - else if ( RTCSelfTestState == RTC_SELF_TEST_STATE_COMPLETE ) - { - result = RTC_EXEC_STATE_IDLE; - } return result; } @@ -1044,7 +1044,8 @@ } else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { - result = RTC_EXEC_STATE_FAULT; + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_RTC_RAM_OPS_ERROR, result ); + result = RTC_EXEC_STATE_IDLE; hasWriteToRTCRequested = FALSE; } @@ -1078,7 +1079,8 @@ } else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { - result = RTC_EXEC_STATE_FAULT; + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_RTC_RAM_OPS_ERROR, result ); + result = RTC_EXEC_STATE_IDLE; } return result; @@ -1106,8 +1108,9 @@ } else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { - result = RTC_EXEC_STATE_IDLE; RTCRAMStatus = RTC_RAM_STATUS_FAILED; + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RTC_RAM_OPS_ERROR, result, RTCRAMStatus ); + result = RTC_EXEC_STATE_IDLE; hasWriteToRAMRequested = FALSE; } @@ -1136,8 +1139,9 @@ } else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { + RTCRAMStatus = RTC_RAM_STATUS_FAILED; + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_RTC_RAM_OPS_ERROR, result, RTCRAMStatus ); result = RTC_EXEC_STATE_IDLE; - RTCRAMStatus = RTC_RAM_STATUS_COMPLETE; hasReadFromRAMRequested = FALSE; } @@ -1168,16 +1172,14 @@ lastEpochTime = convertTime2Epoch(); timeCounter = 1; broadcastRTCEpoch( lastEpochTime ); - result = RTC_EXEC_STATE_IDLE; } - else - { - result = RTC_EXEC_STATE_FAULT; - } + + result = RTC_EXEC_STATE_IDLE; } else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { - result = RTC_EXEC_STATE_FAULT; + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_RTC_RAM_OPS_ERROR, result ); + result = RTC_EXEC_STATE_IDLE; } return result; @@ -1353,6 +1355,7 @@ if ( elapsedTime > 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 ); } else {