Luka Danilovic
/
ELEC351_10497267_SUBMISSION
ELEC351 SUBMISSION - Same as on the DLE
Diff: ELEC351_LIBRARY/loggingMaster/dateAndTime.cpp
- Revision:
- 0:c66224a27cf8
diff -r 000000000000 -r c66224a27cf8 ELEC351_LIBRARY/loggingMaster/dateAndTime.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ELEC351_LIBRARY/loggingMaster/dateAndTime.cpp Wed Jan 10 09:49:43 2018 +0000 @@ -0,0 +1,57 @@ +#include "mbed.h" +#include "dateAndTime.hpp" + +TDS_DT C_DT::getDT() // Returns TDS_DT Date & Time format +{ + time_t secondsElapsed; // Object of type time_t + struct tm *tempTimeInfo; // Pointer to a embeded structure containing calendar dates + + time(&secondsElapsed); // Get time is seconds since epoch. Also hope people are ready for UNIX milenium bug + tempTimeInfo = localtime (&secondsElapsed); // Convert current epoch time to calendar time acounting for timezones & daylight saving + + // Reasign date components to custom data type + this-> date_time.day = tempTimeInfo->tm_mday; + this-> date_time.mnt = 1+tempTimeInfo->tm_mon; // Months indexed at 1 + this-> date_time.yr = 1900 + tempTimeInfo->tm_year; // Years since epoch + + // Reasign time components to custom data type + this-> date_time.sec = tempTimeInfo->tm_sec; + this-> date_time.min = tempTimeInfo->tm_min; + this-> date_time.hr = tempTimeInfo->tm_hour; + + return date_time; // Return custom data type containing Date & Time +} + + +void C_DT::setD(int day, int mnt, int yr) // Updates RTC date +{ + time_t secondsElapsed; // Object of type time_t + struct tm *tempTimeInfo; // Pointer to a embeded structure containing calendar dates + + time(&secondsElapsed); // Get time is seconds since epoch. + tempTimeInfo = localtime (&secondsElapsed); // Convert current epoch time to calendar time acounting for timezones & daylight saving + + tempTimeInfo->tm_mday = day; // Update day + tempTimeInfo->tm_mon = mnt - 1; // Update month / Indexed at 0 + tempTimeInfo->tm_year = yr - 1900 ; // Update year / Years since epoch + + secondsElapsed = mktime(tempTimeInfo); // Convert to epoch time + set_time(secondsElapsed); // Update RTC +} + + +void C_DT::setT(int hr, int min, int sec) // Updates RTC time +{ + time_t secondsElapsed; // Object of type time_t + struct tm *tempTimeInfo; // Pointer to a embeded structure containing calendar dates + + time(&secondsElapsed); // Get time is seconds since epoch. + tempTimeInfo = localtime (&secondsElapsed); // Convert current epoch time to calendar time acounting for timezones & daylight saving + + tempTimeInfo->tm_sec = sec; // Update seconds + tempTimeInfo->tm_min = min; // Update minutes + tempTimeInfo->tm_hour = hr; // Update hours + + secondsElapsed = mktime(tempTimeInfo); // Convert to epoch time + set_time(secondsElapsed); // Update RTC +} \ No newline at end of file