Index: firmware/App/Controllers/RTC.c =================================================================== diff -u -r609937ae79b4b77a0bd9ac180d38425b0b6922fb -rca4b67841f4c9136401a2f1011668eb0a468f19a --- firmware/App/Controllers/RTC.c (.../RTC.c) (revision 609937ae79b4b77a0bd9ac180d38425b0b6922fb) +++ firmware/App/Controllers/RTC.c (.../RTC.c) (revision ca4b67841f4c9136401a2f1011668eb0a468f19a) @@ -179,7 +179,7 @@ static U32 convertTime2Epoch(); static void updateReadTimestampStruct(); static BOOL setMibSPIBufferLength( U16 length ); -static void prepBufferForReadCommand( U16 length ); // Puts the read command +static void prepBufferForReadCommand( U08 length ); // Puts the read command static RTC_SELF_TEST_STATE_T handleSelfTestStart(); static RTC_SELF_TEST_STATE_T handleSelfTestCheckCtrlRegs(); @@ -765,7 +765,20 @@ t.tm_hour = RTCTimestampStruct.hours; t.tm_mday = RTCTimestampStruct.days; t.tm_mon = RTCTimestampStruct.months - 1; + // Disabled daylight saving + // If daylight saving is not disabled, MinGW in VectorCAST + // may or may not calculate the value right + t.tm_isdst= 0; + +#ifndef _VECTORCAST_ t.tm_year = RTCTimestampStruct.years + 2000 - 1970; +#else + t.tm_year = RTCTimestampStruct.years + 2000 - 1900; + // MinGW in VectorCAST assumes the time is local while + // the time is in GMT so 8 hours is subtracted from the hour + // to simulate GMT for VectorCAST + t.tm_hour = t.tm_hour - 8; +#endif epochTime = mktime(&t); @@ -883,7 +896,7 @@ * @param none * @return none *************************************************************************/ -static void prepBufferForReadCommand( U16 length ) +static void prepBufferForReadCommand( U08 length ) { txBuffer[ BUFFER_INDEX_0 ] = RTC_READ_FROM_REG0; @@ -975,7 +988,7 @@ { RTC_EXEC_STATE_T result = RTC_EXEC_STATE_WRITE; - BOOL isStatusOk = serviceRTC( &txBuffer[ BUFFER_INDEX_0 ], &rxBuffer[ BUFFER_INDEX_0 ], RTC_TIMESTAMP_BUFFER_LENGTH ); + BOOL isStatusOk = serviceRTC( txBuffer, rxBuffer, RTC_TIMESTAMP_BUFFER_LENGTH ); if ( RTCServiceState == RTC_SERVICE_COMPLETE && isStatusOk ) { @@ -1009,7 +1022,7 @@ { RTC_EXEC_STATE_T result = RTC_EXEC_STATE_PREP_RAM; - BOOL isStatusOk = serviceRTC( &txBuffer[ BUFFER_INDEX_0 ], &RAMBuffer[ BUFFER_INDEX_0 ], RTC_RAM_PREP_BUFFER_LENGTH ); + BOOL isStatusOk = serviceRTC( txBuffer, RAMBuffer, RTC_RAM_PREP_BUFFER_LENGTH ); if ( RTCServiceState == RTC_SERVICE_COMPLETE && isStatusOk ) { @@ -1043,7 +1056,7 @@ { RTC_EXEC_STATE_T result = RTC_EXEC_STATE_WRITE_TO_RAM; - BOOL isStatusOk = serviceRTC( &txBuffer[ BUFFER_INDEX_3 ], &RAMBuffer[ BUFFER_INDEX_0 ], RAMBufferLength + 1 ); + BOOL isStatusOk = serviceRTC( txBuffer, RAMBuffer, RAMBufferLength + 1 ); if ( RTCServiceState == RTC_SERVICE_COMPLETE && isStatusOk ) { @@ -1078,7 +1091,7 @@ { RTC_EXEC_STATE_T result = RTC_EXEC_STATE_READ_FROM_RAM; - BOOL isStatusOk = serviceRTC( &txBuffer[ BUFFER_INDEX_3 ], &RAMBuffer[ BUFFER_INDEX_0 ], RAMBufferLength + 1 ); + BOOL isStatusOk = serviceRTC( txBuffer, RAMBuffer, RAMBufferLength + 1 ); if ( RTCServiceState == RTC_SERVICE_COMPLETE && isStatusOk ) { @@ -1115,7 +1128,7 @@ { RTC_EXEC_STATE_T result = RTC_EXEC_STATE_READ; - BOOL isStatusOk = serviceRTC( &txBuffer[ BUFFER_INDEX_0 ], &rxBuffer[ BUFFER_INDEX_0 ], RTC_GENERAL_BUFFER_LENGTH ); + BOOL isStatusOk = serviceRTC( txBuffer, rxBuffer, RTC_GENERAL_BUFFER_LENGTH ); if ( RTCServiceState == RTC_SERVICE_COMPLETE && isStatusOk ) { @@ -1176,7 +1189,7 @@ { RTC_SELF_TEST_STATE_T result = RTC_SELF_TEST_STATE_CHECK_CTRL_REGS; - BOOL isStatusOk = serviceRTC( &txBuffer[ BUFFER_INDEX_0 ], &rxBuffer[ BUFFER_INDEX_0 ], RTC_GENERAL_BUFFER_LENGTH ); + BOOL isStatusOk = serviceRTC( txBuffer, rxBuffer, RTC_GENERAL_BUFFER_LENGTH ); if ( RTCServiceState == RTC_SERVICE_COMPLETE && isStatusOk ) { @@ -1217,7 +1230,7 @@ { RTC_SELF_TEST_STATE_T result = RTC_SELF_TEST_STATE_WAIT_FOR_FIRST_SECOND; - BOOL isStatusOk = serviceRTC( &txBuffer[ BUFFER_INDEX_0 ], &rxBuffer[ BUFFER_INDEX_0 ], RTC_GENERAL_BUFFER_LENGTH ); + BOOL isStatusOk = serviceRTC( txBuffer, rxBuffer, RTC_GENERAL_BUFFER_LENGTH ); if ( RTCServiceState == RTC_SERVICE_COMPLETE && isStatusOk ) { @@ -1263,7 +1276,7 @@ { RTC_SELF_TEST_STATE_T result = RTC_SELF_TEST_STATE_WAIT_FOR_SECOND_SECOND; - BOOL isStatusOk = serviceRTC( &txBuffer[ BUFFER_INDEX_0 ], &rxBuffer[ BUFFER_INDEX_0 ], RTC_GENERAL_BUFFER_LENGTH ); + BOOL isStatusOk = serviceRTC( txBuffer, rxBuffer, RTC_GENERAL_BUFFER_LENGTH ); if ( RTCServiceState == RTC_SERVICE_COMPLETE && isStatusOk ) { Index: firmware/App/Controllers/RTC.h =================================================================== diff -u -r408e6e577818831b985f28e6bf777cd9f65b9849 -rca4b67841f4c9136401a2f1011668eb0a468f19a --- firmware/App/Controllers/RTC.h (.../RTC.h) (revision 408e6e577818831b985f28e6bf777cd9f65b9849) +++ firmware/App/Controllers/RTC.h (.../RTC.h) (revision ca4b67841f4c9136401a2f1011668eb0a468f19a) @@ -19,16 +19,6 @@ #include "Common.h" -void initRTC(); - -void execRTC(); - -void setRTCTimestamp( U08 secs, U08 mins, U08 hours, U08 days, U08 months, U16 years ); - -U32 getRTCTimestamp(); - -SELF_TEST_STATUS_T execRTCSelfTest(); - typedef enum RTC_RAM_STATUS { RTC_RAM_STATUS_IDLE = 0, @@ -47,6 +37,16 @@ } RTC_RAM_STATE_T; +void initRTC(); + +void execRTC(); + +void setRTCTimestamp( U08 secs, U08 mins, U08 hours, U08 days, U08 months, U16 years ); + +U32 getRTCTimestamp(); + +SELF_TEST_STATUS_T execRTCSelfTest(); + RTC_RAM_STATUS_T writeToRAM( U16 address, U16* data, U32 length ); RTC_RAM_STATUS_T readFromRAM( U16 address, U32 length ); @@ -58,10 +58,3 @@ void getDataFromRAM( U16* externalBuffer, U32 length ); #endif - - - - - - -