A simple reminder program that can store up to 5 reminders, and has the ability to navigate between different pages through different functions.

Dependencies:   Hexi_KW40Z Hexi_OLED_SSD1351 PWM_Tone_Library

Committer:
fusop
Date:
Wed Apr 19 14:57:15 2017 +0000
Revision:
0:63db1c7ee975
Final Version of the Reminder Program;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fusop 0:63db1c7ee975 1 //------------------------------------------------------------------------------
fusop 0:63db1c7ee975 2 // PAGES FUNCTION DEFINITIONS
fusop 0:63db1c7ee975 3 //------------------------------------------------------------------------------
fusop 0:63db1c7ee975 4
fusop 0:63db1c7ee975 5 void TimeSetup()
fusop 0:63db1c7ee975 6 {
fusop 0:63db1c7ee975 7 //Variables
fusop 0:63db1c7ee975 8 int point = 1; //Points to which digit
fusop 0:63db1c7ee975 9 int valid = 0; //Exit confirmation
fusop 0:63db1c7ee975 10 int num = 0; //Temporary number holder
fusop 0:63db1c7ee975 11 int xc = 25; //Initial cursor's x-position
fusop 0:63db1c7ee975 12
fusop 0:63db1c7ee975 13 //Screen Setup
fusop 0:63db1c7ee975 14 oled.FillScreen(COLOR_BLACK);
fusop 0:63db1c7ee975 15
fusop 0:63db1c7ee975 16 strcpy((char *) str, "Set time and date");
fusop 0:63db1c7ee975 17 oled.Label((uint8_t *) str, 0, 0);
fusop 0:63db1c7ee975 18
fusop 0:63db1c7ee975 19 strcpy((char *) str, "HH:MM");
fusop 0:63db1c7ee975 20 oled.Label((uint8_t *) str, 30, 20);
fusop 0:63db1c7ee975 21
fusop 0:63db1c7ee975 22 strcpy((char *) str, "Hours");
fusop 0:63db1c7ee975 23 oled.Label((uint8_t *) str, 2, 80);
fusop 0:63db1c7ee975 24
fusop 0:63db1c7ee975 25 strcpy((char *) str, "Mins/OK");
fusop 0:63db1c7ee975 26 oled.Label((uint8_t *) str, 43, 80);
fusop 0:63db1c7ee975 27
fusop 0:63db1c7ee975 28 while (valid != 1) //This is a loop for time input
fusop 0:63db1c7ee975 29 {
fusop 0:63db1c7ee975 30 if (butflg == 1)
fusop 0:63db1c7ee975 31 {
fusop 0:63db1c7ee975 32 if (butmem == BUT_RIGHT && point == 1) //Go right to minutes
fusop 0:63db1c7ee975 33 {
fusop 0:63db1c7ee975 34 hours = num;
fusop 0:63db1c7ee975 35 num = mins;
fusop 0:63db1c7ee975 36 point = 2;
fusop 0:63db1c7ee975 37 xc = 45;
fusop 0:63db1c7ee975 38 }
fusop 0:63db1c7ee975 39 else if (butmem == BUT_RIGHT && point == 2 && valid == 0) //Exit
fusop 0:63db1c7ee975 40 {
fusop 0:63db1c7ee975 41 mins = num;
fusop 0:63db1c7ee975 42 valid = 1;
fusop 0:63db1c7ee975 43 }
fusop 0:63db1c7ee975 44 else if (butmem == BUT_LEFT && point == 2 && valid == 0) //Go left to seconds
fusop 0:63db1c7ee975 45 {
fusop 0:63db1c7ee975 46 mins = num;
fusop 0:63db1c7ee975 47 num = hours;
fusop 0:63db1c7ee975 48 point = 1;
fusop 0:63db1c7ee975 49 xc = 25;
fusop 0:63db1c7ee975 50 }
fusop 0:63db1c7ee975 51
fusop 0:63db1c7ee975 52 //Increases the number of the hours/minutes using the up or down button
fusop 0:63db1c7ee975 53 if (butmem == BUT_UP && ((point == 1 && num != 23) || (point == 2 && num != 59))) num++;
fusop 0:63db1c7ee975 54 else if (butmem == BUT_DOWN && num != 0) num--;
fusop 0:63db1c7ee975 55 butflg = 0;
fusop 0:63db1c7ee975 56 }
fusop 0:63db1c7ee975 57
fusop 0:63db1c7ee975 58 //Updates the display
fusop 0:63db1c7ee975 59 sprintf((char *) str, "%d", num);
fusop 0:63db1c7ee975 60 oled.TextBox((uint8_t *) str, xc, 40, 15, 15);
fusop 0:63db1c7ee975 61 Thread::wait(500);
fusop 0:63db1c7ee975 62 }
fusop 0:63db1c7ee975 63
fusop 0:63db1c7ee975 64 numCount = 0; //Activate the time flag
fusop 0:63db1c7ee975 65 }
fusop 0:63db1c7ee975 66
fusop 0:63db1c7ee975 67 void TimeDisplay()
fusop 0:63db1c7ee975 68 {
fusop 0:63db1c7ee975 69 sprintf((char *) str, "%.2d : %.2d", hours, mins);
fusop 0:63db1c7ee975 70 oled.Label((uint8_t *) str, 30, 0);
fusop 0:63db1c7ee975 71 }
fusop 0:63db1c7ee975 72
fusop 0:63db1c7ee975 73 void MainDisp()
fusop 0:63db1c7ee975 74 {
fusop 0:63db1c7ee975 75 //This is the home screen
fusop 0:63db1c7ee975 76 strcpy((char *) str, "Delete");
fusop 0:63db1c7ee975 77 oled.Label((uint8_t *) str, 5, 80);
fusop 0:63db1c7ee975 78
fusop 0:63db1c7ee975 79 strcpy((char *) str, "Add");
fusop 0:63db1c7ee975 80 oled.Label((uint8_t *) str, 60, 80);
fusop 0:63db1c7ee975 81 }
fusop 0:63db1c7ee975 82
fusop 0:63db1c7ee975 83 void ReminderList()
fusop 0:63db1c7ee975 84 {
fusop 0:63db1c7ee975 85 int m;
fusop 0:63db1c7ee975 86 //For the other two buttons
fusop 0:63db1c7ee975 87 if (nDisp == 5)
fusop 0:63db1c7ee975 88 {
fusop 0:63db1c7ee975 89 oled.DrawBox(0, 30, 96, 96-30-15, COLOR_BLACK);
fusop 0:63db1c7ee975 90 strcpy((char *) str, "No Data");
fusop 0:63db1c7ee975 91 oled.Label((uint8_t *) str, 10, 45);
fusop 0:63db1c7ee975 92 }
fusop 0:63db1c7ee975 93 else
fusop 0:63db1c7ee975 94 {
fusop 0:63db1c7ee975 95 if (butmem == BUT_UP)
fusop 0:63db1c7ee975 96 {
fusop 0:63db1c7ee975 97 for (m = nDisp+1; m < 5; m++)
fusop 0:63db1c7ee975 98 {
fusop 0:63db1c7ee975 99 if (remData[m].rExist == 1)
fusop 0:63db1c7ee975 100 {
fusop 0:63db1c7ee975 101 nDisp = m;
fusop 0:63db1c7ee975 102 break;
fusop 0:63db1c7ee975 103 }
fusop 0:63db1c7ee975 104 }
fusop 0:63db1c7ee975 105 }
fusop 0:63db1c7ee975 106 else if (butmem == BUT_DOWN)
fusop 0:63db1c7ee975 107 {
fusop 0:63db1c7ee975 108 for (m = nDisp-1; m >= 0; m--)
fusop 0:63db1c7ee975 109 {
fusop 0:63db1c7ee975 110 if (remData[m].rExist == 1)
fusop 0:63db1c7ee975 111 {
fusop 0:63db1c7ee975 112 nDisp = m;
fusop 0:63db1c7ee975 113 break;
fusop 0:63db1c7ee975 114 }
fusop 0:63db1c7ee975 115 }
fusop 0:63db1c7ee975 116 }
fusop 0:63db1c7ee975 117
fusop 0:63db1c7ee975 118 //Display the result
fusop 0:63db1c7ee975 119 oled.DrawBox(0, 30, 96, 96-30-15, COLOR_BLACK);
fusop 0:63db1c7ee975 120 oled.Label((uint8_t *) remData[nDisp].rText, 10, 40);
fusop 0:63db1c7ee975 121 sprintf((char *) str, " %d:%d", remData[nDisp].rHours, remData[nDisp].rMins);
fusop 0:63db1c7ee975 122 oled.Label((uint8_t *) str, 20, 55);
fusop 0:63db1c7ee975 123 }
fusop 0:63db1c7ee975 124 }
fusop 0:63db1c7ee975 125
fusop 0:63db1c7ee975 126 void AddReminder()
fusop 0:63db1c7ee975 127 {
fusop 0:63db1c7ee975 128 //Temporary Variable for Input Acknowledgement
fusop 0:63db1c7ee975 129 int inputAck = 0;
fusop 0:63db1c7ee975 130 int xc = 25;
fusop 0:63db1c7ee975 131 int num = 0;
fusop 0:63db1c7ee975 132 int total = 0;
fusop 0:63db1c7ee975 133
fusop 0:63db1c7ee975 134 //Clear Screen
fusop 0:63db1c7ee975 135 oled.DrawBox(0, 30, 96, 96-30, COLOR_BLACK);
fusop 0:63db1c7ee975 136
fusop 0:63db1c7ee975 137 //Count how many reminders are in there
fusop 0:63db1c7ee975 138 //For now, limit to 5 data
fusop 0:63db1c7ee975 139 for (num = 0; num < 5; num++) total = total+remData[num].rExist;
fusop 0:63db1c7ee975 140
fusop 0:63db1c7ee975 141 //Since num is used in the time input code block, clear it
fusop 0:63db1c7ee975 142 num = 0;
fusop 0:63db1c7ee975 143
fusop 0:63db1c7ee975 144 if (total == 5)
fusop 0:63db1c7ee975 145 {
fusop 0:63db1c7ee975 146 strcpy((char *) str, "Reminder Full");
fusop 0:63db1c7ee975 147 oled.Label((uint8_t *) str, 10, 45);
fusop 0:63db1c7ee975 148
fusop 0:63db1c7ee975 149 DelayProg(6);
fusop 0:63db1c7ee975 150 }
fusop 0:63db1c7ee975 151 else //Here is the main program for AddReminder()
fusop 0:63db1c7ee975 152 {
fusop 0:63db1c7ee975 153 //First we offset to the first entry with rExist = 0;
fusop 0:63db1c7ee975 154
fusop 0:63db1c7ee975 155 for (rNumber = 0; rNumber < 5; rNumber++)
fusop 0:63db1c7ee975 156 {
fusop 0:63db1c7ee975 157 if (remData[rNumber].rExist == 0) break;
fusop 0:63db1c7ee975 158 }
fusop 0:63db1c7ee975 159
fusop 0:63db1c7ee975 160 //Then we display whatever we need to display
fusop 0:63db1c7ee975 161
fusop 0:63db1c7ee975 162 //Display Entry Number
fusop 0:63db1c7ee975 163 sprintf((char *) str, "Entry #%d", rNumber+1);
fusop 0:63db1c7ee975 164 oled.Label((uint8_t *) str, 0, 30);
fusop 0:63db1c7ee975 165
fusop 0:63db1c7ee975 166 //Text Input---------------------------------------------
fusop 0:63db1c7ee975 167 strcpy((char *) str, "Agenda:");
fusop 0:63db1c7ee975 168 oled.Label((uint8_t *) str, 0, 45);
fusop 0:63db1c7ee975 169
fusop 0:63db1c7ee975 170 inputAck = CharInput(60, rNumber);
fusop 0:63db1c7ee975 171 //DelayProg(6);
fusop 0:63db1c7ee975 172
fusop 0:63db1c7ee975 173 oled.DrawBox(0, 45, 96, 96-45, COLOR_BLACK);
fusop 0:63db1c7ee975 174
fusop 0:63db1c7ee975 175 if (inputAck == 0)
fusop 0:63db1c7ee975 176 {
fusop 0:63db1c7ee975 177 oled.DrawBox(0, 30, 96, 96-30, COLOR_BLACK);
fusop 0:63db1c7ee975 178
fusop 0:63db1c7ee975 179 strcpy((char *) str, "Canceled");
fusop 0:63db1c7ee975 180 oled.Label((uint8_t *) str, 0, 45);
fusop 0:63db1c7ee975 181
fusop 0:63db1c7ee975 182 DelayProg(6);
fusop 0:63db1c7ee975 183
fusop 0:63db1c7ee975 184 //Break the hell out of this function.
fusop 0:63db1c7ee975 185 goto AddRemExit;
fusop 0:63db1c7ee975 186 }
fusop 0:63db1c7ee975 187
fusop 0:63db1c7ee975 188 //Else, proceed to time input
fusop 0:63db1c7ee975 189
fusop 0:63db1c7ee975 190 //Time input----------------------------------------------
fusop 0:63db1c7ee975 191 strcpy((char *) str, "Time(HH:MM):");
fusop 0:63db1c7ee975 192 oled.Label((uint8_t *) str, 0, 30);
fusop 0:63db1c7ee975 193
fusop 0:63db1c7ee975 194 strcpy((char *) str, "Hours");
fusop 0:63db1c7ee975 195 oled.Label((uint8_t *) str, 2, 80);
fusop 0:63db1c7ee975 196
fusop 0:63db1c7ee975 197 strcpy((char *) str, "Mins/OK");
fusop 0:63db1c7ee975 198 oled.Label((uint8_t *) str, 43, 80);
fusop 0:63db1c7ee975 199
fusop 0:63db1c7ee975 200 //Breakdown of the variables
fusop 0:63db1c7ee975 201 // xc = x-position, as well as the reference of hours or minutes
fusop 0:63db1c7ee975 202 // inputAck
fusop 0:63db1c7ee975 203 // num = temporary variable
fusop 0:63db1c7ee975 204
fusop 0:63db1c7ee975 205 while (1) //This is a time input loop for reminders
fusop 0:63db1c7ee975 206 {
fusop 0:63db1c7ee975 207 if (butflg == 1)
fusop 0:63db1c7ee975 208 {
fusop 0:63db1c7ee975 209 if (butmem == BUT_RIGHT && xc == 25) //Go right to minutes
fusop 0:63db1c7ee975 210 {
fusop 0:63db1c7ee975 211 remData[rNumber].rHours = num; //num is recycled from previous functions
fusop 0:63db1c7ee975 212 num = remData[rNumber].rMins;
fusop 0:63db1c7ee975 213 xc = 45;
fusop 0:63db1c7ee975 214 }
fusop 0:63db1c7ee975 215 else if (butmem == BUT_LEFT && xc == 25) //Exit (Cancelled)
fusop 0:63db1c7ee975 216 {
fusop 0:63db1c7ee975 217 remData[rNumber].rHours = 0;
fusop 0:63db1c7ee975 218 remData[rNumber].rMins = 0;
fusop 0:63db1c7ee975 219 strcpy(remData[rNumber].rText, " ");
fusop 0:63db1c7ee975 220 inputAck = 0;
fusop 0:63db1c7ee975 221 break; //Don't forget this is the second 'if loop'.
fusop 0:63db1c7ee975 222 }
fusop 0:63db1c7ee975 223 else if (butmem == BUT_RIGHT && xc == 45) //Exit (Confirmed)
fusop 0:63db1c7ee975 224 {
fusop 0:63db1c7ee975 225 remData[rNumber].rMins = num;
fusop 0:63db1c7ee975 226 inputAck = 1;
fusop 0:63db1c7ee975 227 break; //Don't forget this is the second 'if loop'.
fusop 0:63db1c7ee975 228 }
fusop 0:63db1c7ee975 229 else if (butmem == BUT_LEFT && xc == 45) //Go left to seconds
fusop 0:63db1c7ee975 230 {
fusop 0:63db1c7ee975 231 remData[rNumber].rMins = num;
fusop 0:63db1c7ee975 232 num = remData[rNumber].rHours;
fusop 0:63db1c7ee975 233 xc = 25;
fusop 0:63db1c7ee975 234 }
fusop 0:63db1c7ee975 235
fusop 0:63db1c7ee975 236 //Increases the number of the hours/minutes using the up or down button
fusop 0:63db1c7ee975 237 if (butmem == BUT_UP && ((xc == 25 && num != 23) || (xc == 45 && num != 59))) num++;
fusop 0:63db1c7ee975 238 else if (butmem == BUT_DOWN && num != 0) num--;
fusop 0:63db1c7ee975 239 butflg = 0;
fusop 0:63db1c7ee975 240 }
fusop 0:63db1c7ee975 241
fusop 0:63db1c7ee975 242 if (inputAck == 0) goto AddRemExit; //And this continues from the Exit (Cancelled)
fusop 0:63db1c7ee975 243
fusop 0:63db1c7ee975 244 //Updates the display
fusop 0:63db1c7ee975 245 sprintf((char *) str, "%d", num);
fusop 0:63db1c7ee975 246 oled.TextBox((uint8_t *) str, xc, 60, 15, 15);
fusop 0:63db1c7ee975 247 }
fusop 0:63db1c7ee975 248
fusop 0:63db1c7ee975 249 if (inputAck == 0)
fusop 0:63db1c7ee975 250 {
fusop 0:63db1c7ee975 251 oled.DrawBox(0, 30, 96, 96-30, COLOR_BLACK);
fusop 0:63db1c7ee975 252 strcpy((char *) str, "Canceled");
fusop 0:63db1c7ee975 253 oled.Label((uint8_t *) str, 0, 45);
fusop 0:63db1c7ee975 254
fusop 0:63db1c7ee975 255 DelayProg(6);
fusop 0:63db1c7ee975 256
fusop 0:63db1c7ee975 257 //Break the hell out of this function.
fusop 0:63db1c7ee975 258 goto AddRemExit;
fusop 0:63db1c7ee975 259 }
fusop 0:63db1c7ee975 260
fusop 0:63db1c7ee975 261 //All the details are confirmed ----------------------------------------
fusop 0:63db1c7ee975 262
fusop 0:63db1c7ee975 263 remData[rNumber].rExist = 1;
fusop 0:63db1c7ee975 264
fusop 0:63db1c7ee975 265 oled.DrawBox(0, 30, 96, 96-30, COLOR_BLACK);
fusop 0:63db1c7ee975 266 strcpy((char *) str, "Reminder Added");
fusop 0:63db1c7ee975 267 oled.Label((uint8_t *) str, 0, 45);
fusop 0:63db1c7ee975 268
fusop 0:63db1c7ee975 269 DelayProg(6);
fusop 0:63db1c7ee975 270 }
fusop 0:63db1c7ee975 271
fusop 0:63db1c7ee975 272 AddRemExit:
fusop 0:63db1c7ee975 273
fusop 0:63db1c7ee975 274 //Setup Screen before exiting
fusop 0:63db1c7ee975 275 oled.DrawBox(0, 30, 96, 96-30, COLOR_BLACK);
fusop 0:63db1c7ee975 276 MainDisp();
fusop 0:63db1c7ee975 277
fusop 0:63db1c7ee975 278 //Set this flag to 1 to recalculate the display data
fusop 0:63db1c7ee975 279 fReCalc = 1;
fusop 0:63db1c7ee975 280 }
fusop 0:63db1c7ee975 281
fusop 0:63db1c7ee975 282 void DelReminder()
fusop 0:63db1c7ee975 283 {
fusop 0:63db1c7ee975 284 int n;
fusop 0:63db1c7ee975 285 int total = 0;
fusop 0:63db1c7ee975 286
fusop 0:63db1c7ee975 287 //Clear Screen
fusop 0:63db1c7ee975 288 oled.DrawBox(0, 30, 96, 96-30, COLOR_BLACK);
fusop 0:63db1c7ee975 289
fusop 0:63db1c7ee975 290 //If total is 0, then there is no data to delete, ain't it?
fusop 0:63db1c7ee975 291 for (n = 0; n < 5; n++) total = total+remData[n].rExist;
fusop 0:63db1c7ee975 292
fusop 0:63db1c7ee975 293 if (total == 0)
fusop 0:63db1c7ee975 294 {
fusop 0:63db1c7ee975 295 strcpy((char *) str, "No Data");
fusop 0:63db1c7ee975 296 oled.Label((uint8_t *) str, 10, 45);
fusop 0:63db1c7ee975 297
fusop 0:63db1c7ee975 298 DelayProg(6);
fusop 0:63db1c7ee975 299 }
fusop 0:63db1c7ee975 300 else //Case when there is a Data to delete
fusop 0:63db1c7ee975 301 {
fusop 0:63db1c7ee975 302 //First we must offset to the first existing data
fusop 0:63db1c7ee975 303 for (n = 0; n < 5; n++)
fusop 0:63db1c7ee975 304 {
fusop 0:63db1c7ee975 305 if (remData[n].rExist != 0) break;
fusop 0:63db1c7ee975 306 }
fusop 0:63db1c7ee975 307
fusop 0:63db1c7ee975 308 //Then we display whatever we need to display
fusop 0:63db1c7ee975 309
fusop 0:63db1c7ee975 310 //We enter the navigation
fusop 0:63db1c7ee975 311
fusop 0:63db1c7ee975 312 butmem = 0;
fusop 0:63db1c7ee975 313
fusop 0:63db1c7ee975 314 //First thing that it should display
fusop 0:63db1c7ee975 315
fusop 0:63db1c7ee975 316 sprintf((char *) str, "Entry #%d", n+1); //Entry Number
fusop 0:63db1c7ee975 317 oled.Label((uint8_t *) str, 0, 30);
fusop 0:63db1c7ee975 318 oled.Label((uint8_t *) remData[n].rText, 0, 45); //Its text
fusop 0:63db1c7ee975 319 sprintf((char *) str, "%d:%d", remData[n].rHours, remData[n].rMins); //Its time, for SPARTAAAAAAA
fusop 0:63db1c7ee975 320
fusop 0:63db1c7ee975 321 while (1) //NOTE: THIS IS TERRIBLY RISKY, BUT whatever
fusop 0:63db1c7ee975 322 {
fusop 0:63db1c7ee975 323 if (butflg == 1)
fusop 0:63db1c7ee975 324 {
fusop 0:63db1c7ee975 325 //There are two parts in this section
fusop 0:63db1c7ee975 326
fusop 0:63db1c7ee975 327 //FIRST PART: DO I GO NEXT OR PREVIOUS?
fusop 0:63db1c7ee975 328 if (butmem == BUT_UP)
fusop 0:63db1c7ee975 329 {
fusop 0:63db1c7ee975 330 //Let's recycle total here. total is used as pointer
fusop 0:63db1c7ee975 331 //So if there is any data after the value n, we can move up
fusop 0:63db1c7ee975 332 for (total = n+1; total < 5; total++)
fusop 0:63db1c7ee975 333 {
fusop 0:63db1c7ee975 334 if (remData[total].rExist != 0) break;
fusop 0:63db1c7ee975 335 }
fusop 0:63db1c7ee975 336
fusop 0:63db1c7ee975 337 if (total != 5) n = total;
fusop 0:63db1c7ee975 338 total = 0; //For various reasons, reset total
fusop 0:63db1c7ee975 339 }
fusop 0:63db1c7ee975 340 else if (butmem == BUT_DOWN)
fusop 0:63db1c7ee975 341 {
fusop 0:63db1c7ee975 342 //Let's...you know what I'm gonna talk about
fusop 0:63db1c7ee975 343 for (total = n-1; total >= 0; total--)
fusop 0:63db1c7ee975 344 {
fusop 0:63db1c7ee975 345 if (remData[total].rExist != 0) break;
fusop 0:63db1c7ee975 346 }
fusop 0:63db1c7ee975 347
fusop 0:63db1c7ee975 348 if (total != -1) n = total;
fusop 0:63db1c7ee975 349 total = 0; //For the same reason as above, reset total
fusop 0:63db1c7ee975 350 }
fusop 0:63db1c7ee975 351
fusop 0:63db1c7ee975 352 //SECOND PART: DO I WANT TO DELETE OR NAH
fusop 0:63db1c7ee975 353 if (butmem == BUT_LEFT) total = 0x11; //Uh, reasons
fusop 0:63db1c7ee975 354 else if (butmem == BUT_RIGHT) total = 0x27; //Fav Number
fusop 0:63db1c7ee975 355 //*That is why I need to reset total everytime*
fusop 0:63db1c7ee975 356
fusop 0:63db1c7ee975 357 //THIRD PART(DID YOU NOT EXPECT THE SPANISH INQUISITION?)
fusop 0:63db1c7ee975 358 //Display the stuff
fusop 0:63db1c7ee975 359
fusop 0:63db1c7ee975 360 oled.DrawBox(0, 30, 96, 96-30, COLOR_BLACK);
fusop 0:63db1c7ee975 361 sprintf((char *) str, "Entry #%d", n+1); //Entry Number
fusop 0:63db1c7ee975 362 oled.Label((uint8_t *) str, 0, 30);
fusop 0:63db1c7ee975 363 oled.Label((uint8_t *) remData[n].rText, 0, 45);
fusop 0:63db1c7ee975 364 sprintf((char *) str, "%d:%d", remData[n].rHours, remData[n].rMins);
fusop 0:63db1c7ee975 365 oled.Label((uint8_t *) str, 0, 60);
fusop 0:63db1c7ee975 366
fusop 0:63db1c7ee975 367 butflg = 0;
fusop 0:63db1c7ee975 368 }
fusop 0:63db1c7ee975 369
fusop 0:63db1c7ee975 370 //Delete Data and Exit
fusop 0:63db1c7ee975 371 if (total == 0x27)
fusop 0:63db1c7ee975 372 {
fusop 0:63db1c7ee975 373 strcpy(remData[n].rText, " ");
fusop 0:63db1c7ee975 374 remData[n].rHours = 0;
fusop 0:63db1c7ee975 375 remData[n].rMins = 0;
fusop 0:63db1c7ee975 376 remData[n].rExist = 0;
fusop 0:63db1c7ee975 377
fusop 0:63db1c7ee975 378 oled.DrawBox(0, 30, 96, 96-30, COLOR_BLACK);
fusop 0:63db1c7ee975 379 oled.DrawBox(0, 30, 96, 96-30, COLOR_BLACK);
fusop 0:63db1c7ee975 380
fusop 0:63db1c7ee975 381 sprintf((char *) str, "Entry #%d Deleted", n+1);
fusop 0:63db1c7ee975 382 oled.Label((uint8_t *) str, 0, 45);
fusop 0:63db1c7ee975 383
fusop 0:63db1c7ee975 384 DelayProg(6);
fusop 0:63db1c7ee975 385
fusop 0:63db1c7ee975 386 break;
fusop 0:63db1c7ee975 387 }
fusop 0:63db1c7ee975 388 //Exit this function
fusop 0:63db1c7ee975 389 else if (total == 0x11) break;
fusop 0:63db1c7ee975 390
fusop 0:63db1c7ee975 391 }//End of While Loop
fusop 0:63db1c7ee975 392
fusop 0:63db1c7ee975 393 }//End of Else Loop
fusop 0:63db1c7ee975 394
fusop 0:63db1c7ee975 395 //Setup Screen before exiting
fusop 0:63db1c7ee975 396 oled.DrawBox(0, 30, 96, 96-30, COLOR_BLACK);
fusop 0:63db1c7ee975 397 MainDisp();
fusop 0:63db1c7ee975 398
fusop 0:63db1c7ee975 399 //Set this flag to 1 to recalculate the display data
fusop 0:63db1c7ee975 400 fReCalc = 1;
fusop 0:63db1c7ee975 401
fusop 0:63db1c7ee975 402 }//End of GOSH HOW CAN YOU NOT KNOW WHAT END IS THIS?
fusop 0:63db1c7ee975 403