3rd Repo, trying to figure this out.

Dependencies:   LPS25H hts221

Fork of SOFT253_Template_Weather_OS_54 by Stage-1 Students SoCEM

Committer:
FairyMental
Date:
Fri Apr 07 10:45:32 2017 +0000
Revision:
57:dfcdda1e42b6
Parent:
56:4dd780d8fb47
Child:
58:7fc6e3e4d746
Commented the main.cpp file.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FairyMental 36:19d3f752f9c3 1
Jonathan Austin 0:2757d7abb7d9 2 #include "mbed.h"
martinsimpson 32:260a288be58f 3 #include "rtos.h"
FairyMental 43:3983059e0d91 4 #include <string.h>
FairyMental 34:09ed07f2acba 5 #include <stdio.h>
FairyMental 34:09ed07f2acba 6 #include <ctype.h>
FairyMental 36:19d3f752f9c3 7 #include "hts221.h"
martinsimpson 32:260a288be58f 8 #include "LPS25H.h"
FairyMental 40:ba083993b481 9 #include "LinkedList.h"
FairyMental 41:d222c043c96d 10 #include <iostream>
martinsimpson 32:260a288be58f 11
FairyMental 36:19d3f752f9c3 12 #define SIGNAL_doMeasure 1
FairyMental 36:19d3f752f9c3 13 #define SWITCH1_RELEASE 90
FairyMental 34:09ed07f2acba 14
FairyMental 57:dfcdda1e42b6 15 //
FairyMental 57:dfcdda1e42b6 16 // MBED DECLARATIONS
FairyMental 57:dfcdda1e42b6 17 //
martinsimpson 32:260a288be58f 18 DigitalOut myled(LED1);
Netaphous 50:c07e968b9582 19 DigitalIn onBoardSwitch(USER_BUTTON);
martinsimpson 32:260a288be58f 20 I2C i2c2(I2C_SDA, I2C_SCL);
Netaphous 50:c07e968b9582 21
FairyMental 57:dfcdda1e42b6 22 //
FairyMental 57:dfcdda1e42b6 23 // SENSOR DECLARATIONS
Netaphous 50:c07e968b9582 24 // MAKE SURE ONE OF THESE IS COMMENTED OUT
Netaphous 50:c07e968b9582 25 // Real sensor
Netaphous 56:4dd780d8fb47 26 LPS25H barometer(i2c2, LPS25H_V_CHIP_ADDR);
Netaphous 56:4dd780d8fb47 27 HTS221 measurer(I2C_SDA, I2C_SCL);
Netaphous 50:c07e968b9582 28 // Fake sensor
Netaphous 56:4dd780d8fb47 29 //FakeBarometer barometer(1029.0, 1031.0);
Netaphous 56:4dd780d8fb47 30 //FakeMeasurer measurer(20.0, 25.0, 30.0, 50.0);
Netaphous 50:c07e968b9582 31
FairyMental 57:dfcdda1e42b6 32 //
FairyMental 57:dfcdda1e42b6 33 // THREADS DECLARATION
FairyMental 57:dfcdda1e42b6 34 //
FairyMental 37:00775e368a71 35 Thread *produceThread;
FairyMental 37:00775e368a71 36 Thread *measureThread;
FairyMental 39:618ad21e2b34 37 Thread *consumeThread;
FairyMental 38:e626a358e5e3 38
FairyMental 57:dfcdda1e42b6 39 //
FairyMental 57:dfcdda1e42b6 40 // GLOBAL VARIABLES
FairyMental 57:dfcdda1e42b6 41 //
FairyMental 34:09ed07f2acba 42 Mail<Measure, 16> mail_box;
FairyMental 39:618ad21e2b34 43 LinkedList *listBuffer;
FairyMental 46:0de1f3c7d118 44 LocalDate *localDate;
FairyMental 49:83bea7fb2728 45 bool logging = true;
FairyMental 49:83bea7fb2728 46
FairyMental 57:dfcdda1e42b6 47 //
FairyMental 57:dfcdda1e42b6 48 // Called by a TICKER
FairyMental 57:dfcdda1e42b6 49 // Adds 1 second every second to the clock
FairyMental 46:0de1f3c7d118 50 void RealTimeDate()
FairyMental 46:0de1f3c7d118 51 {
FairyMental 46:0de1f3c7d118 52 localDate->TickSecond();
FairyMental 46:0de1f3c7d118 53 }
FairyMental 57:dfcdda1e42b6 54 //
FairyMental 57:dfcdda1e42b6 55 // SIGNALED BY Ticker at a frequency of <T> Hz
FairyMental 57:dfcdda1e42b6 56 // Reads values from sensor board, sends over through mail queue
FairyMental 37:00775e368a71 57 void MeasureThread() {
FairyMental 35:484e384f9bf1 58
FairyMental 36:19d3f752f9c3 59 while(true)
FairyMental 36:19d3f752f9c3 60 {
FairyMental 57:dfcdda1e42b6 61 //Await signal from ticker
FairyMental 36:19d3f752f9c3 62 Thread::signal_wait(SIGNAL_doMeasure);
FairyMental 57:dfcdda1e42b6 63
FairyMental 36:19d3f752f9c3 64 float temperature = 0 , humidity = 0,pressure = 0;
FairyMental 57:dfcdda1e42b6 65
FairyMental 36:19d3f752f9c3 66 Measure *measure = mail_box.alloc();
FairyMental 36:19d3f752f9c3 67 if (measure == NULL)
FairyMental 36:19d3f752f9c3 68 {
FairyMental 36:19d3f752f9c3 69 printf("Out of memory\n\r");
FairyMental 36:19d3f752f9c3 70 return;
FairyMental 36:19d3f752f9c3 71 }
FairyMental 34:09ed07f2acba 72
FairyMental 57:dfcdda1e42b6 73 //Read and fill in data
FairyMental 36:19d3f752f9c3 74 measurer.ReadTempHumi(&temperature,&humidity);
FairyMental 36:19d3f752f9c3 75 barometer.get();
FairyMental 36:19d3f752f9c3 76 pressure = barometer.pressure();
FairyMental 47:468a89d62c23 77
FairyMental 36:19d3f752f9c3 78 measure->temperature = temperature;
FairyMental 36:19d3f752f9c3 79 measure->humidity = humidity;
FairyMental 36:19d3f752f9c3 80 measure->pressure = pressure;
FairyMental 47:468a89d62c23 81 measure->date = new LocalDate(localDate);
FairyMental 36:19d3f752f9c3 82
FairyMental 57:dfcdda1e42b6 83 osStatus stat = mail_box.put(measure);
martinsimpson 32:260a288be58f 84
FairyMental 36:19d3f752f9c3 85 //Check if succesful
FairyMental 36:19d3f752f9c3 86 if (stat == osErrorResource) {
FairyMental 36:19d3f752f9c3 87 printf("queue->put() Error code: %4Xh, Resource not available\r\n", stat);
FairyMental 36:19d3f752f9c3 88 mail_box.free(measure);
FairyMental 36:19d3f752f9c3 89 return;
FairyMental 36:19d3f752f9c3 90 }
FairyMental 34:09ed07f2acba 91 }
FairyMental 34:09ed07f2acba 92 }
FairyMental 34:09ed07f2acba 93
FairyMental 57:dfcdda1e42b6 94 //
FairyMental 57:dfcdda1e42b6 95 // Receives data through mail queue, then adds it to the global declared list
FairyMental 57:dfcdda1e42b6 96 // A.K.A. Producer Thread
FairyMental 37:00775e368a71 97 void ProducerThread()
FairyMental 34:09ed07f2acba 98 {
FairyMental 57:dfcdda1e42b6 99 while (true)
FairyMental 57:dfcdda1e42b6 100 {
FairyMental 34:09ed07f2acba 101 //Block on the queue
FairyMental 34:09ed07f2acba 102 osEvent evt = mail_box.get();
FairyMental 34:09ed07f2acba 103
FairyMental 34:09ed07f2acba 104 //Check status
FairyMental 34:09ed07f2acba 105 if (evt.status == osEventMail) {
FairyMental 39:618ad21e2b34 106
FairyMental 57:dfcdda1e42b6 107 Measure *measure = (Measure*)evt.value.p;
FairyMental 47:468a89d62c23 108 Measure msr(measure->date,measure->temperature, measure->humidity,measure->pressure);
FairyMental 39:618ad21e2b34 109 listBuffer->addValueEnd(msr);
FairyMental 34:09ed07f2acba 110 mail_box.free(measure);
FairyMental 34:09ed07f2acba 111 } else {
FairyMental 34:09ed07f2acba 112 printf("ERROR: %x\n\r", evt.status);
FairyMental 34:09ed07f2acba 113 }
FairyMental 34:09ed07f2acba 114
FairyMental 57:dfcdda1e42b6 115 }
FairyMental 34:09ed07f2acba 116 }
FairyMental 57:dfcdda1e42b6 117 //
FairyMental 57:dfcdda1e42b6 118 // Compares two char arrays and returns result
FairyMental 57:dfcdda1e42b6 119 // Param1: First char Array / pointer
FairyMental 57:dfcdda1e42b6 120 // Param2: Second char Array / pointer
FairyMental 57:dfcdda1e42b6 121 // Param3. Size of the smallest char arrays (between param1 and param2)
FairyMental 57:dfcdda1e42b6 122 // Return: "-1" IF NOT EQUAL
FairyMental 57:dfcdda1e42b6 123 // "1 " IF EQUAL
FairyMental 42:b1f29874ab70 124 int CompareCommands(char command[],char targetcommand[], int size)
FairyMental 42:b1f29874ab70 125 {
FairyMental 43:3983059e0d91 126 int i;
FairyMental 43:3983059e0d91 127 for(i = 0; i < size; i ++)
FairyMental 42:b1f29874ab70 128 {
FairyMental 42:b1f29874ab70 129 if(command[i] != targetcommand[i])
FairyMental 42:b1f29874ab70 130 return -1;
FairyMental 42:b1f29874ab70 131 }
FairyMental 42:b1f29874ab70 132 return 1;
FairyMental 42:b1f29874ab70 133 }
FairyMental 57:dfcdda1e42b6 134 //
FairyMental 57:dfcdda1e42b6 135 // Reads commands through PUTTY and 'consumes the data' accordingly
FairyMental 57:dfcdda1e42b6 136 // A.K.A. Consumer Thread
FairyMental 39:618ad21e2b34 137 void ConsumeThread()
FairyMental 39:618ad21e2b34 138 {
FairyMental 57:dfcdda1e42b6 139 //Last character pressed read (last key input)
FairyMental 41:d222c043c96d 140 char charCmd;
FairyMental 57:dfcdda1e42b6 141 //Char array that stores the command after user presses ENTER
FairyMental 41:d222c043c96d 142 char command[40];
FairyMental 57:dfcdda1e42b6 143 //Current Command Size
FairyMental 41:d222c043c96d 144 int crtChar = 0;
FairyMental 41:d222c043c96d 145 printf("\r\nAwaiting command:\r\n");
FairyMental 39:618ad21e2b34 146 while(1)
FairyMental 39:618ad21e2b34 147 {
FairyMental 41:d222c043c96d 148 charCmd = NULL;
FairyMental 41:d222c043c96d 149 charCmd = getchar();
FairyMental 41:d222c043c96d 150 if(charCmd != NULL)
FairyMental 41:d222c043c96d 151 {
FairyMental 57:dfcdda1e42b6 152 //If BACKSPACE is pressed, Print "DEL" so it deletes last character typed.
FairyMental 57:dfcdda1e42b6 153 if (charCmd == 127 && crtChar > 0 )
FairyMental 43:3983059e0d91 154 {
FairyMental 43:3983059e0d91 155 printf("%c",charCmd);
FairyMental 43:3983059e0d91 156 command[--crtChar] = '\0';
FairyMental 43:3983059e0d91 157 }
FairyMental 57:dfcdda1e42b6 158 //If NOT enter AND NOT Backspace is pressed, SAVE the char
FairyMental 57:dfcdda1e42b6 159 else if(charCmd != 13 && charCmd != 127)
FairyMental 41:d222c043c96d 160 {
FairyMental 41:d222c043c96d 161 command[crtChar++] = charCmd;
FairyMental 41:d222c043c96d 162 printf("%c",charCmd);
FairyMental 41:d222c043c96d 163 }
FairyMental 57:dfcdda1e42b6 164 //If ENTER is pressed, PROCESS it
FairyMental 44:b523c9a9dd97 165 else if(charCmd == 13) // If Enter is pressed
FairyMental 49:83bea7fb2728 166 {
FairyMental 57:dfcdda1e42b6 167 //Get first word of command:
FairyMental 43:3983059e0d91 168 char *charPos;
FairyMental 43:3983059e0d91 169 charPos = strtok(command," -,");
FairyMental 57:dfcdda1e42b6 170
FairyMental 57:dfcdda1e42b6 171 //Check if it's a "LIST" command
FairyMental 43:3983059e0d91 172 if(CompareCommands(charPos, "list",4) == 1)
FairyMental 42:b1f29874ab70 173 {
FairyMental 43:3983059e0d91 174 charPos = strtok(NULL," -,");
FairyMental 57:dfcdda1e42b6 175 //Check if it's a "LIST ALL" command
FairyMental 43:3983059e0d91 176 if(CompareCommands(charPos, "all",3) == 1)
FairyMental 43:3983059e0d91 177 {
FairyMental 44:b523c9a9dd97 178 printf("\r\n Printing all measures performed so far: \r\n");
FairyMental 43:3983059e0d91 179 listBuffer->ListAll();
FairyMental 44:b523c9a9dd97 180 printf("\r\n D O N E ! \r\n");
FairyMental 43:3983059e0d91 181 }
FairyMental 57:dfcdda1e42b6 182 //Check if it's a "LIST X" command
FairyMental 43:3983059e0d91 183 else if(strtol(charPos,NULL,10) != 0)
FairyMental 43:3983059e0d91 184 {
FairyMental 43:3983059e0d91 185 listBuffer->ListX(atoi(charPos));
FairyMental 44:b523c9a9dd97 186 printf("\r\n D O N E ! \r\n");
FairyMental 43:3983059e0d91 187 }
FairyMental 42:b1f29874ab70 188 }
FairyMental 57:dfcdda1e42b6 189 //Check if it's a "DELETE" command
FairyMental 44:b523c9a9dd97 190 else if (CompareCommands(charPos,"delete",6) == 1)
FairyMental 44:b523c9a9dd97 191 {
FairyMental 44:b523c9a9dd97 192 charPos = strtok(NULL," -,");
FairyMental 57:dfcdda1e42b6 193 //Check if it's a "DELETE ALL" command
FairyMental 44:b523c9a9dd97 194 if(CompareCommands(charPos,"all",3) == 1)
FairyMental 44:b523c9a9dd97 195 {
FairyMental 44:b523c9a9dd97 196 printf("\r\n Deleting all measures performed so far: \r\n");
FairyMental 44:b523c9a9dd97 197 listBuffer->DeleteAll();
FairyMental 44:b523c9a9dd97 198 printf("\r\n D O N E ! \r\n");
FairyMental 44:b523c9a9dd97 199 }
FairyMental 57:dfcdda1e42b6 200 //Check if it's a "DELETE X" command
FairyMental 44:b523c9a9dd97 201 else if (strtol(charPos,NULL,10) != 0)
FairyMental 44:b523c9a9dd97 202 {
FairyMental 44:b523c9a9dd97 203 listBuffer->DeleteX(atoi(charPos));
FairyMental 48:a8219954b3f2 204 printf("\r\nD O N E ! \r\n");
FairyMental 44:b523c9a9dd97 205 }
FairyMental 44:b523c9a9dd97 206
FairyMental 44:b523c9a9dd97 207 }
FairyMental 57:dfcdda1e42b6 208 //Check if it's a "STATE/STATUS" command
FairyMental 57:dfcdda1e42b6 209 else if (CompareCommands(charPos,"status",6) == 1 || CompareCommands(charPos,"state",5) == 1)
FairyMental 45:9a33f2bc2b4e 210 {
FairyMental 46:0de1f3c7d118 211 char *ptr = localDate->ToString();
FairyMental 49:83bea7fb2728 212 if(logging == true)
FairyMental 49:83bea7fb2728 213 printf("\r\n STATUS: \r\n # of measures: %i \r\n SAMPLING: ON \r\n Current Date: %s \r\n", listBuffer->GetSize(),ptr);
FairyMental 49:83bea7fb2728 214 else
FairyMental 49:83bea7fb2728 215 printf("\r\n STATUS: \r\n # of measures: %i \r\n SAMPLING: OFF \r\n Current Date: %s \r\n", listBuffer->GetSize(),ptr);
FairyMental 45:9a33f2bc2b4e 216 }
FairyMental 57:dfcdda1e42b6 217 //Check if it's a "SETTIME" command
FairyMental 48:a8219954b3f2 218 else if (CompareCommands(charPos,"settime",7) == 1)
FairyMental 48:a8219954b3f2 219 {
FairyMental 48:a8219954b3f2 220 int h,m,s;
FairyMental 57:dfcdda1e42b6 221 //Fetch 1st Param
FairyMental 48:a8219954b3f2 222 charPos = strtok(NULL," ,");
FairyMental 48:a8219954b3f2 223 if(strtol(charPos,NULL,10) != 0)
FairyMental 48:a8219954b3f2 224 {
FairyMental 48:a8219954b3f2 225 h = atoi(charPos);
FairyMental 48:a8219954b3f2 226 }
FairyMental 57:dfcdda1e42b6 227 //Fech 2nd Param
FairyMental 48:a8219954b3f2 228 charPos = strtok(NULL," ,");
FairyMental 48:a8219954b3f2 229 if(strtol(charPos,NULL,10) != 0)
FairyMental 48:a8219954b3f2 230 {
FairyMental 48:a8219954b3f2 231 m = atoi(charPos);
FairyMental 48:a8219954b3f2 232 }
FairyMental 57:dfcdda1e42b6 233 //Fetch 3rd Param
FairyMental 48:a8219954b3f2 234 charPos = strtok(NULL," ,");
FairyMental 48:a8219954b3f2 235 if(strtol(charPos,NULL,10) != 0)
FairyMental 48:a8219954b3f2 236 {
FairyMental 48:a8219954b3f2 237 s = atoi(charPos);
FairyMental 48:a8219954b3f2 238 }
FairyMental 57:dfcdda1e42b6 239 //Check if parameters are valid
FairyMental 48:a8219954b3f2 240 if((h>=0 && h < 24) && (m>=0 && m<60) && (s>=0 && s<60))
FairyMental 48:a8219954b3f2 241 {
FairyMental 48:a8219954b3f2 242 localDate->hour = h;
FairyMental 48:a8219954b3f2 243 localDate->min = m;
FairyMental 48:a8219954b3f2 244 localDate->sec = s;
FairyMental 48:a8219954b3f2 245 printf("\r\n D O N E ! \r\n");
FairyMental 48:a8219954b3f2 246 }
FairyMental 57:dfcdda1e42b6 247 //If not valid, prompt user
FairyMental 48:a8219954b3f2 248 else
FairyMental 48:a8219954b3f2 249 {
FairyMental 48:a8219954b3f2 250 printf("\r\nWrong format! \r\n");
FairyMental 48:a8219954b3f2 251 }
FairyMental 48:a8219954b3f2 252 }
FairyMental 57:dfcdda1e42b6 253 //Check if it's a "SETDATE" command
FairyMental 48:a8219954b3f2 254 else if (CompareCommands(charPos,"setdate",7) == 1)
FairyMental 48:a8219954b3f2 255 {
FairyMental 48:a8219954b3f2 256 int d,m,y;
FairyMental 57:dfcdda1e42b6 257 //Fetch 1st Parameter
FairyMental 48:a8219954b3f2 258 charPos = strtok(NULL," ,");
FairyMental 48:a8219954b3f2 259 if(strtol(charPos,NULL,10) != 0)
FairyMental 48:a8219954b3f2 260 {
FairyMental 48:a8219954b3f2 261 d = atoi(charPos);
FairyMental 48:a8219954b3f2 262 }
FairyMental 57:dfcdda1e42b6 263 //Fetch 2nd Parameter
FairyMental 48:a8219954b3f2 264 charPos = strtok(NULL," ,");
FairyMental 48:a8219954b3f2 265 if(strtol(charPos,NULL,10) != 0)
FairyMental 48:a8219954b3f2 266 {
FairyMental 48:a8219954b3f2 267 m = atoi(charPos);
FairyMental 48:a8219954b3f2 268 }
FairyMental 57:dfcdda1e42b6 269 //Fetch 3rd Parameter
FairyMental 48:a8219954b3f2 270 charPos = strtok(NULL," ,");
FairyMental 48:a8219954b3f2 271 if(strtol(charPos,NULL,10) != 0)
FairyMental 48:a8219954b3f2 272 {
FairyMental 48:a8219954b3f2 273 y = atoi(charPos);
FairyMental 48:a8219954b3f2 274 }
FairyMental 57:dfcdda1e42b6 275 //Check if parameters are valid
FairyMental 48:a8219954b3f2 276 if((d>=0 && d < 31) && (m>=0 && m<13))
FairyMental 48:a8219954b3f2 277 {
FairyMental 48:a8219954b3f2 278 localDate->day = d;
FairyMental 48:a8219954b3f2 279 localDate->month = m;
FairyMental 48:a8219954b3f2 280 localDate->year = y;
FairyMental 48:a8219954b3f2 281 printf("\r\n D O N E ! \r\n");
FairyMental 48:a8219954b3f2 282 }
FairyMental 57:dfcdda1e42b6 283 // Prompt user if they are not.
FairyMental 48:a8219954b3f2 284 else
FairyMental 48:a8219954b3f2 285 {
FairyMental 48:a8219954b3f2 286 printf("\r\nWrong format! \r\n");
FairyMental 48:a8219954b3f2 287 }
FairyMental 48:a8219954b3f2 288 }
FairyMental 57:dfcdda1e42b6 289 // Check if it's a "LOGGING" command
FairyMental 49:83bea7fb2728 290 else if(CompareCommands(charPos,"logging",7) == 1)
FairyMental 49:83bea7fb2728 291 {
FairyMental 49:83bea7fb2728 292 charPos = strtok(NULL," ,");
FairyMental 57:dfcdda1e42b6 293 //Check if it should be turned ON / OFF
FairyMental 49:83bea7fb2728 294 if(CompareCommands(charPos,"on",2) == 1)
FairyMental 49:83bea7fb2728 295 {
FairyMental 49:83bea7fb2728 296 logging = true;
FairyMental 49:83bea7fb2728 297 printf("\r\n Logging turned ON!\r\n");
FairyMental 49:83bea7fb2728 298 }
FairyMental 49:83bea7fb2728 299 else if (CompareCommands(charPos,"off",3) == 1)
FairyMental 49:83bea7fb2728 300 {
FairyMental 49:83bea7fb2728 301 logging = false;
FairyMental 49:83bea7fb2728 302 printf("\r\n Logging turned OFF!\r\n");
FairyMental 49:83bea7fb2728 303 }
FairyMental 57:dfcdda1e42b6 304 }
FairyMental 41:d222c043c96d 305 printf("Awaiting command: \r\n");
FairyMental 57:dfcdda1e42b6 306 //Clear command!
FairyMental 57:dfcdda1e42b6 307 //* NOTE * Setting first char in array to '\0' WILL NOT RESET IT...for some reason.
FairyMental 41:d222c043c96d 308 int i = 0;
FairyMental 41:d222c043c96d 309 for(i =0 ; i < crtChar; i++)
FairyMental 41:d222c043c96d 310 command[i] = ' ';
FairyMental 41:d222c043c96d 311 command[0] = 0;
FairyMental 41:d222c043c96d 312 crtChar = 0;
FairyMental 41:d222c043c96d 313 }
FairyMental 41:d222c043c96d 314 }
FairyMental 39:618ad21e2b34 315 }
FairyMental 39:618ad21e2b34 316 }
FairyMental 39:618ad21e2b34 317
FairyMental 57:dfcdda1e42b6 318 //
FairyMental 57:dfcdda1e42b6 319 // Ticker that signals the measureThread to do a measure
FairyMental 57:dfcdda1e42b6 320 //
FairyMental 36:19d3f752f9c3 321 void SendSignalDoMeasure()
FairyMental 36:19d3f752f9c3 322 {
FairyMental 49:83bea7fb2728 323 if(logging == true)
FairyMental 49:83bea7fb2728 324 measureThread->signal_set(SIGNAL_doMeasure);
FairyMental 36:19d3f752f9c3 325 }
FairyMental 34:09ed07f2acba 326
FairyMental 34:09ed07f2acba 327 // Main thread
FairyMental 34:09ed07f2acba 328 int main() {
FairyMental 34:09ed07f2acba 329
FairyMental 57:dfcdda1e42b6 330 //Initialize all stuff you need here:
FairyMental 34:09ed07f2acba 331 measurer.init();
FairyMental 34:09ed07f2acba 332 measurer.calib();
Netaphous 54:53ee2d07d684 333
Netaphous 54:53ee2d07d684 334 // Creates a list with a max size of 120
Netaphous 53:abb161ed4c8c 335 listBuffer = new LinkedList(120);
FairyMental 46:0de1f3c7d118 336 localDate = new LocalDate();
FairyMental 34:09ed07f2acba 337 //Start message
FairyMental 37:00775e368a71 338 printf("Welcome\r\n");
FairyMental 34:09ed07f2acba 339
FairyMental 34:09ed07f2acba 340 //Hook up timer interrupt
FairyMental 36:19d3f752f9c3 341 Ticker timer;
FairyMental 57:dfcdda1e42b6 342 timer.attach(&SendSignalDoMeasure, 0.2);
FairyMental 46:0de1f3c7d118 343 Ticker realTimeDate;
FairyMental 46:0de1f3c7d118 344 realTimeDate.attach(&RealTimeDate,1.0);
FairyMental 34:09ed07f2acba 345
FairyMental 57:dfcdda1e42b6 346 //Run Threads
FairyMental 37:00775e368a71 347 produceThread = new Thread();
FairyMental 37:00775e368a71 348 produceThread->start(ProducerThread);
FairyMental 37:00775e368a71 349 measureThread = new Thread();
FairyMental 37:00775e368a71 350 measureThread->start(MeasureThread);
FairyMental 39:618ad21e2b34 351 consumeThread = new Thread();
FairyMental 39:618ad21e2b34 352 consumeThread->start(ConsumeThread);
FairyMental 34:09ed07f2acba 353
FairyMental 34:09ed07f2acba 354 printf("Main Thread\n");
FairyMental 34:09ed07f2acba 355 while(1)
martinsimpson 32:260a288be58f 356 {
FairyMental 35:484e384f9bf1 357 Thread::wait(3000);
FairyMental 37:00775e368a71 358 // float temp,humi;
FairyMental 37:00775e368a71 359 // measurer.ReadTempHumi(&temp, &humi);
FairyMental 37:00775e368a71 360 // barometer.get();
FairyMental 36:19d3f752f9c3 361 // t2->signal_set(SIGNAL_doMeasure);
FairyMental 37:00775e368a71 362 // printf("Main Thread Measures: %fC %f %f \r\n", temp, humi,barometer.pressure());
FairyMental 34:09ed07f2acba 363
martinsimpson 32:260a288be58f 364 }
Jonathan Austin 0:2757d7abb7d9 365 }
FairyMental 34:09ed07f2acba 366