Contains necessary classes and functions for ELEC351

/media/uploads/Luka_Danilovic/elec_315_prototype_assembly.jpg

loggingMaster/dateAndTime.cpp

Committer:
Luka_Danilovic
Date:
2017-12-24
Revision:
0:f44c89c33601
Child:
1:4825c27dfbc9

File content as of revision 0:f44c89c33601:

#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 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;

    // 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

    return date_time;   // Return custom data type containing Date & Time
}


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
}


void C_DT::setD(int yr, int mnt, int day)    // 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
}