Index: RTC.c =================================================================== diff -u -r83cd75ac87bb8eb4f130c6b149156a91a756b17d -r1fefd39b8a84c561aae2e4f95149661452f238c9 --- RTC.c (.../RTC.c) (revision 83cd75ac87bb8eb4f130c6b149156a91a756b17d) +++ RTC.c (.../RTC.c) (revision 1fefd39b8a84c561aae2e4f95149661452f238c9) @@ -717,6 +717,9 @@ * @details Outputs: isRTCServiceOnEntry, RTCServiceState, numberOfFailedRTCTransfers, * previousTransferLength * @return TRUE if RTC operation was successful + * + * @NOTE If function returns false and RTCServiceOnEntry is RTC_SERVICE_COMPLETE + * indicates that the function failed. *************************************************************************/ static BOOL serviceRTC( U16* bufferTransmit, U16* bufferReceive, U16 bufferLength ) { @@ -744,7 +747,6 @@ { mibspiSetData( mibspiREG3, MIBSPI_GROUP_ZERO, bufferTransmit ); mibspiTransfer( mibspiREG3, MIBSPI_GROUP_ZERO ); - numberOfFailedRTCTransfers = 0; previousTransferLength = bufferLength; RTCServiceState = RTC_WAIT_FOR_TRANSFER_AND_READ; } @@ -760,11 +762,13 @@ { mibspiGetData( mibspiREG3, MIBSPI_GROUP_ZERO, bufferReceive ); RTCServiceState = RTC_SERVICE_COMPLETE; + numberOfFailedRTCTransfers = 0; result = TRUE; } else if ( numberOfFailedRTCTransfers >= MAX_ALLOWED_FAILED_RTC_TRANSFERS ) { RTCServiceState = RTC_SERVICE_COMPLETE; + numberOfFailedRTCTransfers = 0; } else { @@ -774,13 +778,14 @@ snprintf( debugEventBuffer, sizeof( debugEventBuffer ), "$RTC SPI: %d, %d", RTCServiceState, numberOfFailedRTCTransfers ); broadcastData( DEBUG_EVENT_MSG_ID, COMM_BUFFER_OUT_CAN_BROADCAST, debugEventBuffer, sizeof( debugEventBuffer ) ); } - // Done with read (successful of failed) + // Done with read (successful or failed) // get ready for another call isRTCServiceOnEntry = TRUE; break; case RTC_SERVICE_COMPLETE: // Done with reading and transfer + numberOfFailedRTCTransfers = 0; break; default: