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 ) {