Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of SOFT253_Template_Weather_OS_54 by
main.cpp@50:c07e968b9582, 2017-04-06 (annotated)
- Committer:
- Netaphous
- Date:
- Thu Apr 06 18:52:01 2017 +0000
- Branch:
- feature/fakeSensor
- Revision:
- 50:c07e968b9582
- Parent:
- 49:83bea7fb2728
- Child:
- 52:b95572c3d4c4
Created fake barometer and measurer classes and implemented these into main, with lines currently commented out that force these calls
Who changed what in which revision?
User | Revision | Line number | New 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 | 34:09ed07f2acba | 15 | |
martinsimpson | 32:260a288be58f | 16 | DigitalOut myled(LED1); |
Netaphous | 50:c07e968b9582 | 17 | DigitalIn onBoardSwitch(USER_BUTTON); |
martinsimpson | 32:260a288be58f | 18 | I2C i2c2(I2C_SDA, I2C_SCL); |
Netaphous | 50:c07e968b9582 | 19 | |
Netaphous | 50:c07e968b9582 | 20 | // MAKE SURE ONE OF THESE IS COMMENTED OUT |
Netaphous | 50:c07e968b9582 | 21 | // Real sensor |
martinsimpson | 32:260a288be58f | 22 | LPS25H barometer(i2c2, LPS25H_V_CHIP_ADDR); |
FairyMental | 34:09ed07f2acba | 23 | HTS221 measurer(I2C_SDA, I2C_SCL); |
Netaphous | 50:c07e968b9582 | 24 | // Fake sensor |
Netaphous | 50:c07e968b9582 | 25 | //FakeBarometer barometer(1029.0, 1031.0); |
Netaphous | 50:c07e968b9582 | 26 | //FakeMeasurer measurer(20.0, 25.0, 30.0, 50.0); |
Netaphous | 50:c07e968b9582 | 27 | |
FairyMental | 34:09ed07f2acba | 28 | |
FairyMental | 34:09ed07f2acba | 29 | //Threads |
FairyMental | 37:00775e368a71 | 30 | Thread *produceThread; |
FairyMental | 37:00775e368a71 | 31 | Thread *measureThread; |
FairyMental | 39:618ad21e2b34 | 32 | Thread *consumeThread; |
FairyMental | 38:e626a358e5e3 | 33 | |
FairyMental | 34:09ed07f2acba | 34 | int count= 0; |
FairyMental | 38:e626a358e5e3 | 35 | |
FairyMental | 34:09ed07f2acba | 36 | //Mail queue |
FairyMental | 34:09ed07f2acba | 37 | Mail<Measure, 16> mail_box; |
FairyMental | 34:09ed07f2acba | 38 | |
FairyMental | 39:618ad21e2b34 | 39 | LinkedList *listBuffer; |
FairyMental | 46:0de1f3c7d118 | 40 | LocalDate *localDate; |
FairyMental | 49:83bea7fb2728 | 41 | bool logging = true; |
FairyMental | 49:83bea7fb2728 | 42 | |
FairyMental | 46:0de1f3c7d118 | 43 | void RealTimeDate() |
FairyMental | 46:0de1f3c7d118 | 44 | { |
FairyMental | 46:0de1f3c7d118 | 45 | localDate->TickSecond(); |
FairyMental | 46:0de1f3c7d118 | 46 | |
FairyMental | 46:0de1f3c7d118 | 47 | } |
FairyMental | 37:00775e368a71 | 48 | void MeasureThread() { |
FairyMental | 35:484e384f9bf1 | 49 | |
FairyMental | 36:19d3f752f9c3 | 50 | while(true) |
FairyMental | 36:19d3f752f9c3 | 51 | { |
FairyMental | 36:19d3f752f9c3 | 52 | Thread::signal_wait(SIGNAL_doMeasure); |
FairyMental | 36:19d3f752f9c3 | 53 | //Read sample - make a copy |
FairyMental | 36:19d3f752f9c3 | 54 | float temperature = 0 , humidity = 0,pressure = 0; |
FairyMental | 34:09ed07f2acba | 55 | |
FairyMental | 34:09ed07f2acba | 56 | |
FairyMental | 34:09ed07f2acba | 57 | |
FairyMental | 36:19d3f752f9c3 | 58 | //Allocate a block from the memory pool |
FairyMental | 36:19d3f752f9c3 | 59 | Measure *measure = mail_box.alloc(); |
FairyMental | 36:19d3f752f9c3 | 60 | if (measure == NULL) |
FairyMental | 36:19d3f752f9c3 | 61 | { |
FairyMental | 36:19d3f752f9c3 | 62 | //Out of memory |
FairyMental | 36:19d3f752f9c3 | 63 | printf("Out of memory\n\r"); |
FairyMental | 36:19d3f752f9c3 | 64 | return; |
FairyMental | 36:19d3f752f9c3 | 65 | } |
FairyMental | 34:09ed07f2acba | 66 | |
FairyMental | 36:19d3f752f9c3 | 67 | //Fill in the data |
FairyMental | 36:19d3f752f9c3 | 68 | measurer.ReadTempHumi(&temperature,&humidity); |
FairyMental | 36:19d3f752f9c3 | 69 | barometer.get(); |
FairyMental | 36:19d3f752f9c3 | 70 | pressure = barometer.pressure(); |
FairyMental | 36:19d3f752f9c3 | 71 | |
FairyMental | 47:468a89d62c23 | 72 | |
FairyMental | 36:19d3f752f9c3 | 73 | measure->temperature = temperature; |
FairyMental | 36:19d3f752f9c3 | 74 | measure->humidity = humidity; |
FairyMental | 36:19d3f752f9c3 | 75 | measure->pressure = pressure; |
FairyMental | 47:468a89d62c23 | 76 | measure->date = new LocalDate(localDate); |
FairyMental | 36:19d3f752f9c3 | 77 | |
FairyMental | 36:19d3f752f9c3 | 78 | //Write to queue |
FairyMental | 36:19d3f752f9c3 | 79 | osStatus stat = mail_box.put(measure); //Note we are sending the "pointer" |
martinsimpson | 32:260a288be58f | 80 | |
FairyMental | 36:19d3f752f9c3 | 81 | //Check if succesful |
FairyMental | 36:19d3f752f9c3 | 82 | if (stat == osErrorResource) { |
FairyMental | 36:19d3f752f9c3 | 83 | printf("queue->put() Error code: %4Xh, Resource not available\r\n", stat); |
FairyMental | 36:19d3f752f9c3 | 84 | mail_box.free(measure); |
FairyMental | 36:19d3f752f9c3 | 85 | return; |
FairyMental | 36:19d3f752f9c3 | 86 | } |
FairyMental | 34:09ed07f2acba | 87 | } |
FairyMental | 34:09ed07f2acba | 88 | } |
FairyMental | 34:09ed07f2acba | 89 | |
FairyMental | 34:09ed07f2acba | 90 | //Normal priority thread (consumer) |
FairyMental | 37:00775e368a71 | 91 | void ProducerThread() |
FairyMental | 34:09ed07f2acba | 92 | { |
FairyMental | 34:09ed07f2acba | 93 | while (true) { |
FairyMental | 34:09ed07f2acba | 94 | //Block on the queue |
FairyMental | 34:09ed07f2acba | 95 | osEvent evt = mail_box.get(); |
FairyMental | 34:09ed07f2acba | 96 | |
FairyMental | 34:09ed07f2acba | 97 | //Check status |
FairyMental | 34:09ed07f2acba | 98 | if (evt.status == osEventMail) { |
FairyMental | 34:09ed07f2acba | 99 | Measure *measure = (Measure*)evt.value.p; //This is the pointer (address) |
FairyMental | 34:09ed07f2acba | 100 | //Make a copy |
FairyMental | 41:d222c043c96d | 101 | // printf("Consumer: %fC | %f% % | %f \r\n", measure->temperature, measure->humidity,measure->pressure); |
FairyMental | 39:618ad21e2b34 | 102 | |
FairyMental | 47:468a89d62c23 | 103 | Measure msr(measure->date,measure->temperature, measure->humidity,measure->pressure); |
FairyMental | 39:618ad21e2b34 | 104 | listBuffer->addValueEnd(msr); |
FairyMental | 34:09ed07f2acba | 105 | //We are done with this, so give back the memory to the pool |
FairyMental | 34:09ed07f2acba | 106 | mail_box.free(measure); |
FairyMental | 34:09ed07f2acba | 107 | |
FairyMental | 34:09ed07f2acba | 108 | //Echo to the terminal |
FairyMental | 34:09ed07f2acba | 109 | |
FairyMental | 34:09ed07f2acba | 110 | } else { |
FairyMental | 34:09ed07f2acba | 111 | printf("ERROR: %x\n\r", evt.status); |
FairyMental | 34:09ed07f2acba | 112 | } |
FairyMental | 34:09ed07f2acba | 113 | |
FairyMental | 34:09ed07f2acba | 114 | } //end while |
FairyMental | 34:09ed07f2acba | 115 | } |
FairyMental | 42:b1f29874ab70 | 116 | int CompareCommands(char command[],char targetcommand[], int size) |
FairyMental | 42:b1f29874ab70 | 117 | { |
FairyMental | 43:3983059e0d91 | 118 | int i; |
FairyMental | 43:3983059e0d91 | 119 | for(i = 0; i < size; i ++) |
FairyMental | 42:b1f29874ab70 | 120 | { |
FairyMental | 42:b1f29874ab70 | 121 | if(command[i] != targetcommand[i]) |
FairyMental | 42:b1f29874ab70 | 122 | return -1; |
FairyMental | 42:b1f29874ab70 | 123 | |
FairyMental | 42:b1f29874ab70 | 124 | } |
FairyMental | 42:b1f29874ab70 | 125 | return 1; |
FairyMental | 42:b1f29874ab70 | 126 | } |
FairyMental | 39:618ad21e2b34 | 127 | void ConsumeThread() |
FairyMental | 39:618ad21e2b34 | 128 | { |
FairyMental | 41:d222c043c96d | 129 | char charCmd; |
FairyMental | 41:d222c043c96d | 130 | char command[40]; |
FairyMental | 41:d222c043c96d | 131 | int crtChar = 0; |
FairyMental | 41:d222c043c96d | 132 | printf("\r\nAwaiting command:\r\n"); |
FairyMental | 39:618ad21e2b34 | 133 | while(1) |
FairyMental | 39:618ad21e2b34 | 134 | { |
FairyMental | 41:d222c043c96d | 135 | |
FairyMental | 41:d222c043c96d | 136 | charCmd = NULL; |
FairyMental | 41:d222c043c96d | 137 | charCmd = getchar(); |
FairyMental | 41:d222c043c96d | 138 | if(charCmd != NULL) |
FairyMental | 41:d222c043c96d | 139 | { |
FairyMental | 44:b523c9a9dd97 | 140 | if (charCmd == 127 && crtChar > 0 ) // If Backspace is pressed |
FairyMental | 43:3983059e0d91 | 141 | { |
FairyMental | 43:3983059e0d91 | 142 | printf("%c",charCmd); |
FairyMental | 43:3983059e0d91 | 143 | command[--crtChar] = '\0'; |
FairyMental | 43:3983059e0d91 | 144 | } |
FairyMental | 44:b523c9a9dd97 | 145 | else if(charCmd != 13 && charCmd != 127) // If NOT enter AND NOT Backspace is pressed |
FairyMental | 41:d222c043c96d | 146 | { |
FairyMental | 41:d222c043c96d | 147 | command[crtChar++] = charCmd; |
FairyMental | 41:d222c043c96d | 148 | printf("%c",charCmd); |
FairyMental | 41:d222c043c96d | 149 | } |
FairyMental | 44:b523c9a9dd97 | 150 | else if(charCmd == 13) // If Enter is pressed |
FairyMental | 49:83bea7fb2728 | 151 | { |
FairyMental | 43:3983059e0d91 | 152 | // this thing that follows splits a string into multiple strings, just like String.Split(char[] delimiters) |
FairyMental | 43:3983059e0d91 | 153 | // here we will check for commands and parameters :) |
FairyMental | 43:3983059e0d91 | 154 | char *charPos; |
FairyMental | 43:3983059e0d91 | 155 | charPos = strtok(command," -,"); |
FairyMental | 43:3983059e0d91 | 156 | if(CompareCommands(charPos, "list",4) == 1) |
FairyMental | 42:b1f29874ab70 | 157 | { |
FairyMental | 43:3983059e0d91 | 158 | charPos = strtok(NULL," -,"); |
FairyMental | 43:3983059e0d91 | 159 | if(CompareCommands(charPos, "all",3) == 1) |
FairyMental | 43:3983059e0d91 | 160 | { |
FairyMental | 44:b523c9a9dd97 | 161 | printf("\r\n Printing all measures performed so far: \r\n"); |
FairyMental | 43:3983059e0d91 | 162 | listBuffer->ListAll(); |
FairyMental | 44:b523c9a9dd97 | 163 | printf("\r\n D O N E ! \r\n"); |
FairyMental | 43:3983059e0d91 | 164 | } |
FairyMental | 43:3983059e0d91 | 165 | else if(strtol(charPos,NULL,10) != 0) |
FairyMental | 43:3983059e0d91 | 166 | { |
FairyMental | 43:3983059e0d91 | 167 | listBuffer->ListX(atoi(charPos)); |
FairyMental | 44:b523c9a9dd97 | 168 | printf("\r\n D O N E ! \r\n"); |
FairyMental | 43:3983059e0d91 | 169 | } |
FairyMental | 42:b1f29874ab70 | 170 | } |
FairyMental | 44:b523c9a9dd97 | 171 | else if (CompareCommands(charPos,"delete",6) == 1) |
FairyMental | 44:b523c9a9dd97 | 172 | { |
FairyMental | 44:b523c9a9dd97 | 173 | charPos = strtok(NULL," -,"); |
FairyMental | 44:b523c9a9dd97 | 174 | if(CompareCommands(charPos,"all",3) == 1) |
FairyMental | 44:b523c9a9dd97 | 175 | { |
FairyMental | 44:b523c9a9dd97 | 176 | printf("\r\n Deleting all measures performed so far: \r\n"); |
FairyMental | 44:b523c9a9dd97 | 177 | listBuffer->DeleteAll(); |
FairyMental | 44:b523c9a9dd97 | 178 | printf("\r\n D O N E ! \r\n"); |
FairyMental | 44:b523c9a9dd97 | 179 | } |
FairyMental | 44:b523c9a9dd97 | 180 | else if (strtol(charPos,NULL,10) != 0) |
FairyMental | 44:b523c9a9dd97 | 181 | { |
FairyMental | 44:b523c9a9dd97 | 182 | listBuffer->DeleteX(atoi(charPos)); |
FairyMental | 48:a8219954b3f2 | 183 | printf("\r\nD O N E ! \r\n"); |
FairyMental | 44:b523c9a9dd97 | 184 | } |
FairyMental | 44:b523c9a9dd97 | 185 | |
FairyMental | 44:b523c9a9dd97 | 186 | } |
FairyMental | 45:9a33f2bc2b4e | 187 | else if (CompareCommands(charPos,"status",6) == 1) |
FairyMental | 45:9a33f2bc2b4e | 188 | { |
FairyMental | 46:0de1f3c7d118 | 189 | char *ptr = localDate->ToString(); |
FairyMental | 49:83bea7fb2728 | 190 | if(logging == true) |
FairyMental | 49:83bea7fb2728 | 191 | 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 | 192 | else |
FairyMental | 49:83bea7fb2728 | 193 | 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 | 194 | } |
FairyMental | 48:a8219954b3f2 | 195 | else if (CompareCommands(charPos,"settime",7) == 1) |
FairyMental | 48:a8219954b3f2 | 196 | { |
FairyMental | 48:a8219954b3f2 | 197 | int h,m,s; |
FairyMental | 48:a8219954b3f2 | 198 | charPos = strtok(NULL," ,"); |
FairyMental | 48:a8219954b3f2 | 199 | if(strtol(charPos,NULL,10) != 0) |
FairyMental | 48:a8219954b3f2 | 200 | { |
FairyMental | 48:a8219954b3f2 | 201 | h = atoi(charPos); |
FairyMental | 48:a8219954b3f2 | 202 | } |
FairyMental | 48:a8219954b3f2 | 203 | charPos = strtok(NULL," ,"); |
FairyMental | 48:a8219954b3f2 | 204 | if(strtol(charPos,NULL,10) != 0) |
FairyMental | 48:a8219954b3f2 | 205 | { |
FairyMental | 48:a8219954b3f2 | 206 | m = atoi(charPos); |
FairyMental | 48:a8219954b3f2 | 207 | } |
FairyMental | 48:a8219954b3f2 | 208 | charPos = strtok(NULL," ,"); |
FairyMental | 48:a8219954b3f2 | 209 | if(strtol(charPos,NULL,10) != 0) |
FairyMental | 48:a8219954b3f2 | 210 | { |
FairyMental | 48:a8219954b3f2 | 211 | s = atoi(charPos); |
FairyMental | 48:a8219954b3f2 | 212 | } |
FairyMental | 48:a8219954b3f2 | 213 | if((h>=0 && h < 24) && (m>=0 && m<60) && (s>=0 && s<60)) |
FairyMental | 48:a8219954b3f2 | 214 | { |
FairyMental | 48:a8219954b3f2 | 215 | localDate->hour = h; |
FairyMental | 48:a8219954b3f2 | 216 | localDate->min = m; |
FairyMental | 48:a8219954b3f2 | 217 | localDate->sec = s; |
FairyMental | 48:a8219954b3f2 | 218 | printf("\r\n D O N E ! \r\n"); |
FairyMental | 48:a8219954b3f2 | 219 | } |
FairyMental | 48:a8219954b3f2 | 220 | else |
FairyMental | 48:a8219954b3f2 | 221 | { |
FairyMental | 48:a8219954b3f2 | 222 | printf("\r\nWrong format! \r\n"); |
FairyMental | 48:a8219954b3f2 | 223 | } |
FairyMental | 48:a8219954b3f2 | 224 | } |
FairyMental | 48:a8219954b3f2 | 225 | else if (CompareCommands(charPos,"setdate",7) == 1) |
FairyMental | 48:a8219954b3f2 | 226 | { |
FairyMental | 48:a8219954b3f2 | 227 | int d,m,y; |
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 | d = atoi(charPos); |
FairyMental | 48:a8219954b3f2 | 232 | } |
FairyMental | 48:a8219954b3f2 | 233 | charPos = strtok(NULL," ,"); |
FairyMental | 48:a8219954b3f2 | 234 | if(strtol(charPos,NULL,10) != 0) |
FairyMental | 48:a8219954b3f2 | 235 | { |
FairyMental | 48:a8219954b3f2 | 236 | m = atoi(charPos); |
FairyMental | 48:a8219954b3f2 | 237 | } |
FairyMental | 48:a8219954b3f2 | 238 | charPos = strtok(NULL," ,"); |
FairyMental | 48:a8219954b3f2 | 239 | if(strtol(charPos,NULL,10) != 0) |
FairyMental | 48:a8219954b3f2 | 240 | { |
FairyMental | 48:a8219954b3f2 | 241 | y = atoi(charPos); |
FairyMental | 48:a8219954b3f2 | 242 | } |
FairyMental | 48:a8219954b3f2 | 243 | if((d>=0 && d < 31) && (m>=0 && m<13)) |
FairyMental | 48:a8219954b3f2 | 244 | { |
FairyMental | 48:a8219954b3f2 | 245 | localDate->day = d; |
FairyMental | 48:a8219954b3f2 | 246 | localDate->month = m; |
FairyMental | 48:a8219954b3f2 | 247 | localDate->year = y; |
FairyMental | 48:a8219954b3f2 | 248 | printf("\r\n D O N E ! \r\n"); |
FairyMental | 48:a8219954b3f2 | 249 | } |
FairyMental | 48:a8219954b3f2 | 250 | else |
FairyMental | 48:a8219954b3f2 | 251 | { |
FairyMental | 48:a8219954b3f2 | 252 | printf("\r\nWrong format! \r\n"); |
FairyMental | 48:a8219954b3f2 | 253 | } |
FairyMental | 48:a8219954b3f2 | 254 | } |
FairyMental | 49:83bea7fb2728 | 255 | else if(CompareCommands(charPos,"logging",7) == 1) |
FairyMental | 49:83bea7fb2728 | 256 | { |
FairyMental | 49:83bea7fb2728 | 257 | charPos = strtok(NULL," ,"); |
FairyMental | 49:83bea7fb2728 | 258 | if(CompareCommands(charPos,"on",2) == 1) |
FairyMental | 49:83bea7fb2728 | 259 | { |
FairyMental | 49:83bea7fb2728 | 260 | logging = true; |
FairyMental | 49:83bea7fb2728 | 261 | printf("\r\n Logging turned ON!\r\n"); |
FairyMental | 49:83bea7fb2728 | 262 | } |
FairyMental | 49:83bea7fb2728 | 263 | else if (CompareCommands(charPos,"off",3) == 1) |
FairyMental | 49:83bea7fb2728 | 264 | { |
FairyMental | 49:83bea7fb2728 | 265 | logging = false; |
FairyMental | 49:83bea7fb2728 | 266 | printf("\r\n Logging turned OFF!\r\n"); |
FairyMental | 49:83bea7fb2728 | 267 | } |
FairyMental | 49:83bea7fb2728 | 268 | } |
FairyMental | 48:a8219954b3f2 | 269 | |
FairyMental | 43:3983059e0d91 | 270 | // printf("%s \r\n", charPos); |
FairyMental | 43:3983059e0d91 | 271 | // charPos = strtok(NULL," -,"); |
FairyMental | 43:3983059e0d91 | 272 | |
FairyMental | 42:b1f29874ab70 | 273 | |
FairyMental | 41:d222c043c96d | 274 | printf("Awaiting command: \r\n"); |
FairyMental | 41:d222c043c96d | 275 | int i = 0; |
FairyMental | 41:d222c043c96d | 276 | for(i =0 ; i < crtChar; i++) |
FairyMental | 41:d222c043c96d | 277 | command[i] = ' '; |
FairyMental | 41:d222c043c96d | 278 | command[0] = 0; |
FairyMental | 41:d222c043c96d | 279 | crtChar = 0; |
FairyMental | 41:d222c043c96d | 280 | } |
FairyMental | 41:d222c043c96d | 281 | } |
FairyMental | 39:618ad21e2b34 | 282 | } |
FairyMental | 39:618ad21e2b34 | 283 | } |
FairyMental | 39:618ad21e2b34 | 284 | |
FairyMental | 42:b1f29874ab70 | 285 | |
FairyMental | 36:19d3f752f9c3 | 286 | void SendSignalDoMeasure() |
FairyMental | 36:19d3f752f9c3 | 287 | { |
FairyMental | 49:83bea7fb2728 | 288 | if(logging == true) |
FairyMental | 49:83bea7fb2728 | 289 | measureThread->signal_set(SIGNAL_doMeasure); |
FairyMental | 36:19d3f752f9c3 | 290 | } |
FairyMental | 34:09ed07f2acba | 291 | |
FairyMental | 34:09ed07f2acba | 292 | // Main thread |
FairyMental | 34:09ed07f2acba | 293 | int main() { |
FairyMental | 34:09ed07f2acba | 294 | |
FairyMental | 39:618ad21e2b34 | 295 | //Initialize stuff |
FairyMental | 34:09ed07f2acba | 296 | measurer.init(); |
FairyMental | 34:09ed07f2acba | 297 | measurer.calib(); |
FairyMental | 39:618ad21e2b34 | 298 | listBuffer = new LinkedList(); |
FairyMental | 46:0de1f3c7d118 | 299 | localDate = new LocalDate(); |
FairyMental | 34:09ed07f2acba | 300 | //Start message |
FairyMental | 37:00775e368a71 | 301 | printf("Welcome\r\n"); |
FairyMental | 34:09ed07f2acba | 302 | |
FairyMental | 34:09ed07f2acba | 303 | //Hook up timer interrupt |
FairyMental | 36:19d3f752f9c3 | 304 | Ticker timer; |
FairyMental | 44:b523c9a9dd97 | 305 | timer.attach(&SendSignalDoMeasure, 2.0); |
FairyMental | 46:0de1f3c7d118 | 306 | Ticker realTimeDate; |
FairyMental | 46:0de1f3c7d118 | 307 | realTimeDate.attach(&RealTimeDate,1.0); |
FairyMental | 34:09ed07f2acba | 308 | |
FairyMental | 34:09ed07f2acba | 309 | //Threads |
FairyMental | 37:00775e368a71 | 310 | produceThread = new Thread(); |
FairyMental | 37:00775e368a71 | 311 | produceThread->start(ProducerThread); |
FairyMental | 37:00775e368a71 | 312 | measureThread = new Thread(); |
FairyMental | 37:00775e368a71 | 313 | measureThread->start(MeasureThread); |
FairyMental | 39:618ad21e2b34 | 314 | consumeThread = new Thread(); |
FairyMental | 39:618ad21e2b34 | 315 | consumeThread->start(ConsumeThread); |
FairyMental | 34:09ed07f2acba | 316 | |
FairyMental | 34:09ed07f2acba | 317 | printf("Main Thread\n"); |
FairyMental | 34:09ed07f2acba | 318 | while(1) |
martinsimpson | 32:260a288be58f | 319 | { |
FairyMental | 35:484e384f9bf1 | 320 | Thread::wait(3000); |
FairyMental | 37:00775e368a71 | 321 | // float temp,humi; |
FairyMental | 37:00775e368a71 | 322 | // measurer.ReadTempHumi(&temp, &humi); |
FairyMental | 37:00775e368a71 | 323 | // barometer.get(); |
FairyMental | 36:19d3f752f9c3 | 324 | // t2->signal_set(SIGNAL_doMeasure); |
FairyMental | 37:00775e368a71 | 325 | // printf("Main Thread Measures: %fC %f %f \r\n", temp, humi,barometer.pressure()); |
FairyMental | 34:09ed07f2acba | 326 | |
martinsimpson | 32:260a288be58f | 327 | } |
Jonathan Austin |
0:2757d7abb7d9 | 328 | } |
FairyMental | 34:09ed07f2acba | 329 |