Liam Grazier / Mbed OS Final351CWfolderonly

Fork of Final351CW_FINAL by Liam Grazier

Committer:
liam_grazier
Date:
Tue Jan 09 06:14:41 2018 +0000
Revision:
9:e27b3f34de24
Parent:
8:582ac4c5a524
Child:
10:098c2fa0a1a6
NICKS CW;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
liam_grazier 8:582ac4c5a524 1 #include "mbed.h"
liam_grazier 8:582ac4c5a524 2 #include "components.hpp"
liam_grazier 8:582ac4c5a524 3 #include "lglcd.h"
liam_grazier 8:582ac4c5a524 4 #include "time.h"
liam_grazier 8:582ac4c5a524 5 #include "stdio.h"
liam_grazier 8:582ac4c5a524 6 #define RED_DONE 1
liam_grazier 8:582ac4c5a524 7 #define YELLOW_DONE 2
liam_grazier 8:582ac4c5a524 8 //Digital outputs
liam_grazier 8:582ac4c5a524 9 DigitalIn onBoardSwitch(USER_BUTTON);
liam_grazier 8:582ac4c5a524 10 DigitalOut onBoardLED(LED1);
liam_grazier 8:582ac4c5a524 11 DigitalOut redLED(PE_15);
liam_grazier 8:582ac4c5a524 12 DigitalOut yellowLED(PB_10);
liam_grazier 8:582ac4c5a524 13 DigitalOut greenLED(PB_11);
liam_grazier 8:582ac4c5a524 14 SDBlockDevice sd(PB_5, D12, D13, D10);// miso, sclk, cs
liam_grazier 8:582ac4c5a524 15 Mutex Lock1;
liam_grazier 8:582ac4c5a524 16 Mutex Lock2;
liam_grazier 8:582ac4c5a524 17 Mutex Remove;
liam_grazier 8:582ac4c5a524 18 //Inputs
liam_grazier 8:582ac4c5a524 19 time_t rawtime;
liam_grazier 8:582ac4c5a524 20 struct tm * timeinfo;
liam_grazier 8:582ac4c5a524 21 int year, month ,day, hour, minute, second;
liam_grazier 8:582ac4c5a524 22 char input = 0;
liam_grazier 8:582ac4c5a524 23 char jtime[32];
liam_grazier 8:582ac4c5a524 24 char jdate[32];
liam_grazier 8:582ac4c5a524 25 char jdate1[32];
liam_grazier 8:582ac4c5a524 26 DigitalIn SW1(PE_12);
liam_grazier 8:582ac4c5a524 27 DigitalIn SW2(PE_14);
liam_grazier 8:582ac4c5a524 28 //Serial pc(USBTX, USBRX);
liam_grazier 8:582ac4c5a524 29 AnalogIn adcIn(PA_0);
liam_grazier 8:582ac4c5a524 30 //Environmental Sensor driver
liam_grazier 8:582ac4c5a524 31 #ifdef BME
liam_grazier 8:582ac4c5a524 32 BME280 sensor(D14, D15);
liam_grazier 8:582ac4c5a524 33 #else
liam_grazier 8:582ac4c5a524 34 BMP280 sensor(D14, D15);
liam_grazier 8:582ac4c5a524 35 #endif
liam_grazier 8:582ac4c5a524 36 lglcd mylcd(D7,D6,D5,D4,D3,D2);
liam_grazier 8:582ac4c5a524 37
liam_grazier 8:582ac4c5a524 38 //POWER ON SELF TEST
liam_grazier 8:582ac4c5a524 39 void post()
liam_grazier 8:582ac4c5a524 40 {
liam_grazier 8:582ac4c5a524 41 //posttest
liam_grazier 8:582ac4c5a524 42 }
liam_grazier 8:582ac4c5a524 43 void runanalysis(void){
liam_grazier 8:582ac4c5a524 44 while(1){
liam_grazier 8:582ac4c5a524 45 Lock1.lock();
liam_grazier 8:582ac4c5a524 46 double temp = sensor.getTemperature();
liam_grazier 8:582ac4c5a524 47 double pressure = sensor.getPressure();
liam_grazier 8:582ac4c5a524 48 double lightin = adcIn;
liam_grazier 8:582ac4c5a524 49 char TEM[6];
liam_grazier 8:582ac4c5a524 50 char PRE[5];
liam_grazier 8:582ac4c5a524 51 char LIGHT[6];
liam_grazier 8:582ac4c5a524 52 sprintf(TEM,"%.2f", temp);
liam_grazier 8:582ac4c5a524 53 sprintf(PRE,"%.2f", pressure);
liam_grazier 8:582ac4c5a524 54 sprintf(LIGHT,"%.2f", lightin);
liam_grazier 8:582ac4c5a524 55 mylcd.setline(1,1);
liam_grazier 8:582ac4c5a524 56 mylcd.write("L:");
liam_grazier 8:582ac4c5a524 57 if(lightin > 0.7 && lightin < 0.9)
liam_grazier 8:582ac4c5a524 58 {
liam_grazier 8:582ac4c5a524 59 mylcd.setline(1,4);
liam_grazier 8:582ac4c5a524 60 mylcd.write("|||||||||MAX");
liam_grazier 8:582ac4c5a524 61 }
liam_grazier 8:582ac4c5a524 62 else if(lightin > 0.55 && lightin < 0.69)
liam_grazier 8:582ac4c5a524 63 {
liam_grazier 8:582ac4c5a524 64 mylcd.setline(1,4);
liam_grazier 8:582ac4c5a524 65 mylcd.write("||||||| ");
liam_grazier 8:582ac4c5a524 66 }
liam_grazier 8:582ac4c5a524 67 else if(lightin > 0.5 && lightin < 0.54)
liam_grazier 8:582ac4c5a524 68 {
liam_grazier 8:582ac4c5a524 69 mylcd.setline(1,4);
liam_grazier 8:582ac4c5a524 70 mylcd.write("||||| ");
liam_grazier 8:582ac4c5a524 71 }
liam_grazier 8:582ac4c5a524 72 else if(lightin > 0.4 && lightin < 0.54)
liam_grazier 8:582ac4c5a524 73 {
liam_grazier 8:582ac4c5a524 74 mylcd.setline(1,4);
liam_grazier 8:582ac4c5a524 75 mylcd.write("||| ");
liam_grazier 8:582ac4c5a524 76 }
liam_grazier 8:582ac4c5a524 77 else if(lightin > 0.3 && lightin < 0.39)
liam_grazier 8:582ac4c5a524 78 {
liam_grazier 8:582ac4c5a524 79 mylcd.setline(1,4);
liam_grazier 8:582ac4c5a524 80 mylcd.write("|| ");
liam_grazier 8:582ac4c5a524 81 }
liam_grazier 8:582ac4c5a524 82 else if(lightin > 0.06 && lightin < 0.29)
liam_grazier 8:582ac4c5a524 83 {
liam_grazier 8:582ac4c5a524 84 mylcd.setline(1,4);
liam_grazier 8:582ac4c5a524 85 mylcd.write("LOW LIGHT ");
liam_grazier 8:582ac4c5a524 86 }
liam_grazier 8:582ac4c5a524 87 else if(lightin < 0.05)
liam_grazier 8:582ac4c5a524 88 {
liam_grazier 8:582ac4c5a524 89 mylcd.setline(1,4);
liam_grazier 8:582ac4c5a524 90 mylcd.write(" ");
liam_grazier 8:582ac4c5a524 91 mylcd.setline(1,4);
liam_grazier 8:582ac4c5a524 92 mylcd.write("disconnected");
liam_grazier 8:582ac4c5a524 93 }
liam_grazier 8:582ac4c5a524 94 mylcd.setline(2,1);
liam_grazier 8:582ac4c5a524 95 mylcd.write("P:");
liam_grazier 8:582ac4c5a524 96 mylcd.write(PRE);
liam_grazier 8:582ac4c5a524 97 mylcd.setline(2,10);
liam_grazier 8:582ac4c5a524 98 mylcd.write("T:");
liam_grazier 8:582ac4c5a524 99 mylcd.write(TEM);
liam_grazier 8:582ac4c5a524 100 wait(0.01);
liam_grazier 8:582ac4c5a524 101 Lock1.unlock();
liam_grazier 8:582ac4c5a524 102 Thread::signal_wait(SIG_READY);
liam_grazier 8:582ac4c5a524 103 }
liam_grazier 8:582ac4c5a524 104 }
liam_grazier 8:582ac4c5a524 105 void sdwrite(void)
liam_grazier 8:582ac4c5a524 106 {
liam_grazier 8:582ac4c5a524 107 while(1)
liam_grazier 8:582ac4c5a524 108 {
liam_grazier 8:582ac4c5a524 109 Lock2.lock();
liam_grazier 8:582ac4c5a524 110 time_t seconds = time(NULL);
liam_grazier 8:582ac4c5a524 111 strftime(jdate1, 32, "%F", localtime(&seconds));
liam_grazier 8:582ac4c5a524 112 strftime(jdate, 32, "%F\n\r", localtime(&seconds));
liam_grazier 8:582ac4c5a524 113 strftime(jtime, 32, "%X\n\r", localtime(&seconds));
liam_grazier 8:582ac4c5a524 114 FATFileSystem fs("sd", &sd);
liam_grazier 8:582ac4c5a524 115 char filename[32];
liam_grazier 8:582ac4c5a524 116 char suffix[4];
liam_grazier 8:582ac4c5a524 117 char prefix[4];
liam_grazier 8:582ac4c5a524 118 strcpy(prefix,"/sd/");
liam_grazier 8:582ac4c5a524 119 strcpy(suffix,".txt");
liam_grazier 8:582ac4c5a524 120 Lock1.lock();
liam_grazier 9:e27b3f34de24 121 double P = sensor.getPressure();
liam_grazier 9:e27b3f34de24 122 double L = adcIn;
liam_grazier 9:e27b3f34de24 123 double t = sensor.getTemperature();
liam_grazier 9:e27b3f34de24 124 char tem[6];
liam_grazier 9:e27b3f34de24 125 char pre[5];
liam_grazier 9:e27b3f34de24 126 char light[6];
liam_grazier 9:e27b3f34de24 127 char com[1];
liam_grazier 9:e27b3f34de24 128 strcpy(com, ",");
liam_grazier 9:e27b3f34de24 129 sprintf(pre,"%.2f", P);
liam_grazier 9:e27b3f34de24 130 sprintf(tem,"%.2f",t);
liam_grazier 9:e27b3f34de24 131 sprintf(light,"%.2f\n\r", L);
liam_grazier 8:582ac4c5a524 132 sprintf(filename,"%s%s%s",prefix,jdate1,suffix);
liam_grazier 8:582ac4c5a524 133 Lock1.unlock();
liam_grazier 8:582ac4c5a524 134 FILE* fp = fopen(filename,"a");
liam_grazier 8:582ac4c5a524 135 if (fp == NULL) {
liam_grazier 8:582ac4c5a524 136 errorCode(FATAL);
liam_grazier 8:582ac4c5a524 137 printf("SD FAIL\n\r");
liam_grazier 8:582ac4c5a524 138 mylcd.clear();
liam_grazier 8:582ac4c5a524 139 mylcd.setline(1,0);
liam_grazier 8:582ac4c5a524 140 mylcd.write("SD FAIL");
liam_grazier 8:582ac4c5a524 141 }
liam_grazier 8:582ac4c5a524 142 if (fp != NULL){
liam_grazier 8:582ac4c5a524 143 //printf("SD Success\n\r");
liam_grazier 8:582ac4c5a524 144 // fprintf(fp,"%s\n\r", "*C, mbar, light level 0-1 scale");
liam_grazier 8:582ac4c5a524 145 fprintf(fp,"%s",jdate);//date
liam_grazier 8:582ac4c5a524 146 fprintf(fp,"%s",com);
liam_grazier 8:582ac4c5a524 147 fprintf(fp,"%s",jtime);//time
liam_grazier 8:582ac4c5a524 148 fprintf(fp,"%s",com);
liam_grazier 8:582ac4c5a524 149 fprintf(fp,"%s",pre);
liam_grazier 8:582ac4c5a524 150 fprintf(fp,"%s",com);
liam_grazier 8:582ac4c5a524 151 fprintf(fp,"%s",tem);
liam_grazier 8:582ac4c5a524 152 fprintf(fp,"%s",com);
liam_grazier 8:582ac4c5a524 153 fprintf(fp,"%s\n\r",light);
liam_grazier 8:582ac4c5a524 154 wait(0.01);
liam_grazier 8:582ac4c5a524 155 }
liam_grazier 8:582ac4c5a524 156 fclose(fp);
liam_grazier 8:582ac4c5a524 157 Lock2.unlock();
liam_grazier 8:582ac4c5a524 158 Thread::signal_wait(SIG_READY2);
liam_grazier 8:582ac4c5a524 159
liam_grazier 8:582ac4c5a524 160 }
liam_grazier 8:582ac4c5a524 161 }
liam_grazier 8:582ac4c5a524 162 void sdrun(void)
liam_grazier 8:582ac4c5a524 163 {
liam_grazier 8:582ac4c5a524 164 if ( sd.init() != 0) {
liam_grazier 8:582ac4c5a524 165 printf("Init failed\n\r");
liam_grazier 8:582ac4c5a524 166 mylcd.clear();
liam_grazier 8:582ac4c5a524 167 mylcd.setline(1,1);
liam_grazier 8:582ac4c5a524 168 mylcd.write("CANNOT INIT SD");
liam_grazier 8:582ac4c5a524 169 errorCode(FATAL);
liam_grazier 8:582ac4c5a524 170 }
liam_grazier 8:582ac4c5a524 171 if( sd.init() == 0){
liam_grazier 8:582ac4c5a524 172 printf("Init Success \n\r");
liam_grazier 8:582ac4c5a524 173 mylcd.clear();
liam_grazier 8:582ac4c5a524 174 mylcd.setline(1,1);
liam_grazier 8:582ac4c5a524 175 mylcd.write("SD GOOD MAN");
liam_grazier 8:582ac4c5a524 176 wait(0.5); //flash the SD error / good code!
liam_grazier 8:582ac4c5a524 177 }
liam_grazier 8:582ac4c5a524 178 }
liam_grazier 8:582ac4c5a524 179 void sdcheck(void){
liam_grazier 8:582ac4c5a524 180 if ( sd.init() != 0) {
liam_grazier 8:582ac4c5a524 181 printf("Init failed \n\r");
liam_grazier 8:582ac4c5a524 182 mylcd.clear();
liam_grazier 8:582ac4c5a524 183 mylcd.setline(1,1);
liam_grazier 8:582ac4c5a524 184 mylcd.write("CANNOT INIT SD\n\r");
liam_grazier 8:582ac4c5a524 185 errorCode(FATAL);
liam_grazier 8:582ac4c5a524 186 }
liam_grazier 8:582ac4c5a524 187 if( sd.init() == 0){
liam_grazier 8:582ac4c5a524 188 //printf("SD Good\n\r");
liam_grazier 8:582ac4c5a524 189 }
liam_grazier 8:582ac4c5a524 190 }
liam_grazier 8:582ac4c5a524 191 void sdremove(void)
liam_grazier 8:582ac4c5a524 192 {
liam_grazier 8:582ac4c5a524 193 while(1){
liam_grazier 8:582ac4c5a524 194 Thread::signal_wait(SIG_REMOVE);
liam_grazier 8:582ac4c5a524 195 mylcd.clear();
liam_grazier 8:582ac4c5a524 196 Remove.lock();
liam_grazier 8:582ac4c5a524 197 sd.deinit();
liam_grazier 8:582ac4c5a524 198 mylcd.clear();
liam_grazier 8:582ac4c5a524 199 Lock1.lock();
liam_grazier 8:582ac4c5a524 200 mylcd.setline(2,0);
liam_grazier 8:582ac4c5a524 201 greenLED = 1;
liam_grazier 8:582ac4c5a524 202 mylcd.write("R");
liam_grazier 8:582ac4c5a524 203 Lock1.unlock();
liam_grazier 8:582ac4c5a524 204 printf("SD REMOVED\n\r");
liam_grazier 8:582ac4c5a524 205 errorCode(FATAL);
liam_grazier 8:582ac4c5a524 206 Remove.unlock();
liam_grazier 8:582ac4c5a524 207 }
liam_grazier 8:582ac4c5a524 208 }
liam_grazier 8:582ac4c5a524 209 void lcdstart(void){
liam_grazier 8:582ac4c5a524 210 mylcd.clear();
liam_grazier 8:582ac4c5a524 211 mylcd.setline(1,1);
liam_grazier 8:582ac4c5a524 212 mylcd.write("INIT. SYSTEM");
liam_grazier 8:582ac4c5a524 213 mylcd.setline(2,1);
liam_grazier 8:582ac4c5a524 214 mylcd.write("ELEC351");
liam_grazier 8:582ac4c5a524 215 }
liam_grazier 8:582ac4c5a524 216 void errorCode(ELEC350_ERROR_CODE err)
liam_grazier 8:582ac4c5a524 217 {
liam_grazier 8:582ac4c5a524 218 switch (err) {
liam_grazier 8:582ac4c5a524 219 case OK:
liam_grazier 8:582ac4c5a524 220 greenLED = 1;
liam_grazier 8:582ac4c5a524 221 wait(1.0);
liam_grazier 8:582ac4c5a524 222 greenLED = 0;
liam_grazier 8:582ac4c5a524 223 return;
liam_grazier 8:582ac4c5a524 224 case FATAL:
liam_grazier 8:582ac4c5a524 225 while(1) {
liam_grazier 8:582ac4c5a524 226 redLED = 1;
liam_grazier 8:582ac4c5a524 227 wait(0.1);
liam_grazier 8:582ac4c5a524 228 redLED = 0;
liam_grazier 8:582ac4c5a524 229 wait(0.1);
liam_grazier 8:582ac4c5a524 230 }
liam_grazier 8:582ac4c5a524 231 }
liam_grazier 8:582ac4c5a524 232 }
liam_grazier 8:582ac4c5a524 233
liam_grazier 8:582ac4c5a524 234 ///dougs code
liam_grazier 8:582ac4c5a524 235
liam_grazier 8:582ac4c5a524 236 void DispTime(void)
liam_grazier 8:582ac4c5a524 237 {
liam_grazier 8:582ac4c5a524 238 time_t Count = time(NULL); //Read the RTC Time
liam_grazier 8:582ac4c5a524 239 printf("Current Time - %s\n\r", ctime(&Count)); //Print the current time
liam_grazier 8:582ac4c5a524 240 }
liam_grazier 8:582ac4c5a524 241
liam_grazier 8:582ac4c5a524 242 void setuptime(void)
liam_grazier 8:582ac4c5a524 243 {
liam_grazier 8:582ac4c5a524 244
liam_grazier 8:582ac4c5a524 245 /*Initialising the time for our program to easy edit*/
liam_grazier 8:582ac4c5a524 246 time ( &rawtime );
liam_grazier 8:582ac4c5a524 247 timeinfo = localtime ( &rawtime );
liam_grazier 8:582ac4c5a524 248
liam_grazier 8:582ac4c5a524 249 /*Setting the time to the deadline time*/
liam_grazier 8:582ac4c5a524 250 /*Same as button Code*/
liam_grazier 8:582ac4c5a524 251 //Set the initialisation time to: Tuesday 9th January 2018, 16:00:00.
liam_grazier 8:582ac4c5a524 252 //set_time(1515513600);
liam_grazier 8:582ac4c5a524 253 //Initialisation of the times.
liam_grazier 8:582ac4c5a524 254 time ( &rawtime );
liam_grazier 8:582ac4c5a524 255 timeinfo = localtime ( &rawtime );
liam_grazier 8:582ac4c5a524 256 //Displays the initialisation time
liam_grazier 8:582ac4c5a524 257 DispTime();
liam_grazier 8:582ac4c5a524 258 /*End the initialisation */
liam_grazier 8:582ac4c5a524 259
liam_grazier 8:582ac4c5a524 260 }
liam_grazier 8:582ac4c5a524 261
liam_grazier 8:582ac4c5a524 262 void runtime(void){
liam_grazier 8:582ac4c5a524 263 while(1) //When added to the main code this will be changed to a while "SETDATE"
liam_grazier 8:582ac4c5a524 264 {
liam_grazier 8:582ac4c5a524 265 /*promts the user to input which edit they would like*/
liam_grazier 8:582ac4c5a524 266 printf ("What part do you want to edit? Time(T)/All(A).\n\r");
liam_grazier 8:582ac4c5a524 267 fflush(stdout);
liam_grazier 8:582ac4c5a524 268 scanf ("%s",&input);
liam_grazier 8:582ac4c5a524 269 /*Switch case input*/
liam_grazier 8:582ac4c5a524 270 switch(input)
liam_grazier 8:582ac4c5a524 271 {
liam_grazier 8:582ac4c5a524 272 case 'T':
liam_grazier 8:582ac4c5a524 273 //Sequential Entering, Hour, Minute, Second respectively
liam_grazier 8:582ac4c5a524 274 printf ("Enter hour:(00-23) \n\r");
liam_grazier 8:582ac4c5a524 275 fflush(stdout);
liam_grazier 8:582ac4c5a524 276 scanf ("%d",&hour);
liam_grazier 8:582ac4c5a524 277
liam_grazier 8:582ac4c5a524 278 printf ("Enter minute:(00-59) \n\r");
liam_grazier 8:582ac4c5a524 279 fflush(stdout);
liam_grazier 8:582ac4c5a524 280 scanf ("%d",&minute);
liam_grazier 8:582ac4c5a524 281
liam_grazier 8:582ac4c5a524 282 printf ("Enter second:(00-59) \n\r");
liam_grazier 8:582ac4c5a524 283 fflush(stdout);
liam_grazier 8:582ac4c5a524 284 scanf ("%d",&second);
liam_grazier 8:582ac4c5a524 285
liam_grazier 8:582ac4c5a524 286 break;
liam_grazier 8:582ac4c5a524 287
liam_grazier 8:582ac4c5a524 288 /*Case A ----- All values Update sequence*/
liam_grazier 8:582ac4c5a524 289 case 'A':
liam_grazier 8:582ac4c5a524 290 printf ("Enter year:(0-9999) \n\r"); fflush(stdout); scanf ("%d",&year);
liam_grazier 8:582ac4c5a524 291 printf ("Enter month:(01-12) \n\r"); fflush(stdout); scanf ("%d",&month);
liam_grazier 8:582ac4c5a524 292 printf ("Enter day:(01-31) \n\r"); fflush(stdout); scanf ("%d",&day);
liam_grazier 8:582ac4c5a524 293 printf ("Enter hour:(00-23)\n\r"); fflush(stdout); scanf ("%d",&hour);
liam_grazier 8:582ac4c5a524 294 printf ("Enter minute:(00-59) \n\r"); fflush(stdout); scanf ("%d",&minute);
liam_grazier 8:582ac4c5a524 295 printf ("Enter second:(00-59) \n\r"); fflush(stdout); scanf ("%d",&second);
liam_grazier 8:582ac4c5a524 296 break;
liam_grazier 8:582ac4c5a524 297
liam_grazier 8:582ac4c5a524 298 /*default to reset ----- Month Update sequence*/
liam_grazier 8:582ac4c5a524 299 default:
liam_grazier 8:582ac4c5a524 300 printf ("Invalid\n\r");
liam_grazier 8:582ac4c5a524 301 set_time(1515513600);
liam_grazier 8:582ac4c5a524 302 }
liam_grazier 8:582ac4c5a524 303 /*Updating all the timings after the user has input all the data*/
liam_grazier 8:582ac4c5a524 304 /*Put here as once the user has finished editing it does a batch update*/
liam_grazier 8:582ac4c5a524 305 timeinfo->tm_year = year - 1900;
liam_grazier 8:582ac4c5a524 306 timeinfo->tm_mon = month - 1;
liam_grazier 8:582ac4c5a524 307 timeinfo->tm_mday = day;
liam_grazier 8:582ac4c5a524 308 timeinfo->tm_hour = hour;
liam_grazier 8:582ac4c5a524 309 timeinfo->tm_min = minute;
liam_grazier 8:582ac4c5a524 310 timeinfo->tm_sec = second;
liam_grazier 8:582ac4c5a524 311 time_t CurrTime = mktime(timeinfo); //Convert the to UNIX time
liam_grazier 8:582ac4c5a524 312 set_time(CurrTime); //Sets time using the UNIX time
liam_grazier 8:582ac4c5a524 313 DispTime();
liam_grazier 8:582ac4c5a524 314 return; //Display the new time
liam_grazier 8:582ac4c5a524 315 }
liam_grazier 8:582ac4c5a524 316 }
liam_grazier 8:582ac4c5a524 317
liam_grazier 8:582ac4c5a524 318 void rundate(void){
liam_grazier 8:582ac4c5a524 319 while(1) //When added to the main code this will be changed to a while "SETDATE"
liam_grazier 8:582ac4c5a524 320 {
liam_grazier 8:582ac4c5a524 321
liam_grazier 8:582ac4c5a524 322 /*promts the user to input which edit they would like*/
liam_grazier 8:582ac4c5a524 323 printf ("What part do you want to edit? Date(D)/All(A).\n\r");
liam_grazier 8:582ac4c5a524 324 fflush(stdout);
liam_grazier 8:582ac4c5a524 325 scanf ("%s",&input);
liam_grazier 8:582ac4c5a524 326 /*Switch case input*/
liam_grazier 8:582ac4c5a524 327 switch(input)
liam_grazier 8:582ac4c5a524 328 {
liam_grazier 8:582ac4c5a524 329 /*Case D ----- Date Update sequence*/
liam_grazier 8:582ac4c5a524 330 case 'D':
liam_grazier 8:582ac4c5a524 331 //Sequential Entering, Day, Month, Year respectively
liam_grazier 8:582ac4c5a524 332 printf ("Enter day:(01-31) \n\r");
liam_grazier 8:582ac4c5a524 333 fflush(stdout);
liam_grazier 8:582ac4c5a524 334 scanf ("%d",&day);
liam_grazier 8:582ac4c5a524 335 printf ("Enter month:(01-12) \n\r");
liam_grazier 8:582ac4c5a524 336 fflush(stdout);
liam_grazier 8:582ac4c5a524 337 scanf ("%d",&month);
liam_grazier 8:582ac4c5a524 338 printf ("Enter year:(1970-9999) \n\r");
liam_grazier 8:582ac4c5a524 339 fflush(stdout);
liam_grazier 8:582ac4c5a524 340 scanf ("%d",&year);
liam_grazier 8:582ac4c5a524 341 break;
liam_grazier 8:582ac4c5a524 342 /*Case A ----- All values Update sequence*/
liam_grazier 8:582ac4c5a524 343 case 'A':
liam_grazier 8:582ac4c5a524 344 printf ("Enter year:(0-9999) \n\r"); fflush(stdout); scanf ("%d",&year);
liam_grazier 8:582ac4c5a524 345 printf ("Enter month:(01-12) \n\r"); fflush(stdout); scanf ("%d",&month);
liam_grazier 8:582ac4c5a524 346 printf ("Enter day:(01-31) \n\r"); fflush(stdout); scanf ("%d",&day);
liam_grazier 8:582ac4c5a524 347 printf ("Enter hour:(00-23)\n\r"); fflush(stdout); scanf ("%d",&hour);
liam_grazier 8:582ac4c5a524 348 printf ("Enter minute:(00-59) \n\r"); fflush(stdout); scanf ("%d",&minute);
liam_grazier 8:582ac4c5a524 349 printf ("Enter second:(00-59) \n\r"); fflush(stdout); scanf ("%d",&second);
liam_grazier 8:582ac4c5a524 350 break;
liam_grazier 8:582ac4c5a524 351 /*default to reset ----- Month Update sequence*/
liam_grazier 8:582ac4c5a524 352 default:
liam_grazier 8:582ac4c5a524 353 printf ("Invalid\n\r");
liam_grazier 8:582ac4c5a524 354 set_time(1515513600);
liam_grazier 8:582ac4c5a524 355 }
liam_grazier 8:582ac4c5a524 356 /*Updating all the timings after the user has input all the data*/
liam_grazier 8:582ac4c5a524 357 /*Put here as once the user has finished editing it does a batch update*/
liam_grazier 8:582ac4c5a524 358 timeinfo->tm_year = year - 1900;
liam_grazier 8:582ac4c5a524 359 timeinfo->tm_mon = month - 1;
liam_grazier 8:582ac4c5a524 360 timeinfo->tm_mday = day;
liam_grazier 8:582ac4c5a524 361 timeinfo->tm_hour = hour;
liam_grazier 8:582ac4c5a524 362 timeinfo->tm_min = minute;
liam_grazier 8:582ac4c5a524 363 timeinfo->tm_sec = second;
liam_grazier 8:582ac4c5a524 364 time_t CurrTime = mktime(timeinfo); //Convert the to UNIX time
liam_grazier 8:582ac4c5a524 365 set_time(CurrTime); //Sets time using the UNIX time
liam_grazier 8:582ac4c5a524 366 DispTime();
liam_grazier 8:582ac4c5a524 367 return; //Display the new time
liam_grazier 8:582ac4c5a524 368 }
liam_grazier 8:582ac4c5a524 369 }