Year Two Project ELEC 2645: Embedded Systems Project Portable Weather Station

Dependencies:   BMP180 ConfigFile N5110 PowerControl beep mbed

Committer:
OHstin
Date:
Mon May 11 15:25:52 2015 +0000
Revision:
0:da2b8c7a1ec1
Completed Weather Station

Who changed what in which revision?

UserRevisionLine numberNew contents of line
OHstin 0:da2b8c7a1ec1 1 /**
OHstin 0:da2b8c7a1ec1 2
OHstin 0:da2b8c7a1ec1 3 @file WeatherApp.h
OHstin 0:da2b8c7a1ec1 4
OHstin 0:da2b8c7a1ec1 5 */
OHstin 0:da2b8c7a1ec1 6
OHstin 0:da2b8c7a1ec1 7
OHstin 0:da2b8c7a1ec1 8 #include "CurrentTemperatureScreen.h"
OHstin 0:da2b8c7a1ec1 9 #include "TemperatureScreen.h"
OHstin 0:da2b8c7a1ec1 10 #include "BrightnessScreen.h"
OHstin 0:da2b8c7a1ec1 11 #include "MainMenuScreen.h"
OHstin 0:da2b8c7a1ec1 12 #include "SettingsScreen.h"
OHstin 0:da2b8c7a1ec1 13 #include "TemperaturePlot.h"
OHstin 0:da2b8c7a1ec1 14 #include "LogScreen.h"
OHstin 0:da2b8c7a1ec1 15 #include "DurationScreen.h"
OHstin 0:da2b8c7a1ec1 16 #include "IntervalScreen.h"
OHstin 0:da2b8c7a1ec1 17 #include "LogOptionScreen.h"
OHstin 0:da2b8c7a1ec1 18 #include "TempViewLogScreen.h"
OHstin 0:da2b8c7a1ec1 19 #include "TemperatureLog.h"
OHstin 0:da2b8c7a1ec1 20 #include "SoundScreen.h"
OHstin 0:da2b8c7a1ec1 21 #include "Sensors.h"
OHstin 0:da2b8c7a1ec1 22 #include "PressureScreen.h"
OHstin 0:da2b8c7a1ec1 23 #include "PressurePlot.h"
OHstin 0:da2b8c7a1ec1 24 #include "CurrentPressureScreen.h"
OHstin 0:da2b8c7a1ec1 25 #include "PrsViewLogScreen.h"
OHstin 0:da2b8c7a1ec1 26 #include "PressureLog.h"
OHstin 0:da2b8c7a1ec1 27 #include "BatteryStatusScreen.h"
OHstin 0:da2b8c7a1ec1 28 #include "EthernetPowerControl.h"
OHstin 0:da2b8c7a1ec1 29
OHstin 0:da2b8c7a1ec1 30 /**
OHstin 0:da2b8c7a1ec1 31 @brief This controls the entire weather application. It is the Navigation Controller
OHstin 0:da2b8c7a1ec1 32 @brief It determines which screen should be displayed when a button is selected
OHstin 0:da2b8c7a1ec1 33 @brief It also manages the status bar
OHstin 0:da2b8c7a1ec1 34 @author Augustine K Kizito
OHstin 0:da2b8c7a1ec1 35 @date April 2015
OHstin 0:da2b8c7a1ec1 36 */
OHstin 0:da2b8c7a1ec1 37
OHstin 0:da2b8c7a1ec1 38
OHstin 0:da2b8c7a1ec1 39 class WeatherApp
OHstin 0:da2b8c7a1ec1 40 {
OHstin 0:da2b8c7a1ec1 41 private:
OHstin 0:da2b8c7a1ec1 42 void appInitialise(); // initalises the weather app
OHstin 0:da2b8c7a1ec1 43 void updateStatusBar(); // updates time and battery icon
OHstin 0:da2b8c7a1ec1 44 void clearScreen(); // clears everything on the screen apart from the status bar
OHstin 0:da2b8c7a1ec1 45 void initSound(); // initialises sound
OHstin 0:da2b8c7a1ec1 46 void initBrightness(); // initialises lcd brightness
OHstin 0:da2b8c7a1ec1 47
OHstin 0:da2b8c7a1ec1 48 Ticker status; // updates the status bar at regular intervals
OHstin 0:da2b8c7a1ec1 49 public:
OHstin 0:da2b8c7a1ec1 50 /**
OHstin 0:da2b8c7a1ec1 51 Runs the Weather Application on the mbed
OHstin 0:da2b8c7a1ec1 52
OHstin 0:da2b8c7a1ec1 53 */
OHstin 0:da2b8c7a1ec1 54 void run();
OHstin 0:da2b8c7a1ec1 55
OHstin 0:da2b8c7a1ec1 56 };
OHstin 0:da2b8c7a1ec1 57
OHstin 0:da2b8c7a1ec1 58 void WeatherApp::run()
OHstin 0:da2b8c7a1ec1 59 {
OHstin 0:da2b8c7a1ec1 60 appInitialise();
OHstin 0:da2b8c7a1ec1 61
OHstin 0:da2b8c7a1ec1 62 // Objects for screens
OHstin 0:da2b8c7a1ec1 63 MainMenuScreen menu;
OHstin 0:da2b8c7a1ec1 64 TemperatureScreen temp;
OHstin 0:da2b8c7a1ec1 65 PressureScreen prs;
OHstin 0:da2b8c7a1ec1 66 CurrentTemperatureScreen currTemp;
OHstin 0:da2b8c7a1ec1 67 CurrentPressureScreen currPrs;
OHstin 0:da2b8c7a1ec1 68 BrightnessScreen bright;
OHstin 0:da2b8c7a1ec1 69 SettingsScreen settings;
OHstin 0:da2b8c7a1ec1 70 IntervalScreen tempInt;
OHstin 0:da2b8c7a1ec1 71 IntervalScreen prsInt;
OHstin 0:da2b8c7a1ec1 72 DurationScreen tempDur;
OHstin 0:da2b8c7a1ec1 73 DurationScreen prsDur;
OHstin 0:da2b8c7a1ec1 74 TemperaturePlot templot;
OHstin 0:da2b8c7a1ec1 75 PressurePlot prsplot;
OHstin 0:da2b8c7a1ec1 76 LogScreen logg;
OHstin 0:da2b8c7a1ec1 77 LogOptionScreen optOne;
OHstin 0:da2b8c7a1ec1 78 LogOptionScreen optTwo;
OHstin 0:da2b8c7a1ec1 79 TemperatureLog tempLog;
OHstin 0:da2b8c7a1ec1 80 PressureLog prsLog;
OHstin 0:da2b8c7a1ec1 81 SoundScreen sound;
OHstin 0:da2b8c7a1ec1 82 BatteryStatusScreen currBatt;
OHstin 0:da2b8c7a1ec1 83
OHstin 0:da2b8c7a1ec1 84 // these booleans allow the user to smoothly navigate between layers
OHstin 0:da2b8c7a1ec1 85 // the main menu is the first layer, when the user selects an option they go into the second layer and so on.
OHstin 0:da2b8c7a1ec1 86 bool backFirstLayer;
OHstin 0:da2b8c7a1ec1 87 bool backSecondLayer;
OHstin 0:da2b8c7a1ec1 88 bool backThirdLayer;
OHstin 0:da2b8c7a1ec1 89 bool backFourthLayer;
OHstin 0:da2b8c7a1ec1 90
OHstin 0:da2b8c7a1ec1 91 while(1) {
OHstin 0:da2b8c7a1ec1 92
OHstin 0:da2b8c7a1ec1 93 switch(menu.start()) {
OHstin 0:da2b8c7a1ec1 94
OHstin 0:da2b8c7a1ec1 95 // Temperature
OHstin 0:da2b8c7a1ec1 96 case 0:
OHstin 0:da2b8c7a1ec1 97 backFirstLayer = false;
OHstin 0:da2b8c7a1ec1 98 clearScreen();
OHstin 0:da2b8c7a1ec1 99
OHstin 0:da2b8c7a1ec1 100 while(!backFirstLayer) {
OHstin 0:da2b8c7a1ec1 101
OHstin 0:da2b8c7a1ec1 102 switch(temp.start()) {
OHstin 0:da2b8c7a1ec1 103
OHstin 0:da2b8c7a1ec1 104 // View Temp
OHstin 0:da2b8c7a1ec1 105 case 0:
OHstin 0:da2b8c7a1ec1 106 backSecondLayer = false;
OHstin 0:da2b8c7a1ec1 107 clearScreen();
OHstin 0:da2b8c7a1ec1 108
OHstin 0:da2b8c7a1ec1 109 while(!backSecondLayer) {
OHstin 0:da2b8c7a1ec1 110
OHstin 0:da2b8c7a1ec1 111 switch(currTemp.start()) {
OHstin 0:da2b8c7a1ec1 112
OHstin 0:da2b8c7a1ec1 113 case -1:
OHstin 0:da2b8c7a1ec1 114 clearScreen();
OHstin 0:da2b8c7a1ec1 115 backSecondLayer = true;
OHstin 0:da2b8c7a1ec1 116 break;
OHstin 0:da2b8c7a1ec1 117 }
OHstin 0:da2b8c7a1ec1 118 }
OHstin 0:da2b8c7a1ec1 119 break;
OHstin 0:da2b8c7a1ec1 120
OHstin 0:da2b8c7a1ec1 121 //Realtime Plot
OHstin 0:da2b8c7a1ec1 122 case 1:
OHstin 0:da2b8c7a1ec1 123 backSecondLayer = false;
OHstin 0:da2b8c7a1ec1 124 clearScreen();
OHstin 0:da2b8c7a1ec1 125
OHstin 0:da2b8c7a1ec1 126 while(!backSecondLayer) {
OHstin 0:da2b8c7a1ec1 127
OHstin 0:da2b8c7a1ec1 128 // Intervals
OHstin 0:da2b8c7a1ec1 129
OHstin 0:da2b8c7a1ec1 130 switch(tempInt.start()) {
OHstin 0:da2b8c7a1ec1 131
OHstin 0:da2b8c7a1ec1 132 // 1 second
OHstin 0:da2b8c7a1ec1 133 case 0:
OHstin 0:da2b8c7a1ec1 134 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 135 clearScreen();
OHstin 0:da2b8c7a1ec1 136
OHstin 0:da2b8c7a1ec1 137 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 138
OHstin 0:da2b8c7a1ec1 139 switch(templot.start(0)) {
OHstin 0:da2b8c7a1ec1 140
OHstin 0:da2b8c7a1ec1 141 // Previous Screen
OHstin 0:da2b8c7a1ec1 142 case -1:
OHstin 0:da2b8c7a1ec1 143 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 144 clearScreen();
OHstin 0:da2b8c7a1ec1 145 break;
OHstin 0:da2b8c7a1ec1 146
OHstin 0:da2b8c7a1ec1 147 }
OHstin 0:da2b8c7a1ec1 148
OHstin 0:da2b8c7a1ec1 149 }
OHstin 0:da2b8c7a1ec1 150 break;
OHstin 0:da2b8c7a1ec1 151
OHstin 0:da2b8c7a1ec1 152 // 5 seconds
OHstin 0:da2b8c7a1ec1 153 case 1:
OHstin 0:da2b8c7a1ec1 154 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 155 clearScreen();
OHstin 0:da2b8c7a1ec1 156
OHstin 0:da2b8c7a1ec1 157 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 158
OHstin 0:da2b8c7a1ec1 159 switch(templot.start(1)) {
OHstin 0:da2b8c7a1ec1 160
OHstin 0:da2b8c7a1ec1 161 // Previous Screen
OHstin 0:da2b8c7a1ec1 162 case -1:
OHstin 0:da2b8c7a1ec1 163 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 164 clearScreen();
OHstin 0:da2b8c7a1ec1 165 break;
OHstin 0:da2b8c7a1ec1 166
OHstin 0:da2b8c7a1ec1 167 }
OHstin 0:da2b8c7a1ec1 168
OHstin 0:da2b8c7a1ec1 169 }
OHstin 0:da2b8c7a1ec1 170 break;
OHstin 0:da2b8c7a1ec1 171
OHstin 0:da2b8c7a1ec1 172 // 10 seconds
OHstin 0:da2b8c7a1ec1 173 case 2:
OHstin 0:da2b8c7a1ec1 174 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 175 clearScreen();
OHstin 0:da2b8c7a1ec1 176
OHstin 0:da2b8c7a1ec1 177 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 178
OHstin 0:da2b8c7a1ec1 179 switch(templot.start(2)) {
OHstin 0:da2b8c7a1ec1 180
OHstin 0:da2b8c7a1ec1 181 // Previous Screen
OHstin 0:da2b8c7a1ec1 182 case -1:
OHstin 0:da2b8c7a1ec1 183 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 184 clearScreen();
OHstin 0:da2b8c7a1ec1 185 break;
OHstin 0:da2b8c7a1ec1 186
OHstin 0:da2b8c7a1ec1 187 }
OHstin 0:da2b8c7a1ec1 188
OHstin 0:da2b8c7a1ec1 189 }
OHstin 0:da2b8c7a1ec1 190 break;
OHstin 0:da2b8c7a1ec1 191
OHstin 0:da2b8c7a1ec1 192 // 30 seconds
OHstin 0:da2b8c7a1ec1 193 case 3:
OHstin 0:da2b8c7a1ec1 194 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 195 clearScreen();
OHstin 0:da2b8c7a1ec1 196
OHstin 0:da2b8c7a1ec1 197 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 198
OHstin 0:da2b8c7a1ec1 199 switch(templot.start(3)) {
OHstin 0:da2b8c7a1ec1 200
OHstin 0:da2b8c7a1ec1 201 case -1:
OHstin 0:da2b8c7a1ec1 202 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 203 clearScreen();
OHstin 0:da2b8c7a1ec1 204 break;
OHstin 0:da2b8c7a1ec1 205
OHstin 0:da2b8c7a1ec1 206 }
OHstin 0:da2b8c7a1ec1 207
OHstin 0:da2b8c7a1ec1 208 }
OHstin 0:da2b8c7a1ec1 209 break;
OHstin 0:da2b8c7a1ec1 210
OHstin 0:da2b8c7a1ec1 211 //Previous Screen
OHstin 0:da2b8c7a1ec1 212 case -1:
OHstin 0:da2b8c7a1ec1 213 clearScreen();
OHstin 0:da2b8c7a1ec1 214 backSecondLayer = true;
OHstin 0:da2b8c7a1ec1 215 break;
OHstin 0:da2b8c7a1ec1 216 }
OHstin 0:da2b8c7a1ec1 217 }
OHstin 0:da2b8c7a1ec1 218 break;
OHstin 0:da2b8c7a1ec1 219
OHstin 0:da2b8c7a1ec1 220 //Previous Screen
OHstin 0:da2b8c7a1ec1 221 case -1:
OHstin 0:da2b8c7a1ec1 222 backSecondLayer = false;
OHstin 0:da2b8c7a1ec1 223 clearScreen();
OHstin 0:da2b8c7a1ec1 224 backFirstLayer = true;
OHstin 0:da2b8c7a1ec1 225 break;
OHstin 0:da2b8c7a1ec1 226
OHstin 0:da2b8c7a1ec1 227 }
OHstin 0:da2b8c7a1ec1 228 }
OHstin 0:da2b8c7a1ec1 229 break;
OHstin 0:da2b8c7a1ec1 230
OHstin 0:da2b8c7a1ec1 231 // Pressure
OHstin 0:da2b8c7a1ec1 232 case 1:
OHstin 0:da2b8c7a1ec1 233 backFirstLayer = false;
OHstin 0:da2b8c7a1ec1 234 clearScreen();
OHstin 0:da2b8c7a1ec1 235
OHstin 0:da2b8c7a1ec1 236 while(!backFirstLayer) {
OHstin 0:da2b8c7a1ec1 237
OHstin 0:da2b8c7a1ec1 238 switch(prs.start()) {
OHstin 0:da2b8c7a1ec1 239
OHstin 0:da2b8c7a1ec1 240 // View Prs
OHstin 0:da2b8c7a1ec1 241 case 0:
OHstin 0:da2b8c7a1ec1 242 backSecondLayer = false;
OHstin 0:da2b8c7a1ec1 243 clearScreen();
OHstin 0:da2b8c7a1ec1 244
OHstin 0:da2b8c7a1ec1 245 while(!backSecondLayer) {
OHstin 0:da2b8c7a1ec1 246
OHstin 0:da2b8c7a1ec1 247 switch(currPrs.start()) {
OHstin 0:da2b8c7a1ec1 248
OHstin 0:da2b8c7a1ec1 249 // Previous Screen
OHstin 0:da2b8c7a1ec1 250 case -1:
OHstin 0:da2b8c7a1ec1 251 backSecondLayer = true;
OHstin 0:da2b8c7a1ec1 252 clearScreen();
OHstin 0:da2b8c7a1ec1 253 break;
OHstin 0:da2b8c7a1ec1 254
OHstin 0:da2b8c7a1ec1 255 }
OHstin 0:da2b8c7a1ec1 256
OHstin 0:da2b8c7a1ec1 257 }
OHstin 0:da2b8c7a1ec1 258 break;
OHstin 0:da2b8c7a1ec1 259
OHstin 0:da2b8c7a1ec1 260 // Plot Prs
OHstin 0:da2b8c7a1ec1 261 case 1:
OHstin 0:da2b8c7a1ec1 262 backSecondLayer = false;
OHstin 0:da2b8c7a1ec1 263 clearScreen();
OHstin 0:da2b8c7a1ec1 264
OHstin 0:da2b8c7a1ec1 265 while(!backSecondLayer) {
OHstin 0:da2b8c7a1ec1 266
OHstin 0:da2b8c7a1ec1 267 switch(prsInt.start()) {
OHstin 0:da2b8c7a1ec1 268
OHstin 0:da2b8c7a1ec1 269 // 250 ms
OHstin 0:da2b8c7a1ec1 270 case 0:
OHstin 0:da2b8c7a1ec1 271 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 272 clearScreen();
OHstin 0:da2b8c7a1ec1 273
OHstin 0:da2b8c7a1ec1 274 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 275 switch(prsplot.start(0)) {
OHstin 0:da2b8c7a1ec1 276
OHstin 0:da2b8c7a1ec1 277 // Previous Screen
OHstin 0:da2b8c7a1ec1 278 case -1:
OHstin 0:da2b8c7a1ec1 279 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 280 clearScreen();
OHstin 0:da2b8c7a1ec1 281 break;
OHstin 0:da2b8c7a1ec1 282
OHstin 0:da2b8c7a1ec1 283 }
OHstin 0:da2b8c7a1ec1 284
OHstin 0:da2b8c7a1ec1 285
OHstin 0:da2b8c7a1ec1 286 }
OHstin 0:da2b8c7a1ec1 287 break;
OHstin 0:da2b8c7a1ec1 288
OHstin 0:da2b8c7a1ec1 289 // 500 ms
OHstin 0:da2b8c7a1ec1 290 case 1:
OHstin 0:da2b8c7a1ec1 291 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 292 clearScreen();
OHstin 0:da2b8c7a1ec1 293
OHstin 0:da2b8c7a1ec1 294 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 295 switch(prsplot.start(1)) {
OHstin 0:da2b8c7a1ec1 296
OHstin 0:da2b8c7a1ec1 297 // Previous Screen
OHstin 0:da2b8c7a1ec1 298 case -1:
OHstin 0:da2b8c7a1ec1 299 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 300 clearScreen();
OHstin 0:da2b8c7a1ec1 301 break;
OHstin 0:da2b8c7a1ec1 302 }
OHstin 0:da2b8c7a1ec1 303
OHstin 0:da2b8c7a1ec1 304
OHstin 0:da2b8c7a1ec1 305 }
OHstin 0:da2b8c7a1ec1 306 break;
OHstin 0:da2b8c7a1ec1 307
OHstin 0:da2b8c7a1ec1 308 // 1 second
OHstin 0:da2b8c7a1ec1 309 case 2:
OHstin 0:da2b8c7a1ec1 310 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 311 clearScreen();
OHstin 0:da2b8c7a1ec1 312
OHstin 0:da2b8c7a1ec1 313 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 314 switch(prsplot.start(2)) {
OHstin 0:da2b8c7a1ec1 315
OHstin 0:da2b8c7a1ec1 316 // Previous Screen
OHstin 0:da2b8c7a1ec1 317 case -1:
OHstin 0:da2b8c7a1ec1 318 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 319 clearScreen();
OHstin 0:da2b8c7a1ec1 320 break;
OHstin 0:da2b8c7a1ec1 321 }
OHstin 0:da2b8c7a1ec1 322
OHstin 0:da2b8c7a1ec1 323
OHstin 0:da2b8c7a1ec1 324 }
OHstin 0:da2b8c7a1ec1 325 break;
OHstin 0:da2b8c7a1ec1 326
OHstin 0:da2b8c7a1ec1 327 // 5 seconds
OHstin 0:da2b8c7a1ec1 328 case 3:
OHstin 0:da2b8c7a1ec1 329 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 330 clearScreen();
OHstin 0:da2b8c7a1ec1 331
OHstin 0:da2b8c7a1ec1 332 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 333 switch(prsplot.start(3)) {
OHstin 0:da2b8c7a1ec1 334
OHstin 0:da2b8c7a1ec1 335 // Previous Screen
OHstin 0:da2b8c7a1ec1 336 case -1:
OHstin 0:da2b8c7a1ec1 337 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 338 clearScreen();
OHstin 0:da2b8c7a1ec1 339 break;
OHstin 0:da2b8c7a1ec1 340 }
OHstin 0:da2b8c7a1ec1 341
OHstin 0:da2b8c7a1ec1 342
OHstin 0:da2b8c7a1ec1 343 }
OHstin 0:da2b8c7a1ec1 344 break;
OHstin 0:da2b8c7a1ec1 345
OHstin 0:da2b8c7a1ec1 346 // Previous Screen
OHstin 0:da2b8c7a1ec1 347 case -1:
OHstin 0:da2b8c7a1ec1 348 backSecondLayer = true;
OHstin 0:da2b8c7a1ec1 349 clearScreen();
OHstin 0:da2b8c7a1ec1 350 break;
OHstin 0:da2b8c7a1ec1 351 }
OHstin 0:da2b8c7a1ec1 352 }
OHstin 0:da2b8c7a1ec1 353 break;
OHstin 0:da2b8c7a1ec1 354
OHstin 0:da2b8c7a1ec1 355 // Previous Screen
OHstin 0:da2b8c7a1ec1 356 case -1:
OHstin 0:da2b8c7a1ec1 357 backFirstLayer = true;
OHstin 0:da2b8c7a1ec1 358 clearScreen();
OHstin 0:da2b8c7a1ec1 359 break;
OHstin 0:da2b8c7a1ec1 360 }
OHstin 0:da2b8c7a1ec1 361
OHstin 0:da2b8c7a1ec1 362 }
OHstin 0:da2b8c7a1ec1 363 break;
OHstin 0:da2b8c7a1ec1 364
OHstin 0:da2b8c7a1ec1 365 // Log
OHstin 0:da2b8c7a1ec1 366 case 2:
OHstin 0:da2b8c7a1ec1 367 backFirstLayer = false;
OHstin 0:da2b8c7a1ec1 368 clearScreen();
OHstin 0:da2b8c7a1ec1 369
OHstin 0:da2b8c7a1ec1 370 while(!backFirstLayer) {
OHstin 0:da2b8c7a1ec1 371
OHstin 0:da2b8c7a1ec1 372 switch(logg.start()) {
OHstin 0:da2b8c7a1ec1 373
OHstin 0:da2b8c7a1ec1 374 // New Log
OHstin 0:da2b8c7a1ec1 375 case 0:
OHstin 0:da2b8c7a1ec1 376 backSecondLayer = false;
OHstin 0:da2b8c7a1ec1 377 clearScreen();
OHstin 0:da2b8c7a1ec1 378
OHstin 0:da2b8c7a1ec1 379 while(!backSecondLayer) {
OHstin 0:da2b8c7a1ec1 380
OHstin 0:da2b8c7a1ec1 381 switch(optOne.start()) {
OHstin 0:da2b8c7a1ec1 382
OHstin 0:da2b8c7a1ec1 383 //Temperature
OHstin 0:da2b8c7a1ec1 384 case 0:
OHstin 0:da2b8c7a1ec1 385 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 386 clearScreen();
OHstin 0:da2b8c7a1ec1 387
OHstin 0:da2b8c7a1ec1 388 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 389
OHstin 0:da2b8c7a1ec1 390 switch(tempDur.start()) {
OHstin 0:da2b8c7a1ec1 391
OHstin 0:da2b8c7a1ec1 392 // 5 minutes
OHstin 0:da2b8c7a1ec1 393 case 0:
OHstin 0:da2b8c7a1ec1 394 backFourthLayer = false;
OHstin 0:da2b8c7a1ec1 395 clearScreen();
OHstin 0:da2b8c7a1ec1 396 status.detach(); // stop updating status bar
OHstin 0:da2b8c7a1ec1 397
OHstin 0:da2b8c7a1ec1 398 while (!backFourthLayer) {
OHstin 0:da2b8c7a1ec1 399
OHstin 0:da2b8c7a1ec1 400 switch(tempLog.start(0)) {
OHstin 0:da2b8c7a1ec1 401
OHstin 0:da2b8c7a1ec1 402 // Previous Screen
OHstin 0:da2b8c7a1ec1 403 case -1:
OHstin 0:da2b8c7a1ec1 404 backFourthLayer = true;
OHstin 0:da2b8c7a1ec1 405 clearScreen();
OHstin 0:da2b8c7a1ec1 406 appInitialise(); // Initialise the app
OHstin 0:da2b8c7a1ec1 407
OHstin 0:da2b8c7a1ec1 408 }
OHstin 0:da2b8c7a1ec1 409
OHstin 0:da2b8c7a1ec1 410 }
OHstin 0:da2b8c7a1ec1 411 break;
OHstin 0:da2b8c7a1ec1 412
OHstin 0:da2b8c7a1ec1 413 // 10 minutes
OHstin 0:da2b8c7a1ec1 414 case 1:
OHstin 0:da2b8c7a1ec1 415 backFourthLayer = false;
OHstin 0:da2b8c7a1ec1 416 clearScreen();
OHstin 0:da2b8c7a1ec1 417 status.detach(); // stop updating status bar
OHstin 0:da2b8c7a1ec1 418
OHstin 0:da2b8c7a1ec1 419 while (!backFourthLayer) {
OHstin 0:da2b8c7a1ec1 420
OHstin 0:da2b8c7a1ec1 421 switch(tempLog.start(1)) {
OHstin 0:da2b8c7a1ec1 422
OHstin 0:da2b8c7a1ec1 423 // Previous Screen
OHstin 0:da2b8c7a1ec1 424 case -1:
OHstin 0:da2b8c7a1ec1 425 backFourthLayer = true;
OHstin 0:da2b8c7a1ec1 426 clearScreen();
OHstin 0:da2b8c7a1ec1 427 appInitialise(); // initialise the app
OHstin 0:da2b8c7a1ec1 428
OHstin 0:da2b8c7a1ec1 429 }
OHstin 0:da2b8c7a1ec1 430
OHstin 0:da2b8c7a1ec1 431 }
OHstin 0:da2b8c7a1ec1 432 break;
OHstin 0:da2b8c7a1ec1 433
OHstin 0:da2b8c7a1ec1 434 // 30 minutes
OHstin 0:da2b8c7a1ec1 435 case 2:
OHstin 0:da2b8c7a1ec1 436 backFourthLayer = false;
OHstin 0:da2b8c7a1ec1 437 clearScreen();
OHstin 0:da2b8c7a1ec1 438 status.detach(); // stop updating status bar
OHstin 0:da2b8c7a1ec1 439
OHstin 0:da2b8c7a1ec1 440 while (!backFourthLayer) {
OHstin 0:da2b8c7a1ec1 441
OHstin 0:da2b8c7a1ec1 442 switch(tempLog.start(2)) {
OHstin 0:da2b8c7a1ec1 443
OHstin 0:da2b8c7a1ec1 444 // Previous Screen
OHstin 0:da2b8c7a1ec1 445 case -1:
OHstin 0:da2b8c7a1ec1 446 backFourthLayer = true;
OHstin 0:da2b8c7a1ec1 447 clearScreen();
OHstin 0:da2b8c7a1ec1 448 appInitialise(); // initialise the app
OHstin 0:da2b8c7a1ec1 449
OHstin 0:da2b8c7a1ec1 450 }
OHstin 0:da2b8c7a1ec1 451
OHstin 0:da2b8c7a1ec1 452 }
OHstin 0:da2b8c7a1ec1 453 break;
OHstin 0:da2b8c7a1ec1 454
OHstin 0:da2b8c7a1ec1 455 // 1 Hour
OHstin 0:da2b8c7a1ec1 456 case 3:
OHstin 0:da2b8c7a1ec1 457 backFourthLayer = false;
OHstin 0:da2b8c7a1ec1 458 clearScreen();
OHstin 0:da2b8c7a1ec1 459 status.detach(); // stop updating status bar
OHstin 0:da2b8c7a1ec1 460
OHstin 0:da2b8c7a1ec1 461 while (!backFourthLayer) {
OHstin 0:da2b8c7a1ec1 462
OHstin 0:da2b8c7a1ec1 463 switch(tempLog.start(3)) {
OHstin 0:da2b8c7a1ec1 464
OHstin 0:da2b8c7a1ec1 465 // Previous Screen
OHstin 0:da2b8c7a1ec1 466 case -1:
OHstin 0:da2b8c7a1ec1 467 backFourthLayer = true;
OHstin 0:da2b8c7a1ec1 468 clearScreen();
OHstin 0:da2b8c7a1ec1 469 appInitialise(); // initialise the app
OHstin 0:da2b8c7a1ec1 470
OHstin 0:da2b8c7a1ec1 471 }
OHstin 0:da2b8c7a1ec1 472
OHstin 0:da2b8c7a1ec1 473 }
OHstin 0:da2b8c7a1ec1 474 break;
OHstin 0:da2b8c7a1ec1 475
OHstin 0:da2b8c7a1ec1 476
OHstin 0:da2b8c7a1ec1 477 // Previous Screen
OHstin 0:da2b8c7a1ec1 478 case -1:
OHstin 0:da2b8c7a1ec1 479 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 480 clearScreen();
OHstin 0:da2b8c7a1ec1 481
OHstin 0:da2b8c7a1ec1 482 }
OHstin 0:da2b8c7a1ec1 483 }
OHstin 0:da2b8c7a1ec1 484 break;
OHstin 0:da2b8c7a1ec1 485
OHstin 0:da2b8c7a1ec1 486 //Pressure
OHstin 0:da2b8c7a1ec1 487 case 1:
OHstin 0:da2b8c7a1ec1 488 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 489 clearScreen();
OHstin 0:da2b8c7a1ec1 490
OHstin 0:da2b8c7a1ec1 491
OHstin 0:da2b8c7a1ec1 492 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 493
OHstin 0:da2b8c7a1ec1 494 switch(prsDur.start()) {
OHstin 0:da2b8c7a1ec1 495
OHstin 0:da2b8c7a1ec1 496 // 5 minutes
OHstin 0:da2b8c7a1ec1 497 case 0:
OHstin 0:da2b8c7a1ec1 498 backFourthLayer = false;
OHstin 0:da2b8c7a1ec1 499 clearScreen();
OHstin 0:da2b8c7a1ec1 500 status.detach(); // stop updating status bar
OHstin 0:da2b8c7a1ec1 501
OHstin 0:da2b8c7a1ec1 502 while(!backFourthLayer) {
OHstin 0:da2b8c7a1ec1 503
OHstin 0:da2b8c7a1ec1 504 switch(prsLog.start(0)) {
OHstin 0:da2b8c7a1ec1 505
OHstin 0:da2b8c7a1ec1 506 // Previous Screen
OHstin 0:da2b8c7a1ec1 507 case -1:
OHstin 0:da2b8c7a1ec1 508 backFourthLayer = true;
OHstin 0:da2b8c7a1ec1 509 clearScreen();
OHstin 0:da2b8c7a1ec1 510 appInitialise(); // initialise the app
OHstin 0:da2b8c7a1ec1 511 break;
OHstin 0:da2b8c7a1ec1 512
OHstin 0:da2b8c7a1ec1 513 }
OHstin 0:da2b8c7a1ec1 514
OHstin 0:da2b8c7a1ec1 515
OHstin 0:da2b8c7a1ec1 516 }
OHstin 0:da2b8c7a1ec1 517 break;
OHstin 0:da2b8c7a1ec1 518
OHstin 0:da2b8c7a1ec1 519 // 10 minutes
OHstin 0:da2b8c7a1ec1 520 case 1:
OHstin 0:da2b8c7a1ec1 521 backFourthLayer = false;
OHstin 0:da2b8c7a1ec1 522 clearScreen();
OHstin 0:da2b8c7a1ec1 523 status.detach(); // stop updating status bar
OHstin 0:da2b8c7a1ec1 524
OHstin 0:da2b8c7a1ec1 525 while(!backFourthLayer) {
OHstin 0:da2b8c7a1ec1 526
OHstin 0:da2b8c7a1ec1 527 switch(prsLog.start(1)) {
OHstin 0:da2b8c7a1ec1 528
OHstin 0:da2b8c7a1ec1 529 // Previous Screen
OHstin 0:da2b8c7a1ec1 530 case -1:
OHstin 0:da2b8c7a1ec1 531 backFourthLayer = true;
OHstin 0:da2b8c7a1ec1 532 clearScreen();
OHstin 0:da2b8c7a1ec1 533 appInitialise(); // initialise the app
OHstin 0:da2b8c7a1ec1 534 break;
OHstin 0:da2b8c7a1ec1 535
OHstin 0:da2b8c7a1ec1 536 }
OHstin 0:da2b8c7a1ec1 537 }
OHstin 0:da2b8c7a1ec1 538 break;
OHstin 0:da2b8c7a1ec1 539
OHstin 0:da2b8c7a1ec1 540 // 30 minutes
OHstin 0:da2b8c7a1ec1 541 case 2:
OHstin 0:da2b8c7a1ec1 542 backFourthLayer = false;
OHstin 0:da2b8c7a1ec1 543 clearScreen();
OHstin 0:da2b8c7a1ec1 544 status.detach(); // stop updating status bar
OHstin 0:da2b8c7a1ec1 545
OHstin 0:da2b8c7a1ec1 546 while(!backFourthLayer) {
OHstin 0:da2b8c7a1ec1 547
OHstin 0:da2b8c7a1ec1 548 switch(prsLog.start(2)) {
OHstin 0:da2b8c7a1ec1 549
OHstin 0:da2b8c7a1ec1 550 // Previous Screen
OHstin 0:da2b8c7a1ec1 551 case -1:
OHstin 0:da2b8c7a1ec1 552 backFourthLayer = true;
OHstin 0:da2b8c7a1ec1 553 clearScreen();
OHstin 0:da2b8c7a1ec1 554 appInitialise(); // initialise the app
OHstin 0:da2b8c7a1ec1 555 break;
OHstin 0:da2b8c7a1ec1 556
OHstin 0:da2b8c7a1ec1 557 }
OHstin 0:da2b8c7a1ec1 558 }
OHstin 0:da2b8c7a1ec1 559 break;
OHstin 0:da2b8c7a1ec1 560
OHstin 0:da2b8c7a1ec1 561 // 1 Hour
OHstin 0:da2b8c7a1ec1 562 case 3:
OHstin 0:da2b8c7a1ec1 563 backFourthLayer = false;
OHstin 0:da2b8c7a1ec1 564 clearScreen();
OHstin 0:da2b8c7a1ec1 565 status.detach(); // stop updating status bar
OHstin 0:da2b8c7a1ec1 566
OHstin 0:da2b8c7a1ec1 567 while(!backFourthLayer) {
OHstin 0:da2b8c7a1ec1 568
OHstin 0:da2b8c7a1ec1 569 switch(prsLog.start(3)) {
OHstin 0:da2b8c7a1ec1 570
OHstin 0:da2b8c7a1ec1 571 // Previous Screen
OHstin 0:da2b8c7a1ec1 572 case -1:
OHstin 0:da2b8c7a1ec1 573 backFourthLayer = true;
OHstin 0:da2b8c7a1ec1 574 clearScreen();
OHstin 0:da2b8c7a1ec1 575 appInitialise(); // initialise the app
OHstin 0:da2b8c7a1ec1 576 break;
OHstin 0:da2b8c7a1ec1 577
OHstin 0:da2b8c7a1ec1 578 }
OHstin 0:da2b8c7a1ec1 579 }
OHstin 0:da2b8c7a1ec1 580 break;
OHstin 0:da2b8c7a1ec1 581
OHstin 0:da2b8c7a1ec1 582 // Previous Screen
OHstin 0:da2b8c7a1ec1 583 case -1:
OHstin 0:da2b8c7a1ec1 584 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 585 clearScreen();
OHstin 0:da2b8c7a1ec1 586 break;
OHstin 0:da2b8c7a1ec1 587
OHstin 0:da2b8c7a1ec1 588 }
OHstin 0:da2b8c7a1ec1 589 }
OHstin 0:da2b8c7a1ec1 590 break;
OHstin 0:da2b8c7a1ec1 591
OHstin 0:da2b8c7a1ec1 592 //Previous Screen
OHstin 0:da2b8c7a1ec1 593 case -1:
OHstin 0:da2b8c7a1ec1 594 backSecondLayer = true;
OHstin 0:da2b8c7a1ec1 595 clearScreen();
OHstin 0:da2b8c7a1ec1 596 break;
OHstin 0:da2b8c7a1ec1 597
OHstin 0:da2b8c7a1ec1 598 }
OHstin 0:da2b8c7a1ec1 599
OHstin 0:da2b8c7a1ec1 600 }
OHstin 0:da2b8c7a1ec1 601 break;
OHstin 0:da2b8c7a1ec1 602
OHstin 0:da2b8c7a1ec1 603 // View Log
OHstin 0:da2b8c7a1ec1 604 case 1:
OHstin 0:da2b8c7a1ec1 605 backSecondLayer = false;
OHstin 0:da2b8c7a1ec1 606 clearScreen();
OHstin 0:da2b8c7a1ec1 607
OHstin 0:da2b8c7a1ec1 608 while(!backSecondLayer) {
OHstin 0:da2b8c7a1ec1 609
OHstin 0:da2b8c7a1ec1 610 switch(optTwo.start()) {
OHstin 0:da2b8c7a1ec1 611
OHstin 0:da2b8c7a1ec1 612 //Temperature
OHstin 0:da2b8c7a1ec1 613 case 0:
OHstin 0:da2b8c7a1ec1 614 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 615 clearScreen();
OHstin 0:da2b8c7a1ec1 616
OHstin 0:da2b8c7a1ec1 617 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 618
OHstin 0:da2b8c7a1ec1 619 TempViewLogScreen tempView;
OHstin 0:da2b8c7a1ec1 620
OHstin 0:da2b8c7a1ec1 621 switch(tempView.start()) {
OHstin 0:da2b8c7a1ec1 622
OHstin 0:da2b8c7a1ec1 623 // Previous Screen
OHstin 0:da2b8c7a1ec1 624 case -1:
OHstin 0:da2b8c7a1ec1 625 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 626 clearScreen();
OHstin 0:da2b8c7a1ec1 627 break;
OHstin 0:da2b8c7a1ec1 628 }
OHstin 0:da2b8c7a1ec1 629 }
OHstin 0:da2b8c7a1ec1 630 break;
OHstin 0:da2b8c7a1ec1 631
OHstin 0:da2b8c7a1ec1 632 // Pressure
OHstin 0:da2b8c7a1ec1 633 case 1:
OHstin 0:da2b8c7a1ec1 634 backThirdLayer = false;
OHstin 0:da2b8c7a1ec1 635 clearScreen();
OHstin 0:da2b8c7a1ec1 636
OHstin 0:da2b8c7a1ec1 637 while(!backThirdLayer) {
OHstin 0:da2b8c7a1ec1 638
OHstin 0:da2b8c7a1ec1 639 PrsViewLogScreen prsView;
OHstin 0:da2b8c7a1ec1 640
OHstin 0:da2b8c7a1ec1 641 switch(prsView.start()) {
OHstin 0:da2b8c7a1ec1 642
OHstin 0:da2b8c7a1ec1 643 // Previous Screen
OHstin 0:da2b8c7a1ec1 644 case -1:
OHstin 0:da2b8c7a1ec1 645 backThirdLayer = true;
OHstin 0:da2b8c7a1ec1 646 clearScreen();
OHstin 0:da2b8c7a1ec1 647 break;
OHstin 0:da2b8c7a1ec1 648 }
OHstin 0:da2b8c7a1ec1 649 }
OHstin 0:da2b8c7a1ec1 650
OHstin 0:da2b8c7a1ec1 651 break;
OHstin 0:da2b8c7a1ec1 652
OHstin 0:da2b8c7a1ec1 653 // Previous Screen
OHstin 0:da2b8c7a1ec1 654 case -1:
OHstin 0:da2b8c7a1ec1 655 backSecondLayer = true;
OHstin 0:da2b8c7a1ec1 656 clearScreen();
OHstin 0:da2b8c7a1ec1 657 break;
OHstin 0:da2b8c7a1ec1 658
OHstin 0:da2b8c7a1ec1 659 }
OHstin 0:da2b8c7a1ec1 660
OHstin 0:da2b8c7a1ec1 661
OHstin 0:da2b8c7a1ec1 662 }
OHstin 0:da2b8c7a1ec1 663 break;
OHstin 0:da2b8c7a1ec1 664
OHstin 0:da2b8c7a1ec1 665 // Previous Screen
OHstin 0:da2b8c7a1ec1 666 case -1:
OHstin 0:da2b8c7a1ec1 667 backFirstLayer = true;
OHstin 0:da2b8c7a1ec1 668 clearScreen();
OHstin 0:da2b8c7a1ec1 669 break;
OHstin 0:da2b8c7a1ec1 670 }
OHstin 0:da2b8c7a1ec1 671
OHstin 0:da2b8c7a1ec1 672
OHstin 0:da2b8c7a1ec1 673 }
OHstin 0:da2b8c7a1ec1 674 break;
OHstin 0:da2b8c7a1ec1 675
OHstin 0:da2b8c7a1ec1 676 // Settings
OHstin 0:da2b8c7a1ec1 677 case 3:
OHstin 0:da2b8c7a1ec1 678 backFirstLayer = false;
OHstin 0:da2b8c7a1ec1 679 clearScreen();
OHstin 0:da2b8c7a1ec1 680
OHstin 0:da2b8c7a1ec1 681 while(!backFirstLayer) {
OHstin 0:da2b8c7a1ec1 682
OHstin 0:da2b8c7a1ec1 683 switch(settings.start()) {
OHstin 0:da2b8c7a1ec1 684
OHstin 0:da2b8c7a1ec1 685 // Brightness
OHstin 0:da2b8c7a1ec1 686 case 0:
OHstin 0:da2b8c7a1ec1 687 backSecondLayer = false;
OHstin 0:da2b8c7a1ec1 688 clearScreen();
OHstin 0:da2b8c7a1ec1 689
OHstin 0:da2b8c7a1ec1 690 while(!backSecondLayer) {
OHstin 0:da2b8c7a1ec1 691
OHstin 0:da2b8c7a1ec1 692 switch(bright.start()) {
OHstin 0:da2b8c7a1ec1 693
OHstin 0:da2b8c7a1ec1 694 // Previous Screen
OHstin 0:da2b8c7a1ec1 695 case -1:
OHstin 0:da2b8c7a1ec1 696 backSecondLayer = true;
OHstin 0:da2b8c7a1ec1 697 clearScreen();
OHstin 0:da2b8c7a1ec1 698
OHstin 0:da2b8c7a1ec1 699 }
OHstin 0:da2b8c7a1ec1 700
OHstin 0:da2b8c7a1ec1 701 }
OHstin 0:da2b8c7a1ec1 702
OHstin 0:da2b8c7a1ec1 703 break;
OHstin 0:da2b8c7a1ec1 704
OHstin 0:da2b8c7a1ec1 705 // Sound FX
OHstin 0:da2b8c7a1ec1 706 case 1:
OHstin 0:da2b8c7a1ec1 707 backSecondLayer = false;
OHstin 0:da2b8c7a1ec1 708 clearScreen();
OHstin 0:da2b8c7a1ec1 709
OHstin 0:da2b8c7a1ec1 710 while(!backSecondLayer) {
OHstin 0:da2b8c7a1ec1 711
OHstin 0:da2b8c7a1ec1 712 switch(sound.start()) {
OHstin 0:da2b8c7a1ec1 713
OHstin 0:da2b8c7a1ec1 714 // Previous Screen
OHstin 0:da2b8c7a1ec1 715 case -1:
OHstin 0:da2b8c7a1ec1 716 backSecondLayer = true;
OHstin 0:da2b8c7a1ec1 717 clearScreen();
OHstin 0:da2b8c7a1ec1 718
OHstin 0:da2b8c7a1ec1 719 }
OHstin 0:da2b8c7a1ec1 720
OHstin 0:da2b8c7a1ec1 721 }
OHstin 0:da2b8c7a1ec1 722 break;
OHstin 0:da2b8c7a1ec1 723
OHstin 0:da2b8c7a1ec1 724 // Battery Status
OHstin 0:da2b8c7a1ec1 725 case 2:
OHstin 0:da2b8c7a1ec1 726 backSecondLayer = false;
OHstin 0:da2b8c7a1ec1 727 clearScreen();
OHstin 0:da2b8c7a1ec1 728
OHstin 0:da2b8c7a1ec1 729 while(!backSecondLayer) {
OHstin 0:da2b8c7a1ec1 730
OHstin 0:da2b8c7a1ec1 731 switch(currBatt.start()) {
OHstin 0:da2b8c7a1ec1 732
OHstin 0:da2b8c7a1ec1 733 // Previous Screen
OHstin 0:da2b8c7a1ec1 734 case -1:
OHstin 0:da2b8c7a1ec1 735 backSecondLayer = true;
OHstin 0:da2b8c7a1ec1 736 clearScreen();
OHstin 0:da2b8c7a1ec1 737
OHstin 0:da2b8c7a1ec1 738 }
OHstin 0:da2b8c7a1ec1 739
OHstin 0:da2b8c7a1ec1 740 }
OHstin 0:da2b8c7a1ec1 741 break;
OHstin 0:da2b8c7a1ec1 742
OHstin 0:da2b8c7a1ec1 743 // Previous Screen
OHstin 0:da2b8c7a1ec1 744 case -1:
OHstin 0:da2b8c7a1ec1 745 backFirstLayer = true;
OHstin 0:da2b8c7a1ec1 746 clearScreen();
OHstin 0:da2b8c7a1ec1 747 break;
OHstin 0:da2b8c7a1ec1 748
OHstin 0:da2b8c7a1ec1 749
OHstin 0:da2b8c7a1ec1 750 }
OHstin 0:da2b8c7a1ec1 751 }
OHstin 0:da2b8c7a1ec1 752
OHstin 0:da2b8c7a1ec1 753 default:
OHstin 0:da2b8c7a1ec1 754 // show nothing
OHstin 0:da2b8c7a1ec1 755 break;
OHstin 0:da2b8c7a1ec1 756
OHstin 0:da2b8c7a1ec1 757 }
OHstin 0:da2b8c7a1ec1 758
OHstin 0:da2b8c7a1ec1 759
OHstin 0:da2b8c7a1ec1 760 }
OHstin 0:da2b8c7a1ec1 761 }
OHstin 0:da2b8c7a1ec1 762
OHstin 0:da2b8c7a1ec1 763 void WeatherApp::updateStatusBar()
OHstin 0:da2b8c7a1ec1 764 {
OHstin 0:da2b8c7a1ec1 765
OHstin 0:da2b8c7a1ec1 766 ////GET THE CURRENT TIME///////////
OHstin 0:da2b8c7a1ec1 767 time_t seconds = time(NULL);
OHstin 0:da2b8c7a1ec1 768
OHstin 0:da2b8c7a1ec1 769 char buffer[32];
OHstin 0:da2b8c7a1ec1 770 strftime(buffer, 32, "%R", localtime(&seconds)); // format the time in HH:MM 24 Hr clock
OHstin 0:da2b8c7a1ec1 771 ////////////////////////////////////////////
OHstin 0:da2b8c7a1ec1 772
OHstin 0:da2b8c7a1ec1 773 lcd.printString( buffer, 0,0);// display the time
OHstin 0:da2b8c7a1ec1 774
OHstin 0:da2b8c7a1ec1 775
OHstin 0:da2b8c7a1ec1 776
OHstin 0:da2b8c7a1ec1 777 float batteryVoltage = getVoltage();
OHstin 0:da2b8c7a1ec1 778
OHstin 0:da2b8c7a1ec1 779
OHstin 0:da2b8c7a1ec1 780
OHstin 0:da2b8c7a1ec1 781
OHstin 0:da2b8c7a1ec1 782 // draw the empty battery
OHstin 0:da2b8c7a1ec1 783 lcd.setPixel(73,3);
OHstin 0:da2b8c7a1ec1 784 lcd.setPixel(72,3);
OHstin 0:da2b8c7a1ec1 785 lcd.setPixel(73,4);
OHstin 0:da2b8c7a1ec1 786 lcd.setPixel(72,4);
OHstin 0:da2b8c7a1ec1 787 lcd.drawRect(74,1,8,5,0);
OHstin 0:da2b8c7a1ec1 788 lcd.clearPixel(76,3);
OHstin 0:da2b8c7a1ec1 789 lcd.clearPixel(76,4);
OHstin 0:da2b8c7a1ec1 790 lcd.clearPixel(78,3);
OHstin 0:da2b8c7a1ec1 791 lcd.clearPixel(78,4);
OHstin 0:da2b8c7a1ec1 792 lcd.clearPixel(80,3);
OHstin 0:da2b8c7a1ec1 793 lcd.clearPixel(80,4);
OHstin 0:da2b8c7a1ec1 794
OHstin 0:da2b8c7a1ec1 795
OHstin 0:da2b8c7a1ec1 796
OHstin 0:da2b8c7a1ec1 797 if (batteryVoltage > 7.92) { // battery voltage is greater than 2.6V
OHstin 0:da2b8c7a1ec1 798 // battery has three bars
OHstin 0:da2b8c7a1ec1 799 lcd.drawLine(76,3,76,4,1);
OHstin 0:da2b8c7a1ec1 800 lcd.drawLine(78,3,78,4,1);
OHstin 0:da2b8c7a1ec1 801 lcd.drawLine(80,3,80,4,1);
OHstin 0:da2b8c7a1ec1 802
OHstin 0:da2b8c7a1ec1 803 } else if ( (batteryVoltage < 7.92 )&& (batteryVoltage > 6.5)) { // battery voltage is between 2.64V and 1.65V
OHstin 0:da2b8c7a1ec1 804 // battery has two bars
OHstin 0:da2b8c7a1ec1 805 lcd.drawLine(78,3,78,4,1);
OHstin 0:da2b8c7a1ec1 806 lcd.drawLine(80,3,80,4,1);
OHstin 0:da2b8c7a1ec1 807
OHstin 0:da2b8c7a1ec1 808 } else if ((batteryVoltage < 6.5) && (batteryVoltage > 6.0)) { // battery voltage is between 1.65V and 0.66V
OHstin 0:da2b8c7a1ec1 809 // battery has one bar
OHstin 0:da2b8c7a1ec1 810 lcd.drawLine(80,3,80,4,1);
OHstin 0:da2b8c7a1ec1 811 } else { // battery voltage is less than 0.66V
OHstin 0:da2b8c7a1ec1 812 // empty battery
OHstin 0:da2b8c7a1ec1 813 }
OHstin 0:da2b8c7a1ec1 814
OHstin 0:da2b8c7a1ec1 815 if (batteryVoltage < 6.5) {
OHstin 0:da2b8c7a1ec1 816
OHstin 0:da2b8c7a1ec1 817 if(!batStatLedState) {
OHstin 0:da2b8c7a1ec1 818
OHstin 0:da2b8c7a1ec1 819 turnOnBatStatLed();
OHstin 0:da2b8c7a1ec1 820 }
OHstin 0:da2b8c7a1ec1 821
OHstin 0:da2b8c7a1ec1 822
OHstin 0:da2b8c7a1ec1 823 } else {
OHstin 0:da2b8c7a1ec1 824
OHstin 0:da2b8c7a1ec1 825 turnOffBatStatLed();
OHstin 0:da2b8c7a1ec1 826
OHstin 0:da2b8c7a1ec1 827 }
OHstin 0:da2b8c7a1ec1 828
OHstin 0:da2b8c7a1ec1 829 lcd.refresh();
OHstin 0:da2b8c7a1ec1 830
OHstin 0:da2b8c7a1ec1 831 }
OHstin 0:da2b8c7a1ec1 832
OHstin 0:da2b8c7a1ec1 833 void WeatherApp::clearScreen()
OHstin 0:da2b8c7a1ec1 834 {
OHstin 0:da2b8c7a1ec1 835 // clear the screen
OHstin 0:da2b8c7a1ec1 836 lcd.clear();
OHstin 0:da2b8c7a1ec1 837
OHstin 0:da2b8c7a1ec1 838 // update the status bar
OHstin 0:da2b8c7a1ec1 839 updateStatusBar();
OHstin 0:da2b8c7a1ec1 840
OHstin 0:da2b8c7a1ec1 841 }
OHstin 0:da2b8c7a1ec1 842
OHstin 0:da2b8c7a1ec1 843 void WeatherApp::appInitialise()
OHstin 0:da2b8c7a1ec1 844 {
OHstin 0:da2b8c7a1ec1 845 //*** THIS WAS REMOVED **// it causes program to crash
OHstin 0:da2b8c7a1ec1 846 //PHY_PowerDown(); // power down the ethernet port to save power
OHstin 0:da2b8c7a1ec1 847
OHstin 0:da2b8c7a1ec1 848
OHstin 0:da2b8c7a1ec1 849 bmp180.Initialize(); // initialise the temperature/pressure sensor
OHstin 0:da2b8c7a1ec1 850 debounceInit(); // initialise the button debouncer
OHstin 0:da2b8c7a1ec1 851 lcd.init(); // intialise the lcd
OHstin 0:da2b8c7a1ec1 852 //set_time(1431199080); // used to set unix time
OHstin 0:da2b8c7a1ec1 853 updateStatusBar(); // update status bar
OHstin 0:da2b8c7a1ec1 854 status.attach(this,&WeatherApp::updateStatusBar, 10.0); // update the status bar every 10 seconds
OHstin 0:da2b8c7a1ec1 855 initSound(); // initialise sound
OHstin 0:da2b8c7a1ec1 856 initBrightness(); // initialsie brightness
OHstin 0:da2b8c7a1ec1 857
OHstin 0:da2b8c7a1ec1 858
OHstin 0:da2b8c7a1ec1 859 }
OHstin 0:da2b8c7a1ec1 860
OHstin 0:da2b8c7a1ec1 861 void WeatherApp::initSound() // initialise sound
OHstin 0:da2b8c7a1ec1 862 {
OHstin 0:da2b8c7a1ec1 863 // sound key and value pair
OHstin 0:da2b8c7a1ec1 864 char *soundKey = "sound ";
OHstin 0:da2b8c7a1ec1 865 char soundValue[BUFSIZ];
OHstin 0:da2b8c7a1ec1 866
OHstin 0:da2b8c7a1ec1 867 // prepare the cfg file to be read
OHstin 0:da2b8c7a1ec1 868 cfg.read("/local/sound.cfg");
OHstin 0:da2b8c7a1ec1 869
OHstin 0:da2b8c7a1ec1 870 // if key and value exist, retrieve and store
OHstin 0:da2b8c7a1ec1 871 if (cfg.getValue(soundKey, &soundValue[0], sizeof(soundValue))) {
OHstin 0:da2b8c7a1ec1 872
OHstin 0:da2b8c7a1ec1 873 int sound = atoi(soundValue); // convert string to integer
OHstin 0:da2b8c7a1ec1 874
OHstin 0:da2b8c7a1ec1 875 // set the sound appropriateley
OHstin 0:da2b8c7a1ec1 876 if (sound == 1) {
OHstin 0:da2b8c7a1ec1 877 soundFx = true; // sound on
OHstin 0:da2b8c7a1ec1 878 } else {
OHstin 0:da2b8c7a1ec1 879 soundFx = false; // sound off
OHstin 0:da2b8c7a1ec1 880 }
OHstin 0:da2b8c7a1ec1 881 }
OHstin 0:da2b8c7a1ec1 882
OHstin 0:da2b8c7a1ec1 883 }
OHstin 0:da2b8c7a1ec1 884
OHstin 0:da2b8c7a1ec1 885 void WeatherApp::initBrightness() // initialises brightness
OHstin 0:da2b8c7a1ec1 886 {
OHstin 0:da2b8c7a1ec1 887 // brightness key and value pair
OHstin 0:da2b8c7a1ec1 888 char *brightnessKey = "brightness ";
OHstin 0:da2b8c7a1ec1 889 char brightnessValue[BUFSIZ];
OHstin 0:da2b8c7a1ec1 890
OHstin 0:da2b8c7a1ec1 891 // prepare the cfg file to be read
OHstin 0:da2b8c7a1ec1 892 cfg.read("/local/bright.cfg");
OHstin 0:da2b8c7a1ec1 893
OHstin 0:da2b8c7a1ec1 894 // if key aand value exist, retrieve and store
OHstin 0:da2b8c7a1ec1 895 if (cfg.getValue(brightnessKey, &brightnessValue[0], sizeof(brightnessValue))) {
OHstin 0:da2b8c7a1ec1 896
OHstin 0:da2b8c7a1ec1 897 int brightness = atoi(brightnessValue); // convert string to integer
OHstin 0:da2b8c7a1ec1 898 currentBrightness = brightness;
OHstin 0:da2b8c7a1ec1 899
OHstin 0:da2b8c7a1ec1 900 // set the lcd brightness appropriately
OHstin 0:da2b8c7a1ec1 901 if (brightness == 100) {
OHstin 0:da2b8c7a1ec1 902 lcd.setBrightness(1.0); // 100 %
OHstin 0:da2b8c7a1ec1 903 } else if (brightness == 50) {
OHstin 0:da2b8c7a1ec1 904 lcd.setBrightness(0.5); // 50 %
OHstin 0:da2b8c7a1ec1 905 } else if (brightness == 25) {
OHstin 0:da2b8c7a1ec1 906 lcd.setBrightness(0.25); // 25 %
OHstin 0:da2b8c7a1ec1 907 } else {
OHstin 0:da2b8c7a1ec1 908 lcd.setBrightness(0); // Off
OHstin 0:da2b8c7a1ec1 909 }
OHstin 0:da2b8c7a1ec1 910 }
OHstin 0:da2b8c7a1ec1 911
OHstin 0:da2b8c7a1ec1 912 }