For coursework of group 3 in SOFT564Z

Dependencies:   Motordriver ros_lib_kinetic

Committer:
Jonathan738
Date:
Sun Jan 05 15:42:22 2020 +0000
Revision:
12:82b8fe254222
Parent:
5:207e0cd8b9de
Added working version of TOF code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jonathan738 5:207e0cd8b9de 1 /*------------------------------------------------------------------------------
Jonathan738 5:207e0cd8b9de 2 Creator : Ben Gordon
Jonathan738 5:207e0cd8b9de 3 Date : 08/01/2019
Jonathan738 5:207e0cd8b9de 4 Module : ELEC351
Jonathan738 5:207e0cd8b9de 5 Note : Code Ripped from coursework of Group A for ELEC351
Jonathan738 5:207e0cd8b9de 6 ------------------------------------------------------------------------------*/
Jonathan738 5:207e0cd8b9de 7 #include "dateTime.hpp"
Jonathan738 5:207e0cd8b9de 8 #include "Debug.hpp"
Jonathan738 5:207e0cd8b9de 9
Jonathan738 5:207e0cd8b9de 10 struct tm _addTime_struct;
Jonathan738 5:207e0cd8b9de 11 struct tm _setTime_struct;
Jonathan738 5:207e0cd8b9de 12
Jonathan738 5:207e0cd8b9de 13 struct tm _updateTime_struct;
Jonathan738 5:207e0cd8b9de 14
Jonathan738 5:207e0cd8b9de 15 DigitalOut _green(PB_11);
Jonathan738 5:207e0cd8b9de 16 DigitalOut _yellow(PB_10);
Jonathan738 5:207e0cd8b9de 17 DigitalOut _red(PE_15);
Jonathan738 5:207e0cd8b9de 18
Jonathan738 5:207e0cd8b9de 19 char dateTimeStr[20];
Jonathan738 5:207e0cd8b9de 20 char dateStr[11];
Jonathan738 5:207e0cd8b9de 21 char timeStr[9];
Jonathan738 5:207e0cd8b9de 22
Jonathan738 5:207e0cd8b9de 23 extern EventQueue TerminalQueue;
Jonathan738 5:207e0cd8b9de 24 extern Terminal PC;
Jonathan738 5:207e0cd8b9de 25
Jonathan738 5:207e0cd8b9de 26 ////---------------------------SET DATE AND TIME----------------------------////
Jonathan738 5:207e0cd8b9de 27 BYTE setTime(S_BYTE hours, S_BYTE minutes, S_BYTE seconds)
Jonathan738 5:207e0cd8b9de 28 {
Jonathan738 5:207e0cd8b9de 29 //Get currently set time
Jonathan738 5:207e0cd8b9de 30 _setTime_struct = getRawTime();
Jonathan738 5:207e0cd8b9de 31
Jonathan738 5:207e0cd8b9de 32 //Setting Time
Jonathan738 5:207e0cd8b9de 33 _setTime_struct.tm_hour = hours;
Jonathan738 5:207e0cd8b9de 34 _setTime_struct.tm_min = minutes;
Jonathan738 5:207e0cd8b9de 35 _setTime_struct.tm_sec = seconds;
Jonathan738 5:207e0cd8b9de 36
Jonathan738 5:207e0cd8b9de 37 return updateSystemTime();
Jonathan738 5:207e0cd8b9de 38 }
Jonathan738 5:207e0cd8b9de 39
Jonathan738 5:207e0cd8b9de 40 //Setting the date and time
Jonathan738 5:207e0cd8b9de 41 BYTE setDate(S_BYTE days, S_BYTE months, INT_32 years)
Jonathan738 5:207e0cd8b9de 42 {
Jonathan738 5:207e0cd8b9de 43 //Get currently set time
Jonathan738 5:207e0cd8b9de 44 _setTime_struct = getRawTime();
Jonathan738 5:207e0cd8b9de 45
Jonathan738 5:207e0cd8b9de 46 //Setting Date
Jonathan738 5:207e0cd8b9de 47 _setTime_struct.tm_mday = days;
Jonathan738 5:207e0cd8b9de 48 _setTime_struct.tm_mon = months -1;
Jonathan738 5:207e0cd8b9de 49 _setTime_struct.tm_year = years -1900;
Jonathan738 5:207e0cd8b9de 50
Jonathan738 5:207e0cd8b9de 51 return updateSystemTime();
Jonathan738 5:207e0cd8b9de 52 }
Jonathan738 5:207e0cd8b9de 53 ////------------------------------------------------------------------------////
Jonathan738 5:207e0cd8b9de 54 ////////////////////////////////////////////////////////////////////////////////
Jonathan738 5:207e0cd8b9de 55 ////---------------------------ADD DATE AND TIME----------------------------////
Jonathan738 5:207e0cd8b9de 56 void overFlow(INT_32 *base, INT_32 lower, INT_32 upper)
Jonathan738 5:207e0cd8b9de 57 {
Jonathan738 5:207e0cd8b9de 58 if(*base < lower)
Jonathan738 5:207e0cd8b9de 59 {
Jonathan738 5:207e0cd8b9de 60 *base = upper;
Jonathan738 5:207e0cd8b9de 61 }
Jonathan738 5:207e0cd8b9de 62 else if (*base > upper)
Jonathan738 5:207e0cd8b9de 63 {
Jonathan738 5:207e0cd8b9de 64 *base = lower;
Jonathan738 5:207e0cd8b9de 65 }
Jonathan738 5:207e0cd8b9de 66 }
Jonathan738 5:207e0cd8b9de 67
Jonathan738 5:207e0cd8b9de 68 void addDay(S_BYTE days)
Jonathan738 5:207e0cd8b9de 69 {
Jonathan738 5:207e0cd8b9de 70 struct tm _newTime_struct = _addTime_struct;
Jonathan738 5:207e0cd8b9de 71
Jonathan738 5:207e0cd8b9de 72 _newTime_struct.tm_mday = _newTime_struct.tm_mday + days;
Jonathan738 5:207e0cd8b9de 73
Jonathan738 5:207e0cd8b9de 74 overFlow(&_newTime_struct.tm_mday,1,31);
Jonathan738 5:207e0cd8b9de 75
Jonathan738 5:207e0cd8b9de 76 BYTE error = checkStruct(_newTime_struct);
Jonathan738 5:207e0cd8b9de 77
Jonathan738 5:207e0cd8b9de 78 if(!(error > 1))
Jonathan738 5:207e0cd8b9de 79 {
Jonathan738 5:207e0cd8b9de 80 _addTime_struct = _newTime_struct;
Jonathan738 5:207e0cd8b9de 81 }
Jonathan738 5:207e0cd8b9de 82 }
Jonathan738 5:207e0cd8b9de 83
Jonathan738 5:207e0cd8b9de 84 void addMonth(S_BYTE months)
Jonathan738 5:207e0cd8b9de 85 {
Jonathan738 5:207e0cd8b9de 86 struct tm _newTime_struct = _addTime_struct;
Jonathan738 5:207e0cd8b9de 87
Jonathan738 5:207e0cd8b9de 88 _newTime_struct.tm_mon = _newTime_struct.tm_mon + months;
Jonathan738 5:207e0cd8b9de 89
Jonathan738 5:207e0cd8b9de 90 overFlow(&_newTime_struct.tm_mon,1-1,12-1);
Jonathan738 5:207e0cd8b9de 91
Jonathan738 5:207e0cd8b9de 92 BYTE error = checkStruct(_newTime_struct);
Jonathan738 5:207e0cd8b9de 93 if(!(error > 1))
Jonathan738 5:207e0cd8b9de 94 {
Jonathan738 5:207e0cd8b9de 95 _addTime_struct = _newTime_struct;
Jonathan738 5:207e0cd8b9de 96 }
Jonathan738 5:207e0cd8b9de 97 }
Jonathan738 5:207e0cd8b9de 98
Jonathan738 5:207e0cd8b9de 99 void addYear(INT_32 years)
Jonathan738 5:207e0cd8b9de 100 {
Jonathan738 5:207e0cd8b9de 101 struct tm _newTime_struct = _addTime_struct; //Define a structure for the new calculated
Jonathan738 5:207e0cd8b9de 102
Jonathan738 5:207e0cd8b9de 103 _newTime_struct.tm_year = _newTime_struct.tm_year + years; //Update new time
Jonathan738 5:207e0cd8b9de 104
Jonathan738 5:207e0cd8b9de 105 overFlow(&_newTime_struct.tm_year,1970-1900,2106-1900);
Jonathan738 5:207e0cd8b9de 106
Jonathan738 5:207e0cd8b9de 107 BYTE error = checkStruct(_newTime_struct); //Check for errors
Jonathan738 5:207e0cd8b9de 108
Jonathan738 5:207e0cd8b9de 109 if(!(error > 1)) //If no errors are found, update the time structure
Jonathan738 5:207e0cd8b9de 110 {
Jonathan738 5:207e0cd8b9de 111 _addTime_struct = _newTime_struct;
Jonathan738 5:207e0cd8b9de 112 }
Jonathan738 5:207e0cd8b9de 113 }
Jonathan738 5:207e0cd8b9de 114
Jonathan738 5:207e0cd8b9de 115 void addHour(S_BYTE hours)
Jonathan738 5:207e0cd8b9de 116 {
Jonathan738 5:207e0cd8b9de 117 struct tm _newTime_struct = _addTime_struct;
Jonathan738 5:207e0cd8b9de 118
Jonathan738 5:207e0cd8b9de 119 _newTime_struct.tm_hour = _newTime_struct.tm_hour + hours;
Jonathan738 5:207e0cd8b9de 120
Jonathan738 5:207e0cd8b9de 121 overFlow(&_newTime_struct.tm_hour,0,23);
Jonathan738 5:207e0cd8b9de 122
Jonathan738 5:207e0cd8b9de 123 BYTE error = checkStruct(_newTime_struct);
Jonathan738 5:207e0cd8b9de 124 if(!((error > 1)||(_newTime_struct.tm_hour < 0)||(_newTime_struct.tm_hour > 23)))
Jonathan738 5:207e0cd8b9de 125 {
Jonathan738 5:207e0cd8b9de 126 _addTime_struct = _newTime_struct;
Jonathan738 5:207e0cd8b9de 127 }
Jonathan738 5:207e0cd8b9de 128 }
Jonathan738 5:207e0cd8b9de 129
Jonathan738 5:207e0cd8b9de 130 void addMin(S_BYTE minutes)
Jonathan738 5:207e0cd8b9de 131 {
Jonathan738 5:207e0cd8b9de 132 struct tm _newTime_struct = _addTime_struct;
Jonathan738 5:207e0cd8b9de 133
Jonathan738 5:207e0cd8b9de 134 _newTime_struct.tm_min = _newTime_struct.tm_min + minutes;
Jonathan738 5:207e0cd8b9de 135
Jonathan738 5:207e0cd8b9de 136 overFlow(&_newTime_struct.tm_min,0,59);
Jonathan738 5:207e0cd8b9de 137
Jonathan738 5:207e0cd8b9de 138 BYTE error = checkStruct(_newTime_struct);
Jonathan738 5:207e0cd8b9de 139 if(!((error > 1)||(_newTime_struct.tm_min < 0)||(_newTime_struct.tm_min > 59)))
Jonathan738 5:207e0cd8b9de 140 {
Jonathan738 5:207e0cd8b9de 141 _addTime_struct = _newTime_struct;
Jonathan738 5:207e0cd8b9de 142 }
Jonathan738 5:207e0cd8b9de 143 }
Jonathan738 5:207e0cd8b9de 144
Jonathan738 5:207e0cd8b9de 145 void addSec(S_BYTE seconds)
Jonathan738 5:207e0cd8b9de 146 {
Jonathan738 5:207e0cd8b9de 147 struct tm _newTime_struct = _addTime_struct;
Jonathan738 5:207e0cd8b9de 148
Jonathan738 5:207e0cd8b9de 149 _newTime_struct.tm_sec = _newTime_struct.tm_sec + seconds;
Jonathan738 5:207e0cd8b9de 150
Jonathan738 5:207e0cd8b9de 151 overFlow(&_newTime_struct.tm_sec,0,59);
Jonathan738 5:207e0cd8b9de 152
Jonathan738 5:207e0cd8b9de 153 BYTE error = checkStruct(_newTime_struct);
Jonathan738 5:207e0cd8b9de 154 if(!((error > 1)||(_newTime_struct.tm_sec < 0)||(_newTime_struct.tm_sec > 59)))
Jonathan738 5:207e0cd8b9de 155 {
Jonathan738 5:207e0cd8b9de 156 _addTime_struct = _newTime_struct;
Jonathan738 5:207e0cd8b9de 157 }
Jonathan738 5:207e0cd8b9de 158 }
Jonathan738 5:207e0cd8b9de 159
Jonathan738 5:207e0cd8b9de 160 BYTE checkStruct(struct tm check)
Jonathan738 5:207e0cd8b9de 161 {
Jonathan738 5:207e0cd8b9de 162 //Initialise LEDs [for debugging]
Jonathan738 5:207e0cd8b9de 163 _green = 0;
Jonathan738 5:207e0cd8b9de 164 _yellow = 0;
Jonathan738 5:207e0cd8b9de 165 _red = 0;
Jonathan738 5:207e0cd8b9de 166
Jonathan738 5:207e0cd8b9de 167 //Check new set time is within range of valid dates (1970 - 2106)
Jonathan738 5:207e0cd8b9de 168 if((check.tm_year < 1970-1900)||(check.tm_year > 2106-1900))
Jonathan738 5:207e0cd8b9de 169 {
Jonathan738 5:207e0cd8b9de 170 _red = 1;
Jonathan738 5:207e0cd8b9de 171 Error msgs;
Jonathan738 5:207e0cd8b9de 172 msgs.ErrorCode = warning;
Jonathan738 5:207e0cd8b9de 173 msgs.ErrorMSGS = "Year outside of valid range [1970 - 2106]";
Jonathan738 5:207e0cd8b9de 174 TerminalQueue.call(&PC, &Terminal::ERROR_MSGS, msgs);
Jonathan738 5:207e0cd8b9de 175 return 2; //ERROR_2 Year outside of valid range [1970 - 2106]
Jonathan738 5:207e0cd8b9de 176 }
Jonathan738 5:207e0cd8b9de 177
Jonathan738 5:207e0cd8b9de 178 //Update structure with correct dates (e.g. 32/10 would become 1/11)
Jonathan738 5:207e0cd8b9de 179 struct tm _newTime_struct = check;
Jonathan738 5:207e0cd8b9de 180 time_t _newTime_time = mktime(&_newTime_struct);
Jonathan738 5:207e0cd8b9de 181 _newTime_struct = *localtime(&_newTime_time);
Jonathan738 5:207e0cd8b9de 182
Jonathan738 5:207e0cd8b9de 183 //Check structure has remained same (if not, invalid input has been entered (eg 32nd day or 61s minute)
Jonathan738 5:207e0cd8b9de 184 if((check.tm_year != _newTime_struct.tm_year)||
Jonathan738 5:207e0cd8b9de 185 (check.tm_mon != _newTime_struct.tm_mon )||
Jonathan738 5:207e0cd8b9de 186 (check.tm_mday != _newTime_struct.tm_mday)||
Jonathan738 5:207e0cd8b9de 187 (check.tm_hour != _newTime_struct.tm_hour)||
Jonathan738 5:207e0cd8b9de 188 (check.tm_min != _newTime_struct.tm_min )||
Jonathan738 5:207e0cd8b9de 189 (check.tm_sec != _newTime_struct.tm_sec ))
Jonathan738 5:207e0cd8b9de 190 {
Jonathan738 5:207e0cd8b9de 191 _yellow = 1;
Jonathan738 5:207e0cd8b9de 192 if(_newTime_struct.tm_year < (1970-1900))
Jonathan738 5:207e0cd8b9de 193 {
Jonathan738 5:207e0cd8b9de 194 Error msgs;
Jonathan738 5:207e0cd8b9de 195 msgs.ErrorCode = warning;
Jonathan738 5:207e0cd8b9de 196 msgs.ErrorMSGS = "Date exceeds maximum range [06/02/2106 06:28:14]";
Jonathan738 5:207e0cd8b9de 197 TerminalQueue.call(&PC, &Terminal::ERROR_MSGS, msgs);
Jonathan738 5:207e0cd8b9de 198 _red = 1;
Jonathan738 5:207e0cd8b9de 199 return 3; //ERROR_03 Date exceeds maximum range [06/02/2106 06:28:14]
Jonathan738 5:207e0cd8b9de 200 }
Jonathan738 5:207e0cd8b9de 201 Error msgs;
Jonathan738 5:207e0cd8b9de 202 msgs.ErrorCode = warning;
Jonathan738 5:207e0cd8b9de 203 msgs.ErrorMSGS = "Index exceeds max value [e.g Date = 32/31 or Hour = 26/24]";
Jonathan738 5:207e0cd8b9de 204 TerminalQueue.call(&PC, &Terminal::ERROR_MSGS, msgs);
Jonathan738 5:207e0cd8b9de 205 return 1; //ERROR_01 Index exceeds max value [e.g Date = 32/31 or Hour = 26/24]
Jonathan738 5:207e0cd8b9de 206 }
Jonathan738 5:207e0cd8b9de 207 _green = 1;
Jonathan738 5:207e0cd8b9de 208 return 0; //ERROR_00 No errors
Jonathan738 5:207e0cd8b9de 209 }
Jonathan738 5:207e0cd8b9de 210 ////------------------------------------------------------------------------////
Jonathan738 5:207e0cd8b9de 211 ////////////////////////////////////////////////////////////////////////////////
Jonathan738 5:207e0cd8b9de 212
Jonathan738 5:207e0cd8b9de 213 BYTE updateSystemTime()
Jonathan738 5:207e0cd8b9de 214 {
Jonathan738 5:207e0cd8b9de 215 //Checking DateTime remains in valid format
Jonathan738 5:207e0cd8b9de 216 BYTE error = checkStruct(_setTime_struct);
Jonathan738 5:207e0cd8b9de 217
Jonathan738 5:207e0cd8b9de 218 //If no errors are returned, then set the DateTime to set values.
Jonathan738 5:207e0cd8b9de 219 if(!error){
Jonathan738 5:207e0cd8b9de 220 set_time(mktime(&_setTime_struct));
Jonathan738 5:207e0cd8b9de 221 }
Jonathan738 5:207e0cd8b9de 222
Jonathan738 5:207e0cd8b9de 223 //Return error to be used for terminal display
Jonathan738 5:207e0cd8b9de 224 return error;
Jonathan738 5:207e0cd8b9de 225 }
Jonathan738 5:207e0cd8b9de 226
Jonathan738 5:207e0cd8b9de 227 BYTE confirmDate()
Jonathan738 5:207e0cd8b9de 228 {
Jonathan738 5:207e0cd8b9de 229 BYTE error;
Jonathan738 5:207e0cd8b9de 230 error = checkStruct(_addTime_struct);
Jonathan738 5:207e0cd8b9de 231 char* temp;
Jonathan738 5:207e0cd8b9de 232 sprintf(temp,"error->%d",error);
Jonathan738 5:207e0cd8b9de 233
Jonathan738 5:207e0cd8b9de 234 if(!error)
Jonathan738 5:207e0cd8b9de 235 {
Jonathan738 5:207e0cd8b9de 236 //errorReport("No Error");
Jonathan738 5:207e0cd8b9de 237 mktime(&_addTime_struct);
Jonathan738 5:207e0cd8b9de 238 updateSystemTime();
Jonathan738 5:207e0cd8b9de 239 }
Jonathan738 5:207e0cd8b9de 240 else
Jonathan738 5:207e0cd8b9de 241 {
Jonathan738 5:207e0cd8b9de 242 //errorReport("Error");
Jonathan738 5:207e0cd8b9de 243 while(error)
Jonathan738 5:207e0cd8b9de 244 {
Jonathan738 5:207e0cd8b9de 245 _addTime_struct.tm_mday = _addTime_struct.tm_mday - 1;
Jonathan738 5:207e0cd8b9de 246 error = checkStruct(_addTime_struct);
Jonathan738 5:207e0cd8b9de 247 }
Jonathan738 5:207e0cd8b9de 248 mktime(&_addTime_struct);
Jonathan738 5:207e0cd8b9de 249 return 1;
Jonathan738 5:207e0cd8b9de 250 }
Jonathan738 5:207e0cd8b9de 251 return 0;
Jonathan738 5:207e0cd8b9de 252 }
Jonathan738 5:207e0cd8b9de 253
Jonathan738 5:207e0cd8b9de 254 char* getSetDate()
Jonathan738 5:207e0cd8b9de 255 {
Jonathan738 5:207e0cd8b9de 256 return printDate(_addTime_struct);
Jonathan738 5:207e0cd8b9de 257 }
Jonathan738 5:207e0cd8b9de 258
Jonathan738 5:207e0cd8b9de 259 char* getSetTime()
Jonathan738 5:207e0cd8b9de 260 {
Jonathan738 5:207e0cd8b9de 261 return printTime(_addTime_struct);
Jonathan738 5:207e0cd8b9de 262 }
Jonathan738 5:207e0cd8b9de 263
Jonathan738 5:207e0cd8b9de 264 char* startEditDate()
Jonathan738 5:207e0cd8b9de 265 {
Jonathan738 5:207e0cd8b9de 266 _addTime_struct = getRawTime();
Jonathan738 5:207e0cd8b9de 267 return getSetDate();
Jonathan738 5:207e0cd8b9de 268 }
Jonathan738 5:207e0cd8b9de 269
Jonathan738 5:207e0cd8b9de 270 char* startEditTime()
Jonathan738 5:207e0cd8b9de 271 {
Jonathan738 5:207e0cd8b9de 272 _addTime_struct = getRawTime();
Jonathan738 5:207e0cd8b9de 273 return getSetTime();
Jonathan738 5:207e0cd8b9de 274 }
Jonathan738 5:207e0cd8b9de 275
Jonathan738 5:207e0cd8b9de 276 void endEdit()
Jonathan738 5:207e0cd8b9de 277 {
Jonathan738 5:207e0cd8b9de 278 set_time(mktime(&_addTime_struct));
Jonathan738 5:207e0cd8b9de 279 }
Jonathan738 5:207e0cd8b9de 280
Jonathan738 5:207e0cd8b9de 281 char* getSystemDateTime()
Jonathan738 5:207e0cd8b9de 282 {
Jonathan738 5:207e0cd8b9de 283 struct tm _current_time = getRawTime();
Jonathan738 5:207e0cd8b9de 284 sprintf(dateTimeStr,"%s %s",printDate(_current_time),printTime(_current_time));
Jonathan738 5:207e0cd8b9de 285 return dateTimeStr;
Jonathan738 5:207e0cd8b9de 286 }
Jonathan738 5:207e0cd8b9de 287
Jonathan738 5:207e0cd8b9de 288 ////------------------------------------------------------------------------////
Jonathan738 5:207e0cd8b9de 289
Jonathan738 5:207e0cd8b9de 290
Jonathan738 5:207e0cd8b9de 291 struct tm getRawTime()
Jonathan738 5:207e0cd8b9de 292 {
Jonathan738 5:207e0cd8b9de 293 time_t rawTime;
Jonathan738 5:207e0cd8b9de 294 time(&rawTime);
Jonathan738 5:207e0cd8b9de 295 return *localtime(&rawTime);
Jonathan738 5:207e0cd8b9de 296 }
Jonathan738 5:207e0cd8b9de 297
Jonathan738 5:207e0cd8b9de 298 //time_t range 0 - 0xFFFFFFFFFFFE [01/01/1970 00:00:00 - 06/02/2106 06:28:14]
Jonathan738 5:207e0cd8b9de 299
Jonathan738 5:207e0cd8b9de 300 char* printDate(struct tm _time_struct)
Jonathan738 5:207e0cd8b9de 301 {
Jonathan738 5:207e0cd8b9de 302 sprintf(dateStr,"%02d/%02d/%4d",
Jonathan738 5:207e0cd8b9de 303 getDay(_time_struct),
Jonathan738 5:207e0cd8b9de 304 getMonth(_time_struct),
Jonathan738 5:207e0cd8b9de 305 getYear(_time_struct));
Jonathan738 5:207e0cd8b9de 306 return dateStr;
Jonathan738 5:207e0cd8b9de 307 }
Jonathan738 5:207e0cd8b9de 308
Jonathan738 5:207e0cd8b9de 309 char* printTime(struct tm _time_struct)
Jonathan738 5:207e0cd8b9de 310 {
Jonathan738 5:207e0cd8b9de 311 sprintf(timeStr,"%02d:%02d:%02d",
Jonathan738 5:207e0cd8b9de 312 getHour(_time_struct),
Jonathan738 5:207e0cd8b9de 313 getMin(_time_struct),
Jonathan738 5:207e0cd8b9de 314 getSec(_time_struct));
Jonathan738 5:207e0cd8b9de 315 return timeStr;
Jonathan738 5:207e0cd8b9de 316 }
Jonathan738 5:207e0cd8b9de 317
Jonathan738 5:207e0cd8b9de 318 signed INT_32 getYear(struct tm _time_struct) {return _time_struct.tm_year + 1900;}
Jonathan738 5:207e0cd8b9de 319 BYTE getMonth(struct tm _time_struct) {return _time_struct.tm_mon + 1; }
Jonathan738 5:207e0cd8b9de 320 BYTE getDay(struct tm _time_struct) {return _time_struct.tm_mday; }
Jonathan738 5:207e0cd8b9de 321 BYTE getHour(struct tm _time_struct) {return _time_struct.tm_hour; }
Jonathan738 5:207e0cd8b9de 322 BYTE getMin(struct tm _time_struct) {return _time_struct.tm_min; }
Jonathan738 5:207e0cd8b9de 323 BYTE getSec(struct tm _time_struct) {return _time_struct.tm_sec; }