Release 1.01

Dependents:   mbed_escm2000

Committer:
foxbrianr
Date:
Tue Sep 17 13:48:22 2019 +0000
Revision:
5:9f4d4f8ffc00
Parent:
4:7226c43320b5
Child:
8:9d4e684d8eb8
Beta 2

Who changed what in which revision?

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