Release 1.01

Dependents:   mbed_escm2000

Committer:
foxbrianr
Date:
Tue Mar 17 17:23:15 2020 +0000
Revision:
8:9d4e684d8eb8
Parent:
5:9f4d4f8ffc00
fix up code for barry

Who changed what in which revision?

UserRevisionLine numberNew contents of line
foxbrianr 8:9d4e684d8eb8 1
foxbrianr 5:9f4d4f8ffc00 2 /**************************************************************************
foxbrianr 5:9f4d4f8ffc00 3 * @file EditTimeMenu.cpp
foxbrianr 5:9f4d4f8ffc00 4 * @brief Base class for implementing the Edit Time Menu display
foxbrianr 5:9f4d4f8ffc00 5 * @version: V1.0
foxbrianr 5:9f4d4f8ffc00 6 * @date: 9/17/2019
foxbrianr 5:9f4d4f8ffc00 7
foxbrianr 5:9f4d4f8ffc00 8 *
foxbrianr 5:9f4d4f8ffc00 9 * @note
foxbrianr 5:9f4d4f8ffc00 10 * Copyright (C) 2019 E3 Design. All rights reserved.
foxbrianr 5:9f4d4f8ffc00 11 *
foxbrianr 5:9f4d4f8ffc00 12 * @par
foxbrianr 5:9f4d4f8ffc00 13 * E3 Designers LLC is supplying this software for use with Cortex-M3 LPC1768
foxbrianr 5:9f4d4f8ffc00 14 * processor based microcontroller for the ESCM 2000 Monitor and Display.
foxbrianr 5:9f4d4f8ffc00 15 * *
foxbrianr 5:9f4d4f8ffc00 16 * @par
foxbrianr 5:9f4d4f8ffc00 17 * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
foxbrianr 5:9f4d4f8ffc00 18 * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
foxbrianr 5:9f4d4f8ffc00 19 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
foxbrianr 5:9f4d4f8ffc00 20 * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
foxbrianr 5:9f4d4f8ffc00 21 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
foxbrianr 5:9f4d4f8ffc00 22 *
foxbrianr 5:9f4d4f8ffc00 23 ******************************************************************************/
foxbrianr 3:8395f7ab6d3e 24 #include "mbed.h"
foxbrianr 3:8395f7ab6d3e 25 #include "EditTimeMenu.h"
foxbrianr 3:8395f7ab6d3e 26 #include "TimeUtilities.h"
foxbrianr 3:8395f7ab6d3e 27
foxbrianr 5:9f4d4f8ffc00 28 /******************************************************************************/
foxbrianr 4:7226c43320b5 29 EditTimeMenu::EditTimeMenu(char* id): Menu(id)
foxbrianr 3:8395f7ab6d3e 30 {
foxbrianr 3:8395f7ab6d3e 31
foxbrianr 3:8395f7ab6d3e 32 active_selection = 0;
foxbrianr 3:8395f7ab6d3e 33 row=0;
foxbrianr 3:8395f7ab6d3e 34 column=0;
foxbrianr 3:8395f7ab6d3e 35
foxbrianr 3:8395f7ab6d3e 36 time_t rawtime;
foxbrianr 3:8395f7ab6d3e 37 struct tm * timeinfo;
foxbrianr 3:8395f7ab6d3e 38
foxbrianr 3:8395f7ab6d3e 39 time ( &rawtime );
foxbrianr 3:8395f7ab6d3e 40 timeinfo = localtime ( &rawtime ); timeinfo = localtime (&rawtime);
foxbrianr 3:8395f7ab6d3e 41
foxbrianr 3:8395f7ab6d3e 42 hours = timeinfo->tm_hour;
foxbrianr 3:8395f7ab6d3e 43 mins = timeinfo->tm_min;
foxbrianr 3:8395f7ab6d3e 44 secs = timeinfo->tm_sec;
foxbrianr 3:8395f7ab6d3e 45
foxbrianr 3:8395f7ab6d3e 46 years = timeinfo->tm_year + 1900;
foxbrianr 3:8395f7ab6d3e 47 months = timeinfo->tm_mon + 1 ;
foxbrianr 3:8395f7ab6d3e 48 days = timeinfo->tm_mday;
foxbrianr 3:8395f7ab6d3e 49
foxbrianr 3:8395f7ab6d3e 50
foxbrianr 3:8395f7ab6d3e 51 }
foxbrianr 3:8395f7ab6d3e 52
foxbrianr 3:8395f7ab6d3e 53
foxbrianr 5:9f4d4f8ffc00 54 /******************************************************************************/
foxbrianr 4:7226c43320b5 55 void EditTimeMenu::init()
foxbrianr 4:7226c43320b5 56 {
foxbrianr 4:7226c43320b5 57 active_selection = 0;
foxbrianr 4:7226c43320b5 58 update_needed = 1;
foxbrianr 4:7226c43320b5 59 }
foxbrianr 3:8395f7ab6d3e 60
foxbrianr 4:7226c43320b5 61
foxbrianr 5:9f4d4f8ffc00 62 /******************************************************************************/
foxbrianr 4:7226c43320b5 63 void EditTimeMenu::display(LCD * lcd)
foxbrianr 3:8395f7ab6d3e 64 {
foxbrianr 3:8395f7ab6d3e 65 char setTime = 1;
foxbrianr 3:8395f7ab6d3e 66 char setDate = 1;
foxbrianr 3:8395f7ab6d3e 67
foxbrianr 3:8395f7ab6d3e 68 char current[40];
foxbrianr 3:8395f7ab6d3e 69
foxbrianr 3:8395f7ab6d3e 70 time_t rawtime;
foxbrianr 3:8395f7ab6d3e 71 struct tm * timeinfo;
foxbrianr 3:8395f7ab6d3e 72
foxbrianr 4:7226c43320b5 73 int cur_hours,cur_mins,cur_secs,cur_year,cur_month,cur_day;
foxbrianr 4:7226c43320b5 74
foxbrianr 4:7226c43320b5 75
foxbrianr 3:8395f7ab6d3e 76 time ( &rawtime );
foxbrianr 3:8395f7ab6d3e 77 timeinfo = localtime ( &rawtime ); timeinfo = localtime (&rawtime);
foxbrianr 3:8395f7ab6d3e 78
foxbrianr 4:7226c43320b5 79 cur_hours = timeinfo->tm_hour;
foxbrianr 4:7226c43320b5 80 cur_mins = timeinfo->tm_min;
foxbrianr 4:7226c43320b5 81 cur_secs = timeinfo->tm_sec;
foxbrianr 4:7226c43320b5 82 cur_year = timeinfo->tm_year+1900;
foxbrianr 4:7226c43320b5 83 cur_month = timeinfo->tm_mon + 1;
foxbrianr 4:7226c43320b5 84 cur_day = timeinfo->tm_mday;
foxbrianr 3:8395f7ab6d3e 85
foxbrianr 4:7226c43320b5 86
foxbrianr 4:7226c43320b5 87
foxbrianr 4:7226c43320b5 88
foxbrianr 4:7226c43320b5 89 if ( update_needed )
foxbrianr 3:8395f7ab6d3e 90 {
foxbrianr 4:7226c43320b5 91 lcd->cls();
foxbrianr 4:7226c43320b5 92
foxbrianr 4:7226c43320b5 93 lcd->locate(0,0);
foxbrianr 4:7226c43320b5 94 lcd->printf("Current Time/Date :");
foxbrianr 4:7226c43320b5 95
foxbrianr 4:7226c43320b5 96 time ( &rawtime );
foxbrianr 4:7226c43320b5 97 timeinfo = localtime ( &rawtime ); timeinfo = localtime (&rawtime);
foxbrianr 4:7226c43320b5 98
foxbrianr 4:7226c43320b5 99 if (!active_selection)
foxbrianr 4:7226c43320b5 100 {
foxbrianr 4:7226c43320b5 101 hours = cur_hours;
foxbrianr 4:7226c43320b5 102 mins = cur_mins;
foxbrianr 4:7226c43320b5 103 secs = cur_secs;
foxbrianr 4:7226c43320b5 104 years = cur_year;
foxbrianr 4:7226c43320b5 105 months = cur_month;
foxbrianr 4:7226c43320b5 106 days = cur_day;
foxbrianr 4:7226c43320b5 107 //lcd->setCursorMode (0) ;
foxbrianr 4:7226c43320b5 108 }
foxbrianr 4:7226c43320b5 109 else
foxbrianr 4:7226c43320b5 110 {
foxbrianr 8:9d4e684d8eb8 111
foxbrianr 4:7226c43320b5 112 // edit mode
foxbrianr 4:7226c43320b5 113 secs = timeinfo->tm_sec;
foxbrianr 8:9d4e684d8eb8 114
foxbrianr 8:9d4e684d8eb8 115 if ( hours < 12 ) {
foxbrianr 8:9d4e684d8eb8 116 cur_hours = (hours == 0) ? 12 : hours;
foxbrianr 8:9d4e684d8eb8 117
foxbrianr 8:9d4e684d8eb8 118 } else {
foxbrianr 8:9d4e684d8eb8 119 cur_hours = (hours - 12);
foxbrianr 8:9d4e684d8eb8 120 }
foxbrianr 4:7226c43320b5 121
foxbrianr 4:7226c43320b5 122 lcd->locate(2,0);
foxbrianr 4:7226c43320b5 123 switch(active_selection)
foxbrianr 4:7226c43320b5 124 {
foxbrianr 4:7226c43320b5 125 case 1:
foxbrianr 8:9d4e684d8eb8 126
foxbrianr 8:9d4e684d8eb8 127 #if 1
foxbrianr 8:9d4e684d8eb8 128 if ( hours < 12 ) {
foxbrianr 8:9d4e684d8eb8 129 cur_hours = (hours == 0) ? 12 : hours;
foxbrianr 8:9d4e684d8eb8 130 lcd->printf("Set Time (hours) : %02dam", cur_hours);
foxbrianr 8:9d4e684d8eb8 131
foxbrianr 8:9d4e684d8eb8 132 } else {
foxbrianr 8:9d4e684d8eb8 133 cur_hours = (hours - 12);
foxbrianr 8:9d4e684d8eb8 134 cur_hours = (cur_hours == 0) ? 12 : cur_hours;
foxbrianr 8:9d4e684d8eb8 135
foxbrianr 8:9d4e684d8eb8 136 lcd->printf("Set Time (hours) : %02dpm", cur_hours);
foxbrianr 8:9d4e684d8eb8 137 }
foxbrianr 8:9d4e684d8eb8 138 #else
foxbrianr 8:9d4e684d8eb8 139 lcd->printf("Set Time (hours) : %02d", hours);
foxbrianr 8:9d4e684d8eb8 140 #endif
foxbrianr 4:7226c43320b5 141 break;
foxbrianr 4:7226c43320b5 142 case 2:
foxbrianr 4:7226c43320b5 143 lcd->printf("Set Time (min) : %02d", mins);
foxbrianr 4:7226c43320b5 144 break;
foxbrianr 4:7226c43320b5 145 case 3:
foxbrianr 4:7226c43320b5 146 lcd->printf("Set Time (sec) : %02d", secs);
foxbrianr 4:7226c43320b5 147 break;
foxbrianr 4:7226c43320b5 148 case 4:
foxbrianr 4:7226c43320b5 149 lcd->printf("Set Date (month) : %02d", months);
foxbrianr 4:7226c43320b5 150 break;
foxbrianr 4:7226c43320b5 151 case 5:
foxbrianr 4:7226c43320b5 152 lcd->printf("Set Date (day) : %02d", days);
foxbrianr 4:7226c43320b5 153 break;
foxbrianr 4:7226c43320b5 154 case 6:
foxbrianr 4:7226c43320b5 155 lcd->printf("Set Date (year) : %02d", years);
foxbrianr 4:7226c43320b5 156 break;
foxbrianr 4:7226c43320b5 157 default:
foxbrianr 4:7226c43320b5 158 break;
foxbrianr 4:7226c43320b5 159 };
foxbrianr 4:7226c43320b5 160
foxbrianr 4:7226c43320b5 161 lcd->locate(3,0);
foxbrianr 4:7226c43320b5 162 lcd->printf("Updated Time :");
foxbrianr 8:9d4e684d8eb8 163 #if 1
foxbrianr 8:9d4e684d8eb8 164
foxbrianr 8:9d4e684d8eb8 165 if ( hours < 12 ) {
foxbrianr 8:9d4e684d8eb8 166
foxbrianr 8:9d4e684d8eb8 167 cur_hours = (hours == 0) ? 12 : hours;
foxbrianr 8:9d4e684d8eb8 168 cur_hours = (cur_hours == 0) ? 12 : cur_hours;
foxbrianr 8:9d4e684d8eb8 169 lcd->locate(3,20);
foxbrianr 8:9d4e684d8eb8 170 lcd->printf(" %02d:%02d:%02dam %02d/%02d/%02d",
foxbrianr 8:9d4e684d8eb8 171 cur_hours, mins, secs, months, days, (years%100));
foxbrianr 8:9d4e684d8eb8 172
foxbrianr 8:9d4e684d8eb8 173 } else {
foxbrianr 8:9d4e684d8eb8 174
foxbrianr 8:9d4e684d8eb8 175 cur_hours = (hours - 12);
foxbrianr 8:9d4e684d8eb8 176 cur_hours = (cur_hours == 0) ? 12 : cur_hours;
foxbrianr 8:9d4e684d8eb8 177 lcd->locate(3,20);
foxbrianr 8:9d4e684d8eb8 178 lcd->printf(" %02d:%02d:%02dpm %02d/%02d/%02d",
foxbrianr 8:9d4e684d8eb8 179 cur_hours, mins, secs, months, days, (years%100));
foxbrianr 8:9d4e684d8eb8 180
foxbrianr 8:9d4e684d8eb8 181
foxbrianr 8:9d4e684d8eb8 182 }
foxbrianr 8:9d4e684d8eb8 183 #else
foxbrianr 4:7226c43320b5 184 lcd->locate(3,20);
foxbrianr 4:7226c43320b5 185 lcd->printf(" %02d:%02d %02d/%02d/%04d", hours, mins, months, days, years);
foxbrianr 8:9d4e684d8eb8 186
foxbrianr 8:9d4e684d8eb8 187 #endif
foxbrianr 8:9d4e684d8eb8 188
foxbrianr 4:7226c43320b5 189
foxbrianr 4:7226c43320b5 190 }
foxbrianr 4:7226c43320b5 191
foxbrianr 4:7226c43320b5 192 update_needed = 0;
foxbrianr 4:7226c43320b5 193 }
foxbrianr 4:7226c43320b5 194 displayCurrentTime(lcd);
foxbrianr 3:8395f7ab6d3e 195
foxbrianr 3:8395f7ab6d3e 196
foxbrianr 3:8395f7ab6d3e 197
foxbrianr 3:8395f7ab6d3e 198 }
foxbrianr 3:8395f7ab6d3e 199
foxbrianr 5:9f4d4f8ffc00 200 /******************************************************************************/
foxbrianr 3:8395f7ab6d3e 201 void EditTimeMenu::pressMode()
foxbrianr 3:8395f7ab6d3e 202 {
foxbrianr 3:8395f7ab6d3e 203 // advance thru
foxbrianr 3:8395f7ab6d3e 204 if (active_selection++ > 6 )
foxbrianr 4:7226c43320b5 205 {
foxbrianr 4:7226c43320b5 206 active_selection = 0;
foxbrianr 4:7226c43320b5 207 }
foxbrianr 3:8395f7ab6d3e 208
foxbrianr 3:8395f7ab6d3e 209 update_needed = 1;
foxbrianr 3:8395f7ab6d3e 210 }
foxbrianr 3:8395f7ab6d3e 211
foxbrianr 5:9f4d4f8ffc00 212 /******************************************************************************/
foxbrianr 3:8395f7ab6d3e 213 void EditTimeMenu::pressSet()
foxbrianr 3:8395f7ab6d3e 214 {
foxbrianr 3:8395f7ab6d3e 215
foxbrianr 3:8395f7ab6d3e 216 struct tm t;
foxbrianr 3:8395f7ab6d3e 217
foxbrianr 3:8395f7ab6d3e 218 t.tm_hour = hours;
foxbrianr 3:8395f7ab6d3e 219 t.tm_min = mins;
foxbrianr 3:8395f7ab6d3e 220 t.tm_sec = 0;
foxbrianr 3:8395f7ab6d3e 221
foxbrianr 3:8395f7ab6d3e 222 t.tm_year = years - 1900;
foxbrianr 3:8395f7ab6d3e 223 t.tm_mon = months - 1;
foxbrianr 3:8395f7ab6d3e 224 t.tm_mday = days;
foxbrianr 3:8395f7ab6d3e 225
foxbrianr 3:8395f7ab6d3e 226 // set the time
foxbrianr 3:8395f7ab6d3e 227 set_time(mktime(&t));
foxbrianr 3:8395f7ab6d3e 228
foxbrianr 3:8395f7ab6d3e 229
foxbrianr 3:8395f7ab6d3e 230 // go back to normal display
foxbrianr 3:8395f7ab6d3e 231 // ---------------------------------
foxbrianr 3:8395f7ab6d3e 232 active_selection = 0;
foxbrianr 3:8395f7ab6d3e 233 update_needed = 1;
foxbrianr 3:8395f7ab6d3e 234 }
foxbrianr 3:8395f7ab6d3e 235
foxbrianr 5:9f4d4f8ffc00 236 /******************************************************************************/
foxbrianr 3:8395f7ab6d3e 237 void EditTimeMenu::pressUp()
foxbrianr 3:8395f7ab6d3e 238 {
foxbrianr 3:8395f7ab6d3e 239 switch(active_selection)
foxbrianr 3:8395f7ab6d3e 240 {
foxbrianr 3:8395f7ab6d3e 241 case 1: hours++;break;
foxbrianr 3:8395f7ab6d3e 242 case 2: mins++;break;
foxbrianr 3:8395f7ab6d3e 243 case 3: secs++;break;
foxbrianr 3:8395f7ab6d3e 244 case 4: months++;break;
foxbrianr 3:8395f7ab6d3e 245 case 5: days++;break;
foxbrianr 3:8395f7ab6d3e 246 case 6: years++;break;
foxbrianr 3:8395f7ab6d3e 247 default:break;
foxbrianr 3:8395f7ab6d3e 248
foxbrianr 3:8395f7ab6d3e 249 }
foxbrianr 3:8395f7ab6d3e 250 if (hours > 23) hours = 0;
foxbrianr 3:8395f7ab6d3e 251 if (mins > 60) mins = 0;
foxbrianr 3:8395f7ab6d3e 252 if (secs > 60) secs = 0;
foxbrianr 3:8395f7ab6d3e 253 if (months > 12) months = 1;
foxbrianr 3:8395f7ab6d3e 254 if (days > 31) days = 1;
foxbrianr 3:8395f7ab6d3e 255 if (years > 2050) years =2011;
foxbrianr 3:8395f7ab6d3e 256
foxbrianr 3:8395f7ab6d3e 257 update_needed = 1;
foxbrianr 3:8395f7ab6d3e 258 }
foxbrianr 3:8395f7ab6d3e 259
foxbrianr 5:9f4d4f8ffc00 260 /******************************************************************************/
foxbrianr 3:8395f7ab6d3e 261 void EditTimeMenu::pressDown()
foxbrianr 3:8395f7ab6d3e 262 {
foxbrianr 3:8395f7ab6d3e 263 switch(active_selection)
foxbrianr 3:8395f7ab6d3e 264 {
foxbrianr 3:8395f7ab6d3e 265 case 1: hours--;break;
foxbrianr 3:8395f7ab6d3e 266 case 2: mins--;break;
foxbrianr 3:8395f7ab6d3e 267 case 3: secs--;break;
foxbrianr 3:8395f7ab6d3e 268 case 4: months--;break;
foxbrianr 3:8395f7ab6d3e 269 case 5: days--;break;
foxbrianr 3:8395f7ab6d3e 270 case 6: years--;break;
foxbrianr 3:8395f7ab6d3e 271 default:break;
foxbrianr 3:8395f7ab6d3e 272
foxbrianr 3:8395f7ab6d3e 273 }
foxbrianr 3:8395f7ab6d3e 274
foxbrianr 3:8395f7ab6d3e 275 if (hours < 0) hours += 23;
foxbrianr 3:8395f7ab6d3e 276 if (mins < 0) mins += 60;
foxbrianr 3:8395f7ab6d3e 277 if (secs < 0) secs += 60;
foxbrianr 3:8395f7ab6d3e 278 if (months < 1) months += 12;
foxbrianr 3:8395f7ab6d3e 279 if (days < 1) days += 31;
foxbrianr 3:8395f7ab6d3e 280 if (years < 2011) years =2050;
foxbrianr 3:8395f7ab6d3e 281
foxbrianr 3:8395f7ab6d3e 282 update_needed = 1;
foxbrianr 3:8395f7ab6d3e 283 }
foxbrianr 5:9f4d4f8ffc00 284 /******************************************************************************/