Release 1.01

Dependents:   mbed_escm2000

Committer:
foxbrianr
Date:
Thu Sep 12 11:27:50 2019 +0000
Revision:
4:7226c43320b5
Parent:
3:8395f7ab6d3e
Child:
5:9f4d4f8ffc00
beta1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
foxbrianr 3:8395f7ab6d3e 1 #include "mbed.h"
foxbrianr 3:8395f7ab6d3e 2 #include "DisplayCodesMenu.h"
foxbrianr 3:8395f7ab6d3e 3 #include "TimeUtilities.h"
foxbrianr 4:7226c43320b5 4 #include "ESCMControlApp.h"
foxbrianr 3:8395f7ab6d3e 5
foxbrianr 3:8395f7ab6d3e 6
foxbrianr 4:7226c43320b5 7 DisplayCodesMenu::DisplayCodesMenu(char* id): Menu(id)
foxbrianr 3:8395f7ab6d3e 8 {
foxbrianr 4:7226c43320b5 9
foxbrianr 4:7226c43320b5 10 active_selection = 0;
foxbrianr 4:7226c43320b5 11 row=0;
foxbrianr 4:7226c43320b5 12 column=0;
foxbrianr 4:7226c43320b5 13 update_needed=1;
foxbrianr 4:7226c43320b5 14 current_index=0;
foxbrianr 4:7226c43320b5 15 current_line = 1;
foxbrianr 4:7226c43320b5 16 top = 0;
foxbrianr 4:7226c43320b5 17
foxbrianr 4:7226c43320b5 18 }
foxbrianr 4:7226c43320b5 19
foxbrianr 4:7226c43320b5 20
foxbrianr 4:7226c43320b5 21
foxbrianr 4:7226c43320b5 22 void DisplayCodesMenu::init()
foxbrianr 4:7226c43320b5 23 {
foxbrianr 3:8395f7ab6d3e 24 active_selection = 0;
foxbrianr 3:8395f7ab6d3e 25 row=0;
foxbrianr 3:8395f7ab6d3e 26 column=0;
foxbrianr 3:8395f7ab6d3e 27 update_needed=1;
foxbrianr 4:7226c43320b5 28 current_index= 0;
foxbrianr 4:7226c43320b5 29 current_line = 1;
foxbrianr 4:7226c43320b5 30 top = 0;
foxbrianr 3:8395f7ab6d3e 31 }
foxbrianr 4:7226c43320b5 32
foxbrianr 4:7226c43320b5 33
foxbrianr 3:8395f7ab6d3e 34 void DisplayCodesMenu::display(LCD * lcd)
foxbrianr 3:8395f7ab6d3e 35 {
foxbrianr 4:7226c43320b5 36 static int lastPos = 0;
foxbrianr 4:7226c43320b5 37 static int lastSize = 0;
foxbrianr 4:7226c43320b5 38
foxbrianr 4:7226c43320b5 39 int update_page = 0;
foxbrianr 3:8395f7ab6d3e 40 char buf[40];
foxbrianr 4:7226c43320b5 41
foxbrianr 4:7226c43320b5 42 //displayCurrentTime(lcd);
foxbrianr 3:8395f7ab6d3e 43
foxbrianr 4:7226c43320b5 44 if(escmEventLog.head_ != lastPos ) {
foxbrianr 4:7226c43320b5 45
foxbrianr 4:7226c43320b5 46 current_index = 0;
foxbrianr 4:7226c43320b5 47 top = current_index;
foxbrianr 4:7226c43320b5 48 bottom = top + 2;
foxbrianr 4:7226c43320b5 49
foxbrianr 4:7226c43320b5 50 lastPos = escmEventLog.head_;
foxbrianr 4:7226c43320b5 51 lastSize = escmEventLog.size();
foxbrianr 4:7226c43320b5 52 update_needed=1;
foxbrianr 4:7226c43320b5 53 }
foxbrianr 4:7226c43320b5 54
foxbrianr 4:7226c43320b5 55
foxbrianr 4:7226c43320b5 56 // paging
foxbrianr 4:7226c43320b5 57 if (current_index < top )
foxbrianr 4:7226c43320b5 58 {
foxbrianr 4:7226c43320b5 59 top = current_index ;
foxbrianr 4:7226c43320b5 60 bottom = current_index + 2;
foxbrianr 4:7226c43320b5 61 update_page = 1;
foxbrianr 4:7226c43320b5 62 update_needed=1;
foxbrianr 4:7226c43320b5 63 }
foxbrianr 4:7226c43320b5 64 else if (current_index > bottom)
foxbrianr 4:7226c43320b5 65 {
foxbrianr 4:7226c43320b5 66 top = current_index - 2;
foxbrianr 4:7226c43320b5 67 bottom = current_index;
foxbrianr 4:7226c43320b5 68 update_page = 1;
foxbrianr 4:7226c43320b5 69 update_needed=1;
foxbrianr 4:7226c43320b5 70 }
foxbrianr 4:7226c43320b5 71 else
foxbrianr 3:8395f7ab6d3e 72 {
foxbrianr 3:8395f7ab6d3e 73
foxbrianr 3:8395f7ab6d3e 74 }
foxbrianr 3:8395f7ab6d3e 75
foxbrianr 4:7226c43320b5 76
foxbrianr 4:7226c43320b5 77 if (update_needed) {
foxbrianr 4:7226c43320b5 78
foxbrianr 4:7226c43320b5 79 lock();
foxbrianr 4:7226c43320b5 80
foxbrianr 4:7226c43320b5 81 switch (active_selection ) {
foxbrianr 4:7226c43320b5 82 case 1:
foxbrianr 4:7226c43320b5 83 lcd->cls();
foxbrianr 4:7226c43320b5 84 lcd->locate(1,0);
foxbrianr 4:7226c43320b5 85 lcd->printf("Are you sure you want to erase");
foxbrianr 4:7226c43320b5 86 lcd->locate(2,0);
foxbrianr 4:7226c43320b5 87 lcd->printf("all events (Press Mode)?");
foxbrianr 4:7226c43320b5 88 update_needed = 0;
foxbrianr 4:7226c43320b5 89 break;
foxbrianr 4:7226c43320b5 90 case 2:
foxbrianr 4:7226c43320b5 91 lcd->cls();
foxbrianr 4:7226c43320b5 92 lcd->locate(1,0);
foxbrianr 4:7226c43320b5 93 lcd->printf("Deleting Events...");
foxbrianr 4:7226c43320b5 94 erase_log = 0;
foxbrianr 4:7226c43320b5 95 escmEventLog.reset();
foxbrianr 4:7226c43320b5 96 escmEventLog.save();
foxbrianr 4:7226c43320b5 97 update_needed = 1;
foxbrianr 4:7226c43320b5 98 active_selection = 0;
foxbrianr 4:7226c43320b5 99 current_index = 0;
foxbrianr 4:7226c43320b5 100 break;
foxbrianr 4:7226c43320b5 101
foxbrianr 4:7226c43320b5 102 default:
foxbrianr 4:7226c43320b5 103
foxbrianr 4:7226c43320b5 104 lcd->cls();
foxbrianr 4:7226c43320b5 105 lcd->locate(0,0);
foxbrianr 4:7226c43320b5 106 #if 1
foxbrianr 4:7226c43320b5 107 lcd->printf(" ID | Port | Unit | Time");
foxbrianr 4:7226c43320b5 108 #else
foxbrianr 4:7226c43320b5 109 lcd->locate(0,0);
foxbrianr 4:7226c43320b5 110 lcd->printf("size= %d, index=%d, %d, %d %d", escmEventLog.size(), current_index, current_line, top, bottom);
foxbrianr 4:7226c43320b5 111 #endif
foxbrianr 4:7226c43320b5 112
foxbrianr 4:7226c43320b5 113 // update display
foxbrianr 4:7226c43320b5 114 for(int i=0; i<3; i++) {
foxbrianr 4:7226c43320b5 115
foxbrianr 4:7226c43320b5 116 int index = top + i;
foxbrianr 4:7226c43320b5 117 int line = (1+i);
foxbrianr 4:7226c43320b5 118
foxbrianr 4:7226c43320b5 119 int selected = current_index == index;
foxbrianr 4:7226c43320b5 120
foxbrianr 4:7226c43320b5 121
foxbrianr 4:7226c43320b5 122 ESCM_Event *event = escmEventLog.index (index) ;
foxbrianr 4:7226c43320b5 123
foxbrianr 4:7226c43320b5 124 if (event != NULL && index < escmEventLog.size() ) {
foxbrianr 4:7226c43320b5 125 sprintf(buf,"%02d | %02d | %02d | %02d:%02d:%02d %02d/%02d/%04d",
foxbrianr 4:7226c43320b5 126 index + 1,
foxbrianr 4:7226c43320b5 127 event->port,
foxbrianr 4:7226c43320b5 128 event->address,
foxbrianr 4:7226c43320b5 129 event->hours,
foxbrianr 4:7226c43320b5 130 event->mins,
foxbrianr 4:7226c43320b5 131 event->secs,
foxbrianr 4:7226c43320b5 132 event->month,
foxbrianr 4:7226c43320b5 133 event->day,
foxbrianr 4:7226c43320b5 134 event->year
foxbrianr 4:7226c43320b5 135 );
foxbrianr 4:7226c43320b5 136
foxbrianr 4:7226c43320b5 137 } else {
foxbrianr 4:7226c43320b5 138 sprintf(buf,"%-s | %-s | %-s | %-s",
foxbrianr 4:7226c43320b5 139 "--",
foxbrianr 4:7226c43320b5 140 "--",
foxbrianr 4:7226c43320b5 141 "--",
foxbrianr 4:7226c43320b5 142 "- N/A -");
foxbrianr 4:7226c43320b5 143 }
foxbrianr 4:7226c43320b5 144
foxbrianr 4:7226c43320b5 145 if(selected) {
foxbrianr 4:7226c43320b5 146 lcd->locate(line,0);
foxbrianr 4:7226c43320b5 147 lcd->printf(">%-39s",buf);
foxbrianr 4:7226c43320b5 148 } else {
foxbrianr 4:7226c43320b5 149 lcd->locate(line,0);
foxbrianr 4:7226c43320b5 150 lcd->printf(" %-39s",buf);
foxbrianr 4:7226c43320b5 151 }
foxbrianr 4:7226c43320b5 152
foxbrianr 4:7226c43320b5 153 //lcd->locate(line,2);
foxbrianr 4:7226c43320b5 154 //lcd->printf(buf);
foxbrianr 4:7226c43320b5 155
foxbrianr 4:7226c43320b5 156 }
foxbrianr 4:7226c43320b5 157 update_page = 0;
foxbrianr 4:7226c43320b5 158 update_needed=0;
foxbrianr 4:7226c43320b5 159 break;
foxbrianr 4:7226c43320b5 160 }
foxbrianr 4:7226c43320b5 161
foxbrianr 4:7226c43320b5 162 unlock();
foxbrianr 4:7226c43320b5 163 }
foxbrianr 4:7226c43320b5 164 }
foxbrianr 4:7226c43320b5 165
foxbrianr 4:7226c43320b5 166
foxbrianr 4:7226c43320b5 167 void DisplayCodesMenu::pressSet()
foxbrianr 4:7226c43320b5 168 {
foxbrianr 4:7226c43320b5 169 switch(active_selection) {
foxbrianr 4:7226c43320b5 170
foxbrianr 4:7226c43320b5 171 case 0: { // normal
foxbrianr 4:7226c43320b5 172 /*
foxbrianr 4:7226c43320b5 173 ESCM_Event *event = escmEventLog.index(current_index);
foxbrianr 4:7226c43320b5 174 if (event!=NULL)
foxbrianr 4:7226c43320b5 175 {
foxbrianr 4:7226c43320b5 176 ESCMControlApp::say( "%s is open",
foxbrianr 4:7226c43320b5 177 addressMap.getDescription(event->address));
foxbrianr 4:7226c43320b5 178 }
foxbrianr 4:7226c43320b5 179 */
foxbrianr 4:7226c43320b5 180 update_needed = 0;
foxbrianr 4:7226c43320b5 181 break;
foxbrianr 4:7226c43320b5 182 }
foxbrianr 4:7226c43320b5 183 case 1: // press yes
foxbrianr 4:7226c43320b5 184 active_selection = 2;
foxbrianr 4:7226c43320b5 185 update_needed = 1;
foxbrianr 4:7226c43320b5 186 break;
foxbrianr 4:7226c43320b5 187 default:
foxbrianr 4:7226c43320b5 188 active_selection = 0;
foxbrianr 4:7226c43320b5 189 break;
foxbrianr 4:7226c43320b5 190 }
foxbrianr 3:8395f7ab6d3e 191 }
foxbrianr 3:8395f7ab6d3e 192
foxbrianr 3:8395f7ab6d3e 193 void DisplayCodesMenu::pressMode()
foxbrianr 4:7226c43320b5 194 {
foxbrianr 3:8395f7ab6d3e 195
foxbrianr 4:7226c43320b5 196 switch(active_selection) {
foxbrianr 4:7226c43320b5 197 case 0: // normal
foxbrianr 4:7226c43320b5 198 active_selection = 1;
foxbrianr 4:7226c43320b5 199 update_needed = 1;
foxbrianr 4:7226c43320b5 200 break;
foxbrianr 4:7226c43320b5 201 default:
foxbrianr 4:7226c43320b5 202 active_selection = 0;
foxbrianr 4:7226c43320b5 203 update_needed = 1;
foxbrianr 4:7226c43320b5 204 break;
foxbrianr 4:7226c43320b5 205 }
foxbrianr 3:8395f7ab6d3e 206 }
foxbrianr 3:8395f7ab6d3e 207
foxbrianr 3:8395f7ab6d3e 208 void DisplayCodesMenu::pressDown()
foxbrianr 4:7226c43320b5 209 {
foxbrianr 4:7226c43320b5 210
foxbrianr 4:7226c43320b5 211 current_line++;
foxbrianr 4:7226c43320b5 212 current_index++;
foxbrianr 4:7226c43320b5 213
foxbrianr 4:7226c43320b5 214 if (current_index >= escmEventLog.size() )
foxbrianr 4:7226c43320b5 215 current_index = 0;
foxbrianr 3:8395f7ab6d3e 216
foxbrianr 4:7226c43320b5 217
foxbrianr 4:7226c43320b5 218 if (current_line > 3 )
foxbrianr 4:7226c43320b5 219 current_line = 3;
foxbrianr 4:7226c43320b5 220
foxbrianr 3:8395f7ab6d3e 221 update_needed=1;
foxbrianr 3:8395f7ab6d3e 222 }
foxbrianr 4:7226c43320b5 223
foxbrianr 3:8395f7ab6d3e 224 void DisplayCodesMenu::pressUp()
foxbrianr 3:8395f7ab6d3e 225 {
foxbrianr 4:7226c43320b5 226 current_line--;
foxbrianr 4:7226c43320b5 227 current_index--;
foxbrianr 4:7226c43320b5 228 if (current_index < 0)
foxbrianr 4:7226c43320b5 229 current_index = escmEventLog.size()-1;
foxbrianr 4:7226c43320b5 230
foxbrianr 4:7226c43320b5 231 if (current_line < 1 )
foxbrianr 4:7226c43320b5 232 current_line = 1;
foxbrianr 4:7226c43320b5 233
foxbrianr 4:7226c43320b5 234 update_needed =1;
foxbrianr 3:8395f7ab6d3e 235 }