Index: firmware/App/Controllers/RTC.c =================================================================== diff -u -rdfdd3cf20e2c41415a6b16d5b0c9dc53819b7399 -r609937ae79b4b77a0bd9ac180d38425b0b6922fb --- firmware/App/Controllers/RTC.c (.../RTC.c) (revision dfdd3cf20e2c41415a6b16d5b0c9dc53819b7399) +++ firmware/App/Controllers/RTC.c (.../RTC.c) (revision 609937ae79b4b77a0bd9ac180d38425b0b6922fb) @@ -102,16 +102,17 @@ RTC_SELF_TEST_STATE_CHECK_CTRL_REGS, RTC_SELF_TEST_STATE_WAIT_FOR_FIRST_SECOND, RTC_SELF_TEST_STATE_WAIT_FOR_SECOND_SECOND, - RTC_SELF_TEST_STATE_COMPARE_SECONDS, RTC_SELF_TEST_STATE_CHECK_ACCURACY, - RTC_SELF_TEST_STATE_COMPLETE + RTC_SELF_TEST_STATE_COMPLETE, + NUM_OF_RTC_SELF_TEST_STATES } RTC_SELF_TEST_STATE_T; typedef enum RTC_Read_Data { RTC_SEND_COMMAND = 0, RTC_WAIT_FOR_TRANSFER_AND_READ, - RTC_SERVICE_COMPLETE + RTC_SERVICE_COMPLETE, + NUM_OF_RTC_SERVICE_STATES } RTC_GET_DATA_STATE_T; typedef enum RTC_Exec_State @@ -123,7 +124,8 @@ RTC_EXEC_STATE_READ_FROM_RAM, RTC_EXEC_STATE_READ, RTC_EXEC_STATE_WRITE, - RTC_EXEC_STATE_FAULT + RTC_EXEC_STATE_FAULT, + NUM_OF_RTC_EXEC_STATES } RTC_EXEC_STATE_T; #pragma pack(push,4) @@ -161,7 +163,7 @@ static BOOL hasWriteToRTCRequested = FALSE; static BOOL hasWriteToRAMRequested = FALSE; static BOOL hasReadFromRAMRequested = FALSE; -static BOOL hasServiceRTCRequested = FALSE; +static BOOL isRTCServiceOnEntry = FALSE; static U16 rxBuffer[ MIBSPI_MAX_BUFFER_LENGTH + 1 ]; static U16 txBuffer[ MIBSPI_MAX_BUFFER_LENGTH + 1 ]; @@ -206,7 +208,8 @@ *************************************************************************/ void initRTC() { - RTCSelfTestState = RTC_SELF_TEST_STATE_START; + RTCSelfTestState = RTC_SELF_TEST_STATE_START; + RTCServiceState = RTC_SEND_COMMAND; } /************************************************************************* @@ -531,15 +534,15 @@ // ********** Private functions ********* -void mibspiNotification(mibspiBASE_t *mibspi, uint32 flags) +/*void mibspiNotification(mibspiBASE_t *mibspi, uint32 flags) { } void mibspiGroupNotification(mibspiBASE_t *mibspi, uint32 group) { -} +} */ /************************************************************************* @@ -560,13 +563,11 @@ static BOOL serviceRTC( U16* bufferTransmit, U16* bufferReceive, U16 bufferLength ) { BOOL result = FALSE; - BOOL bufferStatus = FALSE; - if ( !hasServiceRTCRequested ) + if ( isRTCServiceOnEntry ) { RTCServiceState = RTC_SEND_COMMAND; - hasServiceRTCRequested = TRUE; } switch ( RTCServiceState ) @@ -585,29 +586,24 @@ if ( bufferStatus ) { mibspiSetData( mibspiREG3, MIBSPI_GROUP_ZERO, bufferTransmit ); - mibspiTransfer( mibspiREG3, MIBSPI_GROUP_ZERO ); - - numberOfFailedRTCTransfers = 1; - + numberOfFailedRTCTransfers = 0; previousTransferLength = bufferLength; - RTCServiceState = RTC_WAIT_FOR_TRANSFER_AND_READ; } else { RTCServiceState = RTC_SERVICE_COMPLETE; } + isRTCServiceOnEntry = FALSE; break; case RTC_WAIT_FOR_TRANSFER_AND_READ: if ( mibspiIsTransferComplete( mibspiREG3, MIBSPI_GROUP_ZERO ) ) { mibspiGetData( mibspiREG3, MIBSPI_GROUP_ZERO, bufferReceive ); - RTCServiceState = RTC_SERVICE_COMPLETE; - result = TRUE; } else if ( numberOfFailedRTCTransfers >= MAX_ALLOWED_FAILED_RTC_TRANSFERS ) @@ -620,12 +616,12 @@ // should be done in 50ms numberOfFailedRTCTransfers++; } - - hasServiceRTCRequested = FALSE; + // Done with read (successful of failed) + // get ready for another call + isRTCServiceOnEntry = TRUE; break; case RTC_SERVICE_COMPLETE: - // Done with reading and transfer break; @@ -917,8 +913,7 @@ { result = RTC_EXEC_STATE_IDLE; } - else if ( RTCSelfTestState == RTC_SELF_TEST_STATE_COMPLETE && - RTCSelfTestResult == SELF_TEST_STATUS_FAILED ) + else if ( RTCSelfTestState == RTC_SELF_TEST_STATE_COMPLETE ) { result = RTC_EXEC_STATE_FAULT; } @@ -991,7 +986,7 @@ result = RTC_EXEC_STATE_IDLE; } - else if ( RTCServiceState == RTC_SERVICE_COMPLETE && !isStatusOk ) + else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { result = RTC_EXEC_STATE_FAULT; @@ -1027,7 +1022,7 @@ result = RTC_EXEC_STATE_READ_FROM_RAM; } } - else if ( RTCServiceState == RTC_SERVICE_COMPLETE && !isStatusOk ) + else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { result = RTC_EXEC_STATE_FAULT; } @@ -1058,7 +1053,7 @@ hasWriteToRAMRequested = FALSE; } - else if ( RTCServiceState == RTC_SERVICE_COMPLETE && !isStatusOk ) + else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { result = RTC_EXEC_STATE_IDLE; @@ -1093,7 +1088,7 @@ hasReadFromRAMRequested = FALSE; } - else if ( RTCServiceState == RTC_SERVICE_COMPLETE && !isStatusOk ) + else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { result = RTC_EXEC_STATE_IDLE; @@ -1127,19 +1122,16 @@ if ( isRTCFunctional() ) { updateReadTimestampStruct(); - lastEpochTime = convertTime2Epoch(); - timeCounter = 1; - result = RTC_EXEC_STATE_IDLE; } else { result = RTC_EXEC_STATE_FAULT; } } - else if ( RTCServiceState == RTC_SERVICE_COMPLETE && !isStatusOk ) + else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { result = RTC_EXEC_STATE_FAULT; } @@ -1201,7 +1193,7 @@ result = RTC_SELF_TEST_STATE_COMPLETE; } } - else if ( RTCServiceState == RTC_SERVICE_COMPLETE && !isStatusOk ) + else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { RTCSelfTestResult = SELF_TEST_STATUS_FAILED; result = RTC_SELF_TEST_STATE_COMPLETE; @@ -1247,7 +1239,7 @@ result = RTC_SELF_TEST_STATE_COMPLETE; } } - else if ( RTCServiceState == RTC_SERVICE_COMPLETE && !isStatusOk ) + else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { RTCSelfTestResult = SELF_TEST_STATUS_FAILED; result = RTC_SELF_TEST_STATE_COMPLETE; @@ -1290,7 +1282,7 @@ result = RTC_SELF_TEST_STATE_COMPLETE; } } - else if ( RTCServiceState == RTC_SERVICE_COMPLETE && !isStatusOk ) + else if ( RTCServiceState == RTC_SERVICE_COMPLETE ) { RTCSelfTestResult = SELF_TEST_STATUS_FAILED; result = RTC_SELF_TEST_STATE_COMPLETE;