n/a

Dependencies:   C12832 mbed-http

Fork of HTTP-Python-Demo by Cambridge Hackathon

Committer:
BKasza
Date:
Sun Nov 26 07:24:36 2017 +0000
Revision:
4:14c774cf7ac2
Parent:
3:8135a6313648
It gets compiled - Let's ship it

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jenny Plunkett 0:c5b042cf8162 1 //----------------------------------------------------------------------------
Jenny Plunkett 0:c5b042cf8162 2 // The confidential and proprietary information contained in this file may
Jenny Plunkett 0:c5b042cf8162 3 // only be used by a person authorised under and to the extent permitted
Jenny Plunkett 0:c5b042cf8162 4 // by a subsisting licensing agreement from ARM Limited or its affiliates.
Jenny Plunkett 0:c5b042cf8162 5 //
Jenny Plunkett 0:c5b042cf8162 6 // (C) COPYRIGHT 2016 ARM Limited or its affiliates.
Jenny Plunkett 0:c5b042cf8162 7 // ALL RIGHTS RESERVED
Jenny Plunkett 0:c5b042cf8162 8 //
Jenny Plunkett 0:c5b042cf8162 9 // This entire notice must be reproduced on all copies of this file
Jenny Plunkett 0:c5b042cf8162 10 // and copies of this file may only be made by a person if such person is
Jenny Plunkett 0:c5b042cf8162 11 // permitted to do so under the terms of a subsisting license agreement
Jenny Plunkett 0:c5b042cf8162 12 // from ARM Limited or its affiliates.
Jenny Plunkett 0:c5b042cf8162 13 //----------------------------------------------------------------------------
Jenny Plunkett 0:c5b042cf8162 14 #include "mbed.h"
BKasza 3:8135a6313648 15 #include "config.h"
Jenny Plunkett 0:c5b042cf8162 16 #include "C12832.h"
Jenny Plunkett 0:c5b042cf8162 17 #include "OdinWiFiInterface.h"
Jenny Plunkett 0:c5b042cf8162 18 #include "http_request.h"
BKasza 4:14c774cf7ac2 19 #include <string>
Jenny Plunkett 0:c5b042cf8162 20
BKasza 3:8135a6313648 21 C12832 lcd(PE_14, PE_12, PD_12, PD_11, PE_9);
BKasza 3:8135a6313648 22 OdinWiFiInterface wifiIF;
BKasza 4:14c774cf7ac2 23 NetworkInterface* netIF;
BKasza 3:8135a6313648 24 InterruptIn post_button(PF_2);
BKasza 3:8135a6313648 25 InterruptIn get_put_button(PG_4);
BKasza 3:8135a6313648 26 volatile bool post_clicked = false;
BKasza 3:8135a6313648 27 volatile bool get_clicked = false;
BKasza 3:8135a6313648 28 volatile bool put_clicked = false;
BKasza 4:14c774cf7ac2 29 Timer timeSinceGet;
BKasza 4:14c774cf7ac2 30 float getTimer;
BKasza 4:14c774cf7ac2 31 Timer timeSinceReport;
BKasza 4:14c774cf7ac2 32 float reportTimer;
BKasza 4:14c774cf7ac2 33
BKasza 4:14c774cf7ac2 34 struct sensorWatcher {
BKasza 4:14c774cf7ac2 35 char sensor;
BKasza 4:14c774cf7ac2 36 uint8_t id;
BKasza 4:14c774cf7ac2 37 uint8_t active;
BKasza 4:14c774cf7ac2 38 float lowThreshold;
BKasza 4:14c774cf7ac2 39 float highThreshold;
BKasza 4:14c774cf7ac2 40 };
BKasza 4:14c774cf7ac2 41 sensorWatcher alertList[ALERTLISTSIZE];
BKasza 4:14c774cf7ac2 42
BKasza 4:14c774cf7ac2 43 struct sensorData {
BKasza 4:14c774cf7ac2 44 #if USING_TEMPERATURE
BKasza 4:14c774cf7ac2 45 float temperature;
BKasza 4:14c774cf7ac2 46 float humidity;
BKasza 4:14c774cf7ac2 47 #endif
BKasza 4:14c774cf7ac2 48 #if USING_LIGHT
BKasza 4:14c774cf7ac2 49 float visible;
BKasza 4:14c774cf7ac2 50 float infrared;
BKasza 4:14c774cf7ac2 51 #endif
BKasza 4:14c774cf7ac2 52 #if USING_AIR
BKasza 4:14c774cf7ac2 53 float co;
BKasza 4:14c774cf7ac2 54 float tvoc;
BKasza 4:14c774cf7ac2 55 #endif
BKasza 4:14c774cf7ac2 56 #if USING_LASER
BKasza 4:14c774cf7ac2 57 float distance;
BKasza 4:14c774cf7ac2 58 #endif
BKasza 4:14c774cf7ac2 59 #if USING_ACCEL
BKasza 4:14c774cf7ac2 60 float xAcceleration;
BKasza 4:14c774cf7ac2 61 float yAcceleration;
BKasza 4:14c774cf7ac2 62 float zAcceleration;
BKasza 4:14c774cf7ac2 63 #endif
BKasza 4:14c774cf7ac2 64 };
BKasza 4:14c774cf7ac2 65 sensorData measurements;
Jenny Plunkett 0:c5b042cf8162 66
BKasza 3:8135a6313648 67 void lcd_print(const char* message) {
BKasza 3:8135a6313648 68 lcd.cls();
BKasza 3:8135a6313648 69 lcd.locate(0, 3);
BKasza 3:8135a6313648 70 lcd.printf(message);
BKasza 3:8135a6313648 71 }
Jenny Plunkett 0:c5b042cf8162 72
BKasza 3:8135a6313648 73 void send_post() {
BKasza 3:8135a6313648 74 post_clicked = true;
BKasza 3:8135a6313648 75 }
BKasza 3:8135a6313648 76
BKasza 3:8135a6313648 77 void send_get_put() {
BKasza 3:8135a6313648 78 get_clicked = true;
BKasza 3:8135a6313648 79 }
Jenny Plunkett 0:c5b042cf8162 80
BKasza 4:14c774cf7ac2 81 void httpPost(const char* body, int msgLen) {
BKasza 4:14c774cf7ac2 82 HttpRequest* request = new HttpRequest(netIF, HTTP_POST, "http://10.25.2.152:8080");
BKasza 4:14c774cf7ac2 83 request->set_header("Content-Type", "application/json");
BKasza 4:14c774cf7ac2 84 HttpResponse* response = request->send(body, msgLen);
BKasza 4:14c774cf7ac2 85 delete request;
BKasza 4:14c774cf7ac2 86 }
BKasza 4:14c774cf7ac2 87
BKasza 4:14c774cf7ac2 88 void addAlert(char* alertData) {
BKasza 4:14c774cf7ac2 89 int ii;
BKasza 4:14c774cf7ac2 90 for(ii=0;alertList[ii].id!=0xff && ii<ALERTLISTSIZE;ii++);
BKasza 4:14c774cf7ac2 91 if(ii<ALERTLISTSIZE){
BKasza 4:14c774cf7ac2 92 alertList[ii].sensor = alertData[0];
BKasza 4:14c774cf7ac2 93 alertList[ii].id = (uint8_t)alertData[1];
BKasza 4:14c774cf7ac2 94 alertList[ii].lowThreshold = *((float*)(&(alertData[2])));
BKasza 4:14c774cf7ac2 95 alertList[ii].highThreshold = *((float*)(&(alertData[6])));
BKasza 4:14c774cf7ac2 96 }
BKasza 4:14c774cf7ac2 97 }
BKasza 4:14c774cf7ac2 98
BKasza 4:14c774cf7ac2 99 void destroyAlert(int alertID) {
BKasza 4:14c774cf7ac2 100 for(int ii=0;ii<ALERTLISTSIZE;ii++) {
BKasza 4:14c774cf7ac2 101 if(alertList[ii].id == (uint8_t)alertID) {
BKasza 4:14c774cf7ac2 102 alertList[ii].id = 0xff;
BKasza 4:14c774cf7ac2 103 alertList[ii].sensor = 'E';
BKasza 4:14c774cf7ac2 104 }
BKasza 4:14c774cf7ac2 105 }
BKasza 4:14c774cf7ac2 106 }
BKasza 4:14c774cf7ac2 107
BKasza 4:14c774cf7ac2 108 void updateTimers(char* timerData) {
BKasza 4:14c774cf7ac2 109 float newGetTmr = *((float*)(&(timerData[0])));
BKasza 4:14c774cf7ac2 110 float newReportTmr = *((float*)(&(timerData[4])));
BKasza 4:14c774cf7ac2 111
BKasza 4:14c774cf7ac2 112 if(newGetTmr > 131072) {
BKasza 4:14c774cf7ac2 113 getTimer = GETTIMERINIT;
BKasza 4:14c774cf7ac2 114 } else if(newGetTmr != 0) {
BKasza 4:14c774cf7ac2 115 getTimer = newGetTmr;
BKasza 4:14c774cf7ac2 116 }
BKasza 4:14c774cf7ac2 117
BKasza 4:14c774cf7ac2 118 if(newReportTmr > 131072) {
BKasza 4:14c774cf7ac2 119 newReportTmr = REPORTTIMERINIT;
BKasza 4:14c774cf7ac2 120 } else if(newReportTmr != 0) {
BKasza 4:14c774cf7ac2 121 getTimer = newReportTmr;
BKasza 4:14c774cf7ac2 122 }
BKasza 4:14c774cf7ac2 123 }
BKasza 4:14c774cf7ac2 124
Jenny Plunkett 0:c5b042cf8162 125 int main() {
Jenny Plunkett 0:c5b042cf8162 126
BKasza 3:8135a6313648 127 int ret;
BKasza 3:8135a6313648 128 SocketAddress serverAddr;
BKasza 4:14c774cf7ac2 129 getTimer = GETTIMERINIT;
BKasza 4:14c774cf7ac2 130 reportTimer = REPORTTIMERINIT;
BKasza 3:8135a6313648 131
BKasza 3:8135a6313648 132 lcd_print("Connecting...");
BKasza 3:8135a6313648 133 ret = wifiIF.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
BKasza 3:8135a6313648 134 if (ret != 0) {
BKasza 3:8135a6313648 135 lcd_print("Connection error.");
BKasza 3:8135a6313648 136 return -1;
BKasza 3:8135a6313648 137 }
BKasza 3:8135a6313648 138 lcd_print("Successfully connected!");
BKasza 3:8135a6313648 139 lcd_print(wifiIF.get_mac_address());
BKasza 4:14c774cf7ac2 140 //wifiIF.gethostbyname(SERVERNAME, &serverAddr);
Jenny Plunkett 0:c5b042cf8162 141
BKasza 3:8135a6313648 142 /* Enable interrupts */
BKasza 3:8135a6313648 143 post_button.rise(&send_post);
BKasza 3:8135a6313648 144 get_put_button.rise(&send_get_put);
BKasza 3:8135a6313648 145
BKasza 4:14c774cf7ac2 146 /* Init */
BKasza 4:14c774cf7ac2 147 for(int ii=0;ii<32;ii++) {
BKasza 4:14c774cf7ac2 148 alertList[ii].sensor = 'E'; //E for empty
BKasza 4:14c774cf7ac2 149 alertList[ii].id = 0xff;
BKasza 4:14c774cf7ac2 150 }
BKasza 4:14c774cf7ac2 151
BKasza 3:8135a6313648 152 /* Main loop */
BKasza 4:14c774cf7ac2 153 netIF = &wifiIF;
BKasza 4:14c774cf7ac2 154 timeSinceGet.start();
BKasza 4:14c774cf7ac2 155 timeSinceReport.start();
BKasza 3:8135a6313648 156 while (1) {
BKasza 4:14c774cf7ac2 157 /* Ask the server if it has any updates */
BKasza 4:14c774cf7ac2 158 if(timeSinceGet.read() > getTimer) {
BKasza 3:8135a6313648 159 HttpRequest* request = new HttpRequest(netIF, HTTP_GET, "http://10.25.2.152:8080");
BKasza 3:8135a6313648 160 request->set_header("Content-Type", "application/json");
BKasza 3:8135a6313648 161 const char body[] = "{\"get\":\"request\"}";
BKasza 3:8135a6313648 162 HttpResponse* response = request->send(body, strlen(body));
BKasza 4:14c774cf7ac2 163 char* arrui8Msg = (char*)response->get_body_as_string().c_str();
BKasza 4:14c774cf7ac2 164 lcd_print(arrui8Msg);
BKasza 4:14c774cf7ac2 165 char chr = arrui8Msg[0];
BKasza 4:14c774cf7ac2 166 if(chr == 'T') {
BKasza 4:14c774cf7ac2 167 updateTimers(&(arrui8Msg[1]));
BKasza 4:14c774cf7ac2 168 } else if(chr == 'E') {
BKasza 4:14c774cf7ac2 169 if(arrui8Msg[1]=='C') {
BKasza 4:14c774cf7ac2 170 addAlert(&(arrui8Msg[2]));
BKasza 4:14c774cf7ac2 171 } else if(arrui8Msg[1]=='D') {
BKasza 4:14c774cf7ac2 172 destroyAlert((uint8_t)arrui8Msg[2]);
BKasza 4:14c774cf7ac2 173 }
BKasza 4:14c774cf7ac2 174 }
BKasza 4:14c774cf7ac2 175
BKasza 3:8135a6313648 176 delete request;
BKasza 4:14c774cf7ac2 177 /* Restart timer */
BKasza 4:14c774cf7ac2 178 timeSinceGet.reset();
BKasza 3:8135a6313648 179 }
BKasza 4:14c774cf7ac2 180 /* Send reports periodically */
BKasza 4:14c774cf7ac2 181 if(timeSinceReport.read() > reportTimer) {
BKasza 4:14c774cf7ac2 182 //TODO collect sensor data
BKasza 4:14c774cf7ac2 183 char reportMsg[(USING_TEMPERATURE*2+USING_LIGHT*2+USING_AIR*2+USING_LASER+USING_ACCEL*3+1)*4+2];//+2 because of the 'R' character and the eof
BKasza 4:14c774cf7ac2 184 reportMsg[0] = 'R';
BKasza 4:14c774cf7ac2 185 for(int ii=0;ii<4;ii++){
BKasza 4:14c774cf7ac2 186 #if USING_TEMPERATURE
BKasza 4:14c774cf7ac2 187 reportMsg[1+ii]=*(((uint8_t*)(&(measurements.temperature)))+ii);
BKasza 4:14c774cf7ac2 188 reportMsg[5+ii]=*(((uint8_t*)(&(measurements.humidity)))+ii);
BKasza 4:14c774cf7ac2 189 #endif
BKasza 4:14c774cf7ac2 190 #if USING_LIGHT
BKasza 4:14c774cf7ac2 191 reportMsg[1+8*USING_TEMPERATURE+ii]=*(((uint8_t*)(&(measurements.visible)))+ii);
BKasza 4:14c774cf7ac2 192 reportMsg[5+8*USING_TEMPERATURE+ii]=*(((uint8_t*)(&(measurements.infrared)))+ii);
BKasza 4:14c774cf7ac2 193 #endif
BKasza 4:14c774cf7ac2 194 #if USING_AIR
BKasza 4:14c774cf7ac2 195 reportMsg[1+8*(USING_TEMPERATURE+USING_LIGHT)+ii]=*(((uint8_t*)(&(measurements.co)))+ii);
BKasza 4:14c774cf7ac2 196 reportMsg[5+8*(USING_TEMPERATURE+USING_LIGHT)+ii]=*(((uint8_t*)(&(measurements.tvoc)))+ii);
BKasza 4:14c774cf7ac2 197 #endif
BKasza 4:14c774cf7ac2 198 #if USING_LASER
BKasza 4:14c774cf7ac2 199 reportMsg[1+8*(USING_TEMPERATURE+USING_LIGHT+USING_AIR)+ii]=*(((uint8_t)(&(measurements.distance)))+ii);
BKasza 4:14c774cf7ac2 200 #endif
BKasza 4:14c774cf7ac2 201 #if USING_ACCEL
BKasza 4:14c774cf7ac2 202 reportMsg[1+8*(USING_TEMPERATURE+USING_LIGHT+USING_AIR)+4*USING_LASER+ii]=*(((uint8_t*)(&(measurements.xAcceleration)))+ii);
BKasza 4:14c774cf7ac2 203 reportMsg[1+8*(USING_TEMPERATURE+USING_LIGHT+USING_AIR)+4*USING_LASER+ii]=*(((uint8_t*)(&(measurements.yAcceleration)))+ii);
BKasza 4:14c774cf7ac2 204 reportMsg[1+8*(USING_TEMPERATURE+USING_LIGHT+USING_AIR)+4*USING_LASER+ii]=*(((uint8_t*)(&(measurements.zAcceleration)))+ii);
BKasza 4:14c774cf7ac2 205 #endif
BKasza 4:14c774cf7ac2 206 }
BKasza 4:14c774cf7ac2 207 /*char testMsg[13] = "Hello World!";
BKasza 4:14c774cf7ac2 208 testMsg[5] = (char)0x00;
BKasza 4:14c774cf7ac2 209 httpPost(testMsg, 13);*/
BKasza 4:14c774cf7ac2 210 httpPost(reportMsg, (USING_TEMPERATURE*2+USING_LIGHT*2+USING_AIR*2+USING_LASER+USING_ACCEL*3+1)*4+2);
BKasza 4:14c774cf7ac2 211 /* Restart timer */
BKasza 4:14c774cf7ac2 212 timeSinceReport.reset();
BKasza 4:14c774cf7ac2 213 }
BKasza 3:8135a6313648 214
BKasza 4:14c774cf7ac2 215 /* Check whether or not to send alert */
BKasza 4:14c774cf7ac2 216 uint8_t breach; //0x0f if below lower boundary, 0xf0 if above higher boundary
BKasza 4:14c774cf7ac2 217 uint8_t alertReset;
BKasza 4:14c774cf7ac2 218 for(int ii=0;ii<ALERTLISTSIZE;ii++){
BKasza 4:14c774cf7ac2 219 breach = 0x00;
BKasza 4:14c774cf7ac2 220 alertReset = 0;
BKasza 4:14c774cf7ac2 221 switch(alertList[ii].sensor) {
BKasza 4:14c774cf7ac2 222 #if USING_TEMPERATURE
BKasza 4:14c774cf7ac2 223 case 'T':
BKasza 4:14c774cf7ac2 224 if(!alertList[ii].active) {
BKasza 4:14c774cf7ac2 225 if(measurements.temperature < alertList[ii].lowThreshold) {
BKasza 4:14c774cf7ac2 226 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 227 breach = 0x0f;
BKasza 4:14c774cf7ac2 228 } else if(measurements.temperature > alertList[ii].highThreshold) {
BKasza 4:14c774cf7ac2 229 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 230 breach = 0xf0;
BKasza 4:14c774cf7ac2 231 }
BKasza 4:14c774cf7ac2 232 } else if( measurements.temperature > alertList[ii].lowThreshold
BKasza 4:14c774cf7ac2 233 && measurements.temperature < alertList[ii].highThreshold ) {
BKasza 4:14c774cf7ac2 234 alertList[ii].active = 0;
BKasza 4:14c774cf7ac2 235 alertReset = 1;
BKasza 4:14c774cf7ac2 236 }
BKasza 4:14c774cf7ac2 237 break;
BKasza 4:14c774cf7ac2 238 case 'H':
BKasza 4:14c774cf7ac2 239 if(!alertList[ii].active) {
BKasza 4:14c774cf7ac2 240 if(measurements.humidity < alertList[ii].lowThreshold) {
BKasza 4:14c774cf7ac2 241 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 242 breach = 0x0f;
BKasza 4:14c774cf7ac2 243 } else if(measurements.humidity > alertList[ii].highThreshold) {
BKasza 4:14c774cf7ac2 244 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 245 breach = 0xf0;
BKasza 4:14c774cf7ac2 246 }
BKasza 4:14c774cf7ac2 247 } else if( measurements.humidity > alertList[ii].lowThreshold
BKasza 4:14c774cf7ac2 248 && measurements.humidity < alertList[ii].highThreshold ) {
BKasza 4:14c774cf7ac2 249 alertList[ii].active = 0;
BKasza 4:14c774cf7ac2 250 alertReset = 1;
BKasza 4:14c774cf7ac2 251 }
BKasza 4:14c774cf7ac2 252 break;
BKasza 4:14c774cf7ac2 253 #endif
BKasza 4:14c774cf7ac2 254 #if USING_LIGHT
BKasza 4:14c774cf7ac2 255 case 'V':
BKasza 4:14c774cf7ac2 256 if(!alertList[ii].active) {
BKasza 4:14c774cf7ac2 257 if(measurements.visible < alertList[ii].lowThreshold) {
BKasza 4:14c774cf7ac2 258 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 259 breach = 0x0f;
BKasza 4:14c774cf7ac2 260 } else if(measurements.visible > alertList[ii].highThreshold) {
BKasza 4:14c774cf7ac2 261 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 262 breach = 0xf0;
BKasza 4:14c774cf7ac2 263 }
BKasza 4:14c774cf7ac2 264 } else if( measurements.visible > alertList[ii].lowThreshold
BKasza 4:14c774cf7ac2 265 && measurements.visible < alertList[ii].highThreshold ) {
BKasza 4:14c774cf7ac2 266 alertList[ii].active = 0;
BKasza 4:14c774cf7ac2 267 alertReset = 1;
BKasza 4:14c774cf7ac2 268 }
BKasza 4:14c774cf7ac2 269 break;
BKasza 4:14c774cf7ac2 270 case 'I':
BKasza 4:14c774cf7ac2 271 if(!alertList[ii].active) {
BKasza 4:14c774cf7ac2 272 if(measurements.infrared < alertList[ii].lowThreshold) {
BKasza 4:14c774cf7ac2 273 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 274 breach = 0x0f;
BKasza 4:14c774cf7ac2 275 } else if(measurements.infrared > alertList[ii].highThreshold) {
BKasza 4:14c774cf7ac2 276 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 277 breach = 0xf0;
BKasza 4:14c774cf7ac2 278 }
BKasza 4:14c774cf7ac2 279 } else if( measurements.infrared > alertList[ii].lowThreshold
BKasza 4:14c774cf7ac2 280 && measurements.infrared < alertList[ii].highThreshold ) {
BKasza 4:14c774cf7ac2 281 alertList[ii].active = 0;
BKasza 4:14c774cf7ac2 282 alertReset = 1;
BKasza 4:14c774cf7ac2 283 }
BKasza 4:14c774cf7ac2 284 break;
BKasza 4:14c774cf7ac2 285 #endif
BKasza 4:14c774cf7ac2 286 #if USING_AIR
BKasza 4:14c774cf7ac2 287 case 'C':
BKasza 4:14c774cf7ac2 288 if(!alertList[ii].active) {
BKasza 4:14c774cf7ac2 289 if(measurements.co < alertList[ii].lowThreshold) {
BKasza 4:14c774cf7ac2 290 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 291 breach = 0x0f;
BKasza 4:14c774cf7ac2 292 } else if(measurements.co > alertList[ii].highThreshold) {
BKasza 4:14c774cf7ac2 293 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 294 breach = 0xf0;
BKasza 4:14c774cf7ac2 295 }
BKasza 4:14c774cf7ac2 296 } else if( measurements.co > alertList[ii].lowThreshold
BKasza 4:14c774cf7ac2 297 && measurements.co < alertList[ii].highThreshold ) {
BKasza 4:14c774cf7ac2 298 alertList[ii].active = 0;
BKasza 4:14c774cf7ac2 299 alertReset = 1;
BKasza 4:14c774cf7ac2 300 }
BKasza 4:14c774cf7ac2 301 break;
BKasza 4:14c774cf7ac2 302 case 'O':
BKasza 4:14c774cf7ac2 303 if(!alertList[ii].active) {
BKasza 4:14c774cf7ac2 304 if(measurements.tvoc < alertList[ii].lowThreshold) {
BKasza 4:14c774cf7ac2 305 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 306 breach = 0x0f;
BKasza 4:14c774cf7ac2 307 } else if(measurements.tvoc > alertList[ii].highThreshold) {
BKasza 4:14c774cf7ac2 308 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 309 breach = 0xf0;
BKasza 4:14c774cf7ac2 310 }
BKasza 4:14c774cf7ac2 311 } else if( measurements.tvoc > alertList[ii].lowThreshold
BKasza 4:14c774cf7ac2 312 && measurements.tvoc < alertList[ii].highThreshold ) {
BKasza 4:14c774cf7ac2 313 alertList[ii].active = 0;
BKasza 4:14c774cf7ac2 314 alertReset = 1;
BKasza 4:14c774cf7ac2 315 }
BKasza 4:14c774cf7ac2 316 break;
BKasza 4:14c774cf7ac2 317 #endif
BKasza 4:14c774cf7ac2 318 #if USING_LASER
BKasza 4:14c774cf7ac2 319 case 'D':
BKasza 4:14c774cf7ac2 320 if(!alertList[ii].active) {
BKasza 4:14c774cf7ac2 321 if(measurements.distance < alertList[ii].lowThreshold) {
BKasza 4:14c774cf7ac2 322 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 323 breach = 0x0f;
BKasza 4:14c774cf7ac2 324 } else if(measurements.distance > alertList[ii].highThreshold) {
BKasza 4:14c774cf7ac2 325 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 326 breach = 0xf0;
BKasza 4:14c774cf7ac2 327 }
BKasza 4:14c774cf7ac2 328 } else if( measurements.distance > alertList[ii].lowThreshold
BKasza 4:14c774cf7ac2 329 && measurements.distance < alertList[ii].highThreshold ) {
BKasza 4:14c774cf7ac2 330 alertList[ii].active = 0;
BKasza 4:14c774cf7ac2 331 alertReset = 1;
BKasza 4:14c774cf7ac2 332 }
BKasza 4:14c774cf7ac2 333 break;
BKasza 4:14c774cf7ac2 334 #endif
BKasza 4:14c774cf7ac2 335 #if USING_ACCEL
BKasza 4:14c774cf7ac2 336 case 'X':
BKasza 4:14c774cf7ac2 337 if(!alertList[ii].active) {
BKasza 4:14c774cf7ac2 338 if(measurements.xAcceleration < alertList[ii].lowThreshold) {
BKasza 4:14c774cf7ac2 339 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 340 breach = 0x0f;
BKasza 4:14c774cf7ac2 341 } else if(measurements.xAcceleration > alertList[ii].highThreshold) {
BKasza 4:14c774cf7ac2 342 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 343 breach = 0xf0;
BKasza 4:14c774cf7ac2 344 }
BKasza 4:14c774cf7ac2 345 } else if( measurements.xAcceleration > alertList[ii].lowThreshold
BKasza 4:14c774cf7ac2 346 && measurements.xAcceleration < alertList[ii].highThreshold ) {
BKasza 4:14c774cf7ac2 347 alertList[ii].active = 0;
BKasza 4:14c774cf7ac2 348 alertReset = 1;
BKasza 4:14c774cf7ac2 349 }
BKasza 4:14c774cf7ac2 350 break;
BKasza 4:14c774cf7ac2 351 case 'Y':
BKasza 4:14c774cf7ac2 352 if(!alertList[ii].active) {
BKasza 4:14c774cf7ac2 353 if(measurements.yAcceleration < alertList[ii].lowThreshold) {
BKasza 4:14c774cf7ac2 354 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 355 breach = 0x0f;
BKasza 4:14c774cf7ac2 356 } else if(measurements.yAcceleration > alertList[ii].highThreshold) {
BKasza 4:14c774cf7ac2 357 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 358 breach = 0xf0;
BKasza 4:14c774cf7ac2 359 }
BKasza 4:14c774cf7ac2 360 } else if( measurements.yAcceleration > alertList[ii].lowThreshold
BKasza 4:14c774cf7ac2 361 && measurements.yAcceleration < alertList[ii].highThreshold ) {
BKasza 4:14c774cf7ac2 362 alertList[ii].active = 0;
BKasza 4:14c774cf7ac2 363 alertReset = 1;
BKasza 4:14c774cf7ac2 364 }
BKasza 4:14c774cf7ac2 365 break;
BKasza 4:14c774cf7ac2 366 case 'Z':
BKasza 4:14c774cf7ac2 367 if(!alertList[ii].active) {
BKasza 4:14c774cf7ac2 368 if(measurements.zAcceleration < alertList[ii].lowThreshold) {
BKasza 4:14c774cf7ac2 369 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 370 breach = 0x0f;
BKasza 4:14c774cf7ac2 371 } else if(measurements.zAcceleration > alertList[ii].highThreshold) {
BKasza 4:14c774cf7ac2 372 alertList[ii].active = 1;
BKasza 4:14c774cf7ac2 373 breach = 0xf0;
BKasza 4:14c774cf7ac2 374 }
BKasza 4:14c774cf7ac2 375 } else if( measurements.zAcceleration > alertList[ii].lowThreshold
BKasza 4:14c774cf7ac2 376 && measurements.zAcceleration < alertList[ii].highThreshold ) {
BKasza 4:14c774cf7ac2 377 alertList[ii].active = 0;
BKasza 4:14c774cf7ac2 378 alertReset = 1;
BKasza 4:14c774cf7ac2 379 }
BKasza 4:14c774cf7ac2 380 break;
BKasza 4:14c774cf7ac2 381 #endif
BKasza 4:14c774cf7ac2 382 default:
BKasza 4:14c774cf7ac2 383 break;
BKasza 4:14c774cf7ac2 384 }
BKasza 4:14c774cf7ac2 385 if(breach != 0) {
BKasza 4:14c774cf7ac2 386 char msgBuff[5] = {'A', 'S', (char)alertList[ii].id, (char)breach};
BKasza 4:14c774cf7ac2 387 httpPost(msgBuff, 5);
BKasza 4:14c774cf7ac2 388 } else if(alertReset) {
BKasza 4:14c774cf7ac2 389 char msgBuff[4] = {'A', 'R', (char)alertList[ii].id};
BKasza 4:14c774cf7ac2 390 httpPost(msgBuff, 4);
BKasza 4:14c774cf7ac2 391 }
BKasza 3:8135a6313648 392 }
BKasza 3:8135a6313648 393 }
Jenny Plunkett 0:c5b042cf8162 394
Jenny Plunkett 0:c5b042cf8162 395 }