Thomas Morris / Mbed OS PROJ324_Final

Fork of ELEC351_Group_T by Plymouth ELEC351 Group T

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TIME.cpp Source File

TIME.cpp

00001 #include "TIME.hpp"
00002 
00003 
00004 using namespace std;
00005 
00006 Mutex Time_Lock;                    //Declare MUTEX
00007 
00008 int current_time_global = 0;        //Declare required variable
00009 int new_time = 0;                   //Declare required variable
00010 
00011 int get_current_time()              //Get Current Time
00012 {
00013     Time_Lock.lock();               //Apply MUTEX lock
00014     current_time_global = time(0);  //Get current time
00015     Time_Lock.unlock();             //Release MUTEX lock
00016     return current_time_global;     //Return the current time
00017 }
00018 
00019 void set_new_date(int days, int months, int years)                                                      //Set new date
00020 {
00021     Time_Lock.lock();                                                                                   //Apply MUTEX lock
00022     time_t Time = time(NULL);                                                                           //Get system time
00023     Time_Lock.unlock();                                                                                 //Release MUTEX lock                                                                         
00024     tm* Time_Pointer = localtime(&Time);                                                                //Create pointer to Time
00025     set_time(get_current_time() - year*(Time_Pointer->tm_year - 70) + year*(years - 1970));             //Set the year     
00026     set_time(get_current_time() - month*Time_Pointer->tm_mon + month*(months - 1));                     //Set the month
00027     set_time(get_current_time() - day*Time_Pointer->tm_mday + day*days);                                //Set the day
00028 }
00029 
00030 void set_new_time(int hours, int minutes, int seconds)                                                  //Set new time
00031 {
00032     Time_Lock.lock();                                                                                   //Apply MUTEX lock
00033     time_t Time = time(NULL);                                                                           //Get system time
00034     Time_Lock.unlock();                                                                                 //Release MUTEX lock
00035     tm* Time_Pointer = localtime(&Time);                                                                //Create pointer to Time 
00036     set_time(get_current_time() - second*Time_Pointer->tm_sec + second*seconds);                        //Set the second
00037     set_time(get_current_time() - minute*Time_Pointer->tm_min + minute*minutes);                        //Set the minute
00038     set_time(get_current_time() - hour*Time_Pointer->tm_hour + hour*hours);                             //Set the hour
00039 }
00040 
00041 void Add_Second()                   //Add one second to current time
00042 {
00043     Time_Lock.lock();               //Apply MUTEX lock
00044     new_time = time(0) + 1;         //Calculate new time
00045     Time_Lock.unlock();             //Release MUTEX lock
00046     set_time(new_time);             //Set new time
00047 }
00048 
00049 void Subtract_Second()              //Subtract one second from current time
00050 {
00051     Time_Lock.lock();               //Apply MUTEX lock
00052     new_time = time(0) - 1;         //Calculate new time
00053     Time_Lock.unlock();             //Release MUTEX lock
00054     set_time(new_time);             //Set new time   
00055 }
00056 
00057 void Add_Minute()                   //Add one minute to the current time
00058 {
00059     Time_Lock.lock();               //Apply MUTEX lock
00060     new_time = time(0) + 60;        //Calculate new time
00061     Time_Lock.unlock();             //Release MUTEX lock
00062     set_time(new_time);             //Set new time
00063 }
00064 
00065 void Subtract_Minute()              //Subtract one minute from current time
00066 {
00067     Time_Lock.lock();               //Apply MUTEX lock
00068     new_time = time(0) - 60;        //Calculate new time
00069     Time_Lock.unlock();             //Release MUTEX lock
00070     set_time(new_time);             //Set new time
00071     
00072 }
00073 
00074 void Add_Hour()                     //Add one hour to the current time
00075 {
00076     Time_Lock.lock();               //Apply MUTEX lock
00077     new_time = time(0) + 3600;      //Calculate new time
00078     Time_Lock.unlock();             //Release MUTEX lock
00079     set_time(new_time);             //Set new time
00080 }
00081 
00082 void Subtract_Hour()                //Subtract one hour from the current time
00083 {
00084     Time_Lock.lock();               //Apply MUTEX lock
00085     new_time = time(0) - 3600;      //Calculate new time  
00086     Time_Lock.unlock();             //Release MUTEX lock
00087     set_time(new_time);             //Set new time
00088 }
00089 
00090 void Add_Day()                      //Add one day to the current time
00091 {
00092     Time_Lock.lock();               //Apply MUTEX lock
00093     new_time = time(0) + 86400;     //Calculate new time 
00094     Time_Lock.unlock();             //Release MUTEX lock
00095     set_time(new_time);             //Set new time
00096 }
00097 
00098 void Subtract_Day()                 //Subtract one day from the current time
00099 {
00100     Time_Lock.lock();               //Apply MUTEX lock
00101     new_time = time(0) - 86400;     //Calculate new time
00102     Time_Lock.unlock();             //Release MUTEX lock
00103     set_time(new_time);             //Set new time
00104 }
00105 
00106 void Add_Month()                    //Add one month to current time
00107 {
00108     Time_Lock.lock();               //Apply MUTEX lock
00109     new_time = time(0) + 2629743;   //Calculate new time
00110     Time_Lock.unlock();             //Release MUTEX lock
00111     set_time(new_time);             //Set new time
00112 }
00113 
00114 void Subtract_Month()               //Subtract one month from current time
00115 {
00116     Time_Lock.lock();               //Apply MUTEX lock
00117     new_time = time(0) - 2629743;   //Calculate new time
00118     Time_Lock.unlock();             //Release MUTEX lock
00119     set_time(new_time);             //Set new time
00120 }
00121 
00122 void Add_Year()                     //Add one year to current time
00123 {
00124     Time_Lock.lock();               //Apply MUTEX lock
00125     new_time = time(0) + 31556926;  //Calculate new time
00126     Time_Lock.unlock();             //Release MUTEX lock
00127     set_time(new_time);             //Set new time
00128 }
00129 
00130 void Subtract_Year()                //Subtract one year from current time
00131 {   
00132     Time_Lock.lock();               //Apply MUTEX lock
00133     new_time = time(0) - 31556926;  //Calculate new time  
00134     Time_Lock.unlock();             //Release MUTEX lock
00135     set_time(new_time);             //Set new time
00136 }