Frank Vannieuwkerke / Mbed 2 deprecated Wi-Go_IOT_Demo

Dependencies:   mbed CC3000_Hostdriver TEMT6200 TSI Wi-Go_eCompass_Lib_V3 WiGo_BattCharger

Fork of CC3000_Simple_Socket by Frank Vannieuwkerke

Committer:
frankvnk
Date:
Thu Oct 17 17:56:29 2013 +0000
Revision:
9:5d431f47ac93
Parent:
7:0f3095de6ea5
Child:
10:6498ecb9f5c7
webserver - Page refresh stall fixed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frankvnk 3:405462258899 1 #include "mbed.h"
frankvnk 3:405462258899 2 #include "doTCPIP.h"
frankvnk 3:405462258899 3 #include "TSISensor.h"
frankvnk 3:405462258899 4 #include "TEMT6200.h"
frankvnk 3:405462258899 5 #include "MMA8451Q.h"
frankvnk 3:405462258899 6 #include "MAG3110.h"
frankvnk 3:405462258899 7 #include "MPL3115A2.h"
frankvnk 3:405462258899 8 #include "demo.h"
frankvnk 3:405462258899 9 #include "run_exosite.h"
frankvnk 3:405462258899 10
frankvnk 9:5d431f47ac93 11 //#define NO_LIB
frankvnk 9:5d431f47ac93 12 #ifndef NO_LIB
frankvnk 9:5d431f47ac93 13 #include "WiGo_BattCharger.h"
frankvnk 9:5d431f47ac93 14 #endif
frankvnk 9:5d431f47ac93 15
frankvnk 9:5d431f47ac93 16
frankvnk 3:405462258899 17 #define FCOUNTSPERG 4096.0F // sensor specific: MMA8451 provide 4096 counts / g in 2g mode
frankvnk 3:405462258899 18 #define FCOUNTSPERUT 10.0F // sensor specific: MAG3110 provide 10 counts / uT
frankvnk 3:405462258899 19
frankvnk 9:5d431f47ac93 20 #define BATT_0 0.53
frankvnk 9:5d431f47ac93 21 #define BATT_100 0.63
frankvnk 9:5d431f47ac93 22
frankvnk 3:405462258899 23 // Serial USB port
frankvnk 3:405462258899 24 Serial pc(USBTX, USBRX);
frankvnk 3:405462258899 25
frankvnk 3:405462258899 26 // Slide sensor
frankvnk 3:405462258899 27 TSISensor tsi;
frankvnk 3:405462258899 28
frankvnk 3:405462258899 29 // Systick
frankvnk 3:405462258899 30 Ticker systick;
frankvnk 3:405462258899 31
frankvnk 3:405462258899 32 // Ambient light sensor : PTD5 = enable, PTB0 = analog input
frankvnk 3:405462258899 33 TEMT6200 ambi(PTD5, PTB0);
frankvnk 3:405462258899 34
frankvnk 3:405462258899 35 //Wi-Go battery charger control
frankvnk 9:5d431f47ac93 36 #ifdef NO_LIB
frankvnk 9:5d431f47ac93 37 DigitalOut PWR_EN1(PTB2);
frankvnk 9:5d431f47ac93 38 DigitalOut PWR_EN2(PTB3);
frankvnk 9:5d431f47ac93 39 DigitalOut PWR_SNSEN(PTC2);
frankvnk 9:5d431f47ac93 40 AnalogIn PWR_SENSE(PTB1);
frankvnk 9:5d431f47ac93 41 #else
frankvnk 9:5d431f47ac93 42 WiGo_BattCharger Batt(CHRG_EN1, CHRG_EN2, CHRG_SNS_EN, CHRG_SNS, CHRG_POK, CHRG_CHG);
frankvnk 9:5d431f47ac93 43 #endif
frankvnk 3:405462258899 44 // Accelerometer
frankvnk 3:405462258899 45 #define MMA8451_I2C_ADDRESS (0x1d<<1)
frankvnk 3:405462258899 46 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
frankvnk 3:405462258899 47
frankvnk 3:405462258899 48 // Magnetometer
frankvnk 3:405462258899 49 MAG3110 mag(PTE0, PTE1);
frankvnk 3:405462258899 50
frankvnk 3:405462258899 51 // altimeter-Pressure-Temperature (apt)
frankvnk 3:405462258899 52 #define MPL3115A2_I2C_ADDRESS (0x60<<1)
frankvnk 3:405462258899 53 MPL3115A2 apt( PTE0, PTE1, MPL3115A2_I2C_ADDRESS);
frankvnk 3:405462258899 54
frankvnk 3:405462258899 55
frankvnk 3:405462258899 56 int secondFlag;
frankvnk 3:405462258899 57 int HsecondFlag;
frankvnk 3:405462258899 58 unsigned int seconds;
frankvnk 3:405462258899 59 unsigned int compass_type;
frankvnk 3:405462258899 60 unsigned short adc_sample3;
frankvnk 3:405462258899 61 float fcountperg = 1.0F / FCOUNTSPERG;
frankvnk 3:405462258899 62 float fcountperut = 1.0F / FCOUNTSPERUT;
frankvnk 3:405462258899 63
frankvnk 3:405462258899 64 void accel_read(void)
frankvnk 3:405462258899 65 {
frankvnk 3:405462258899 66 signed short resultx, resulty, resultz;
frankvnk 3:405462258899 67 if(acc.isDataAvailable())
frankvnk 3:405462258899 68 {
frankvnk 3:405462258899 69 acc.getAccRawX(&resultx);
frankvnk 3:405462258899 70 acc.getAccRawY(&resulty);
frankvnk 3:405462258899 71 acc.getAccRawZ(&resultz);
frankvnk 3:405462258899 72 if(compass_type == NED_COMPASS)
frankvnk 3:405462258899 73 {
frankvnk 3:405462258899 74 axis6.acc_x = resultx;
frankvnk 3:405462258899 75 axis6.acc_y = -1 * resulty; // multiple by -1 to compensate for PCB layout
frankvnk 3:405462258899 76 axis6.acc_z = resultz;
frankvnk 3:405462258899 77 }
frankvnk 3:405462258899 78 if(compass_type == ANDROID_COMPASS)
frankvnk 3:405462258899 79 {
frankvnk 3:405462258899 80 axis6.acc_x = resulty; //
frankvnk 3:405462258899 81 axis6.acc_y = -1 * resultx;
frankvnk 3:405462258899 82 axis6.acc_z = resultz;
frankvnk 3:405462258899 83 }
frankvnk 3:405462258899 84 if(compass_type == WINDOWS_COMPASS)
frankvnk 3:405462258899 85 {
frankvnk 3:405462258899 86 axis6.acc_x = -1 * resulty; //
frankvnk 3:405462258899 87 axis6.acc_y = resultx;
frankvnk 3:405462258899 88 axis6.acc_z = resultz;
frankvnk 3:405462258899 89 }
frankvnk 3:405462258899 90 axis6.fax = axis6.acc_x;
frankvnk 3:405462258899 91 axis6.fay = axis6.acc_y;
frankvnk 3:405462258899 92 axis6.faz = axis6.acc_z;
frankvnk 3:405462258899 93 axis6.fGax = axis6.fax * fcountperg;
frankvnk 3:405462258899 94 axis6.fGay = axis6.fay * fcountperg;
frankvnk 3:405462258899 95 axis6.fGaz = axis6.faz * fcountperg;
frankvnk 3:405462258899 96 }
frankvnk 3:405462258899 97 }
frankvnk 3:405462258899 98
frankvnk 3:405462258899 99 void readTempAlt(void) // We don't use the fractional data
frankvnk 3:405462258899 100 {
frankvnk 3:405462258899 101 unsigned char raw_data[5];
frankvnk 3:405462258899 102 if(apt.getAllDataRaw(&raw_data[0]))
frankvnk 3:405462258899 103 {
frankvnk 3:405462258899 104 axis6.temp = raw_data[3];
frankvnk 3:405462258899 105 axis6.alt = ((raw_data[0] << 8) | raw_data[1]);
frankvnk 3:405462258899 106
frankvnk 3:405462258899 107 }
frankvnk 3:405462258899 108 }
frankvnk 3:405462258899 109
frankvnk 3:405462258899 110 void readCompass( void )
frankvnk 3:405462258899 111 {
frankvnk 3:405462258899 112 if(compass_type == NED_COMPASS)
frankvnk 3:405462258899 113 {
frankvnk 3:405462258899 114 axis6.mag_y = mag.readVal(MAG_OUT_X_MSB); // x & y swapped to compenste for PCB layout
frankvnk 3:405462258899 115 axis6.mag_x = mag.readVal(MAG_OUT_Y_MSB); //
frankvnk 3:405462258899 116 axis6.mag_z = mag.readVal(MAG_OUT_Z_MSB); //
frankvnk 3:405462258899 117 }
frankvnk 3:405462258899 118 if(compass_type == ANDROID_COMPASS)
frankvnk 3:405462258899 119 {
frankvnk 3:405462258899 120 axis6.mag_x = mag.readVal(MAG_OUT_X_MSB); //
frankvnk 3:405462258899 121 axis6.mag_y = mag.readVal(MAG_OUT_Y_MSB); //
frankvnk 3:405462258899 122 axis6.mag_z = -1 * mag.readVal(MAG_OUT_Z_MSB); // negate to reverse axis of Z to conform to Android coordinate system
frankvnk 3:405462258899 123 }
frankvnk 3:405462258899 124 if(compass_type == WINDOWS_COMPASS)
frankvnk 3:405462258899 125 {
frankvnk 3:405462258899 126 axis6.mag_x = mag.readVal(MAG_OUT_X_MSB); //
frankvnk 3:405462258899 127 axis6.mag_y = mag.readVal(MAG_OUT_Y_MSB); //
frankvnk 3:405462258899 128 axis6.mag_z = -1 * mag.readVal(MAG_OUT_Z_MSB); //
frankvnk 3:405462258899 129 }
frankvnk 3:405462258899 130 axis6.fmx = axis6.mag_x;
frankvnk 3:405462258899 131 axis6.fmy = axis6.mag_y;
frankvnk 3:405462258899 132 axis6.fmz = axis6.mag_z;
frankvnk 3:405462258899 133 axis6.fUTmx = axis6.fmx * fcountperut;
frankvnk 3:405462258899 134 axis6.fUTmy = axis6.fmy * fcountperut;
frankvnk 3:405462258899 135 axis6.fUTmz = axis6.fmz * fcountperut;
frankvnk 3:405462258899 136 }
frankvnk 3:405462258899 137
frankvnk 3:405462258899 138 void set_dir_LED(void)
frankvnk 3:405462258899 139 {
frankvnk 3:405462258899 140 GREEN_OFF;
frankvnk 3:405462258899 141 RED_OFF;
frankvnk 3:405462258899 142 BLUE_OFF;
frankvnk 3:405462258899 143
frankvnk 3:405462258899 144 if((axis6.compass >= 353) || (axis6.compass <= 7))
frankvnk 3:405462258899 145 {
frankvnk 3:405462258899 146 GREEN_ON;
frankvnk 3:405462258899 147 }
frankvnk 3:405462258899 148 else
frankvnk 3:405462258899 149 {
frankvnk 3:405462258899 150 GREEN_OFF;
frankvnk 3:405462258899 151 }
frankvnk 3:405462258899 152 if(((axis6.compass >= 348) && (axis6.compass <= 357)) || ((axis6.compass >= 3) && (axis6.compass <= 12)))
frankvnk 3:405462258899 153 {
frankvnk 3:405462258899 154 BLUE_ON;
frankvnk 3:405462258899 155 }
frankvnk 3:405462258899 156 else
frankvnk 3:405462258899 157 {
frankvnk 3:405462258899 158 BLUE_OFF;
frankvnk 3:405462258899 159 }
frankvnk 3:405462258899 160 if((axis6.compass >= 348) || (axis6.compass <= 12)) return;
frankvnk 3:405462258899 161 if(((axis6.compass >= 268) && (axis6.compass <= 272)) || ((axis6.compass >= 88) && (axis6.compass <= 92)))
frankvnk 3:405462258899 162 {
frankvnk 3:405462258899 163 RED_ON;
frankvnk 3:405462258899 164 return;
frankvnk 3:405462258899 165 }
frankvnk 3:405462258899 166 if((axis6.compass >= 178) && (axis6.compass <= 182))
frankvnk 3:405462258899 167 {
frankvnk 3:405462258899 168 BLUE_ON;
frankvnk 3:405462258899 169 RED_ON;
frankvnk 3:405462258899 170 return;
frankvnk 3:405462258899 171 }
frankvnk 3:405462258899 172 }
frankvnk 3:405462258899 173
frankvnk 9:5d431f47ac93 174 #ifdef NO_LIB
frankvnk 9:5d431f47ac93 175 int readBatt( void )
frankvnk 9:5d431f47ac93 176 {
frankvnk 9:5d431f47ac93 177 float returnValue = 0;
frankvnk 9:5d431f47ac93 178 PWR_SNSEN = 0;
frankvnk 9:5d431f47ac93 179 float batt_level = PWR_SENSE.read();
frankvnk 9:5d431f47ac93 180 PWR_SNSEN = 1;
frankvnk 9:5d431f47ac93 181
frankvnk 9:5d431f47ac93 182 returnValue = ((batt_level - BATT_0) * (BATT_100 - BATT_0)) * 10000;
frankvnk 9:5d431f47ac93 183
frankvnk 9:5d431f47ac93 184 if( returnValue > 100 )
frankvnk 9:5d431f47ac93 185 returnValue = 100;
frankvnk 9:5d431f47ac93 186
frankvnk 9:5d431f47ac93 187 if( returnValue < 0 )
frankvnk 9:5d431f47ac93 188 returnValue = 0;
frankvnk 9:5d431f47ac93 189
frankvnk 9:5d431f47ac93 190 return (int)returnValue;
frankvnk 9:5d431f47ac93 191 }
frankvnk 9:5d431f47ac93 192 #endif
frankvnk 9:5d431f47ac93 193
frankvnk 3:405462258899 194 void SysTick_Handler(void)
frankvnk 3:405462258899 195 {
frankvnk 3:405462258899 196 static unsigned int ttt = 1;
frankvnk 3:405462258899 197 int ts;
frankvnk 3:405462258899 198 ts = ttt & 0x3;
frankvnk 3:405462258899 199 if(ts == 2) readCompass();
frankvnk 3:405462258899 200 if(ts == 1) accel_read();
frankvnk 3:405462258899 201 if(ts == 3)
frankvnk 3:405462258899 202 {
frankvnk 3:405462258899 203 run_eCompass();
frankvnk 3:405462258899 204 newData = 1; // a general purpose flag for things that need to synch to the ISR
frankvnk 3:405462258899 205 axis6.timestamp++;
frankvnk 3:405462258899 206 if(!server_running) set_dir_LED(); // Set the LEDs based on direction when nothing else is usng them
frankvnk 3:405462258899 207 }
frankvnk 9:5d431f47ac93 208 if(ttt == 20)//100)
frankvnk 3:405462258899 209 {
frankvnk 3:405462258899 210 LED_D1_ON;
frankvnk 3:405462258899 211 if(seconds && (seconds < 15)) calibrate_eCompass();
frankvnk 3:405462258899 212 readTempAlt();
frankvnk 3:405462258899 213 axis6.light = ambi.readRaw(); // Light Sensor
frankvnk 3:405462258899 214 HsecondFlag = 1; // A general purpose flag for things that need to happen every 500ms
frankvnk 3:405462258899 215 }
frankvnk 9:5d431f47ac93 216 if(ttt >= 40)//200)
frankvnk 3:405462258899 217 {
frankvnk 3:405462258899 218 LED_D1_OFF;
frankvnk 3:405462258899 219 ttt = 1;
frankvnk 3:405462258899 220 calibrate_eCompass();
frankvnk 9:5d431f47ac93 221 #ifdef NO_LIB
frankvnk 9:5d431f47ac93 222 // adc_sample3 = readBatt();
frankvnk 9:5d431f47ac93 223 #else
frankvnk 3:405462258899 224 Batt.sense_en(1);
frankvnk 3:405462258899 225 adc_sample3 = Batt.level();
frankvnk 3:405462258899 226 Batt.sense_en(0);
frankvnk 9:5d431f47ac93 227 #endif
frankvnk 3:405462258899 228 secondFlag = 1; // A general purpose flag for things that need to happen once a second
frankvnk 3:405462258899 229 HsecondFlag = 1;
frankvnk 3:405462258899 230 seconds++;
frankvnk 3:405462258899 231 if(!(seconds & 0x1F)) do_mDNS = 1;
frankvnk 3:405462258899 232 } else ttt++;
frankvnk 3:405462258899 233 }
frankvnk 3:405462258899 234
frankvnk 3:405462258899 235 int main()
frankvnk 3:405462258899 236 {
frankvnk 3:405462258899 237 int loop;
frankvnk 3:405462258899 238 int temp;
frankvnk 7:0f3095de6ea5 239 unsigned int oldseconds;
frankvnk 3:405462258899 240
frankvnk 3:405462258899 241 // set current to 500mA since we're turning on the Wi-Fi
frankvnk 9:5d431f47ac93 242 #ifdef NO_LIB
frankvnk 9:5d431f47ac93 243 PWR_EN1 = 0;
frankvnk 9:5d431f47ac93 244 PWR_EN2 = 1;
frankvnk 9:5d431f47ac93 245 PWR_SNSEN = 1;
frankvnk 9:5d431f47ac93 246 #else
frankvnk 3:405462258899 247 Batt.init(CHRG_500MA);
frankvnk 9:5d431f47ac93 248 #endif
frankvnk 3:405462258899 249
frankvnk 3:405462258899 250 // Set MPL3115 to altimeter mode - oversample rate = 128
frankvnk 3:405462258899 251 apt.Oversample_Ratio(OVERSAMPLE_RATIO_128);
frankvnk 3:405462258899 252 apt.Altimeter_Mode();
frankvnk 3:405462258899 253
frankvnk 3:405462258899 254 //Set baudrate to 115200 instead of the default 9600
frankvnk 3:405462258899 255 pc.baud (115200);
frankvnk 3:405462258899 256
frankvnk 9:5d431f47ac93 257 initLEDs();
frankvnk 9:5d431f47ac93 258 Init_HostDriver();
frankvnk 9:5d431f47ac93 259
frankvnk 3:405462258899 260 printf("\n\n\nWi-Go Master V3.3\n");
frankvnk 3:405462258899 261 printf("Firmware build version: %s, %s\n", __DATE__, __TIME__);
frankvnk 3:405462258899 262 // Initalize global variables
frankvnk 3:405462258899 263 axis6.packet_id = 1;
frankvnk 3:405462258899 264 axis6.timestamp = 0;
frankvnk 3:405462258899 265 axis6.acc_x = 0;
frankvnk 3:405462258899 266 axis6.acc_y = 0;
frankvnk 3:405462258899 267 axis6.acc_z = 0;
frankvnk 3:405462258899 268 axis6.mag_x = 0;
frankvnk 3:405462258899 269 axis6.mag_y = 0;
frankvnk 3:405462258899 270 axis6.mag_z = 0;
frankvnk 3:405462258899 271 axis6.roll = 0;
frankvnk 3:405462258899 272 axis6.pitch = 0;
frankvnk 3:405462258899 273 axis6.yaw = 0;
frankvnk 3:405462258899 274 axis6.compass = 0;
frankvnk 3:405462258899 275 axis6.alt = 0;
frankvnk 3:405462258899 276 axis6.temp = 0;
frankvnk 3:405462258899 277 axis6.light = 0;
frankvnk 3:405462258899 278 compass_type = ANDROID_COMPASS;
frankvnk 3:405462258899 279 seconds = 0;
frankvnk 3:405462258899 280 runSmartConfig = 0;
frankvnk 3:405462258899 281 ulSmartConfigFinished = 0;
frankvnk 3:405462258899 282 server_running = 1;
frankvnk 3:405462258899 283 newData = 0;
frankvnk 3:405462258899 284 secondFlag = 0;
frankvnk 3:405462258899 285 HsecondFlag = 0;
frankvnk 3:405462258899 286 socket_active_status = 0xFFFF;
frankvnk 3:405462258899 287 socket_active_status = SOCKET_STATUS_INIT_VAL;
frankvnk 3:405462258899 288 ForceFixedSSID = 0;
frankvnk 3:405462258899 289 GREEN_ON;
frankvnk 3:405462258899 290
frankvnk 3:405462258899 291 // Read the Magnetometer a couple of times to initalize
frankvnk 3:405462258899 292 for(loop=0 ; loop < 5 ; loop++)
frankvnk 3:405462258899 293 {
frankvnk 3:405462258899 294 while(!(mag.readReg(MAG_DR_STATUS) && 0x08));
frankvnk 3:405462258899 295 readCompass();
frankvnk 3:405462258899 296 }
frankvnk 3:405462258899 297
frankvnk 3:405462258899 298 init_eCompass();
frankvnk 3:405462258899 299
frankvnk 3:405462258899 300 // Start 5ms Ticker
frankvnk 9:5d431f47ac93 301 systick.attach(&SysTick_Handler, 0.025);
frankvnk 3:405462258899 302
frankvnk 3:405462258899 303 runSmartConfig = 0;
frankvnk 3:405462258899 304 ulSmartConfigFinished = 0;
frankvnk 3:405462258899 305 server_running = 1;
frankvnk 3:405462258899 306 newData = 0;
frankvnk 3:405462258899 307 socket_active_status = SOCKET_STATUS_INIT_VAL;
frankvnk 3:405462258899 308
frankvnk 3:405462258899 309 GREEN_ON;
frankvnk 3:405462258899 310
frankvnk 3:405462258899 311 // Trigger a WLAN device
frankvnk 3:405462258899 312 wlan_start(0);
frankvnk 3:405462258899 313 nvmem_read( NVMEM_USER_FILE_1_FILEID, sizeof(userFS), 0, (unsigned char *) &userFS);
frankvnk 3:405462258899 314 nvmem_get_mac_address(myMAC);
frankvnk 3:405462258899 315 print_mac();
frankvnk 3:405462258899 316 wlan_stop();
frankvnk 3:405462258899 317 printf("FTC %i\n",userFS.FTC);
frankvnk 3:405462258899 318 printf("PP_version %i.%i\n",userFS.PP_version[0], userFS.PP_version[1]);
frankvnk 3:405462258899 319 printf("SERV_PACK %i.%i\n",userFS.SERV_PACK[0], userFS.SERV_PACK[1]);
frankvnk 3:405462258899 320 printf("DRV_VER %i.%i.%i\n",userFS.DRV_VER[0], userFS.DRV_VER[1], userFS.DRV_VER[2]);
frankvnk 3:405462258899 321 printf("FW_VER %i.%i.%i\n",userFS.FW_VER[0], userFS.FW_VER[1], userFS.FW_VER[2]);
frankvnk 3:405462258899 322
frankvnk 3:405462258899 323 if(!userFS.FTC && !ForceFixedSSID)
frankvnk 3:405462258899 324 {
frankvnk 3:405462258899 325 do_FTC(); // Call First Time Configuration if SmartConfig has not been run, and fixed SSID is not enabled
frankvnk 9:5d431f47ac93 326 while(1)
frankvnk 9:5d431f47ac93 327 {
frankvnk 9:5d431f47ac93 328 printf("Reset system\n");
frankvnk 9:5d431f47ac93 329 GREEN_ON;
frankvnk 9:5d431f47ac93 330 secondFlag = 0;
frankvnk 9:5d431f47ac93 331 while(!secondFlag);
frankvnk 9:5d431f47ac93 332 secondFlag = 0;
frankvnk 9:5d431f47ac93 333 GREEN_OFF;
frankvnk 9:5d431f47ac93 334 while(!secondFlag);
frankvnk 9:5d431f47ac93 335 }
frankvnk 3:405462258899 336 }
frankvnk 3:405462258899 337 server_running = 1;
frankvnk 3:405462258899 338
frankvnk 3:405462258899 339 // Wait for slider touch
frankvnk 6:7c06ad22f206 340 printf("\nUse the slider to start an application.\n");
frankvnk 6:7c06ad22f206 341 printf("Releasing the slider for more than 3 seconds\nwill start the chosen application.\n");
frankvnk 7:0f3095de6ea5 342 printf("Touching the slider within the 3 seconds\ntimeframe allows you to re-select an application.\n");
frankvnk 6:7c06ad22f206 343 printf("\nThe RGB LED indicates the selection:\n");
frankvnk 3:405462258899 344 printf("PURPLE - Force SmartConfig.\n");
frankvnk 3:405462258899 345 printf("BLUE - Webserver displaying live sensor data.\n");
frankvnk 3:405462258899 346 printf("RED - Exosite data client.\n");
frankvnk 3:405462258899 347 printf("GREEN - Android sensor fusion app.\n");
frankvnk 3:405462258899 348 while( tsi.readPercentage() == 0 )
frankvnk 3:405462258899 349 {
frankvnk 3:405462258899 350 RED_ON;
frankvnk 3:405462258899 351 wait(0.2);
frankvnk 3:405462258899 352 RED_OFF;
frankvnk 3:405462258899 353 wait(0.2);
frankvnk 3:405462258899 354 }
frankvnk 3:405462258899 355 RED_OFF
frankvnk 3:405462258899 356
frankvnk 7:0f3095de6ea5 357 oldseconds = seconds;
frankvnk 3:405462258899 358 loop = 100;
frankvnk 3:405462258899 359 temp = 0;
frankvnk 3:405462258899 360 // Read slider as long as it is touched.
frankvnk 6:7c06ad22f206 361 // If released for more than 3 seconds, exit
frankvnk 7:0f3095de6ea5 362 while((loop != 0) || ((seconds - oldseconds) < 3))
frankvnk 3:405462258899 363 {
frankvnk 3:405462258899 364 loop = tsi.readPercentage() * 100;
frankvnk 3:405462258899 365 if(loop != 0)
frankvnk 3:405462258899 366 {
frankvnk 7:0f3095de6ea5 367 oldseconds = seconds;
frankvnk 3:405462258899 368 temp = loop;
frankvnk 3:405462258899 369 }
frankvnk 3:405462258899 370 if(temp > 75)
frankvnk 3:405462258899 371 {
frankvnk 3:405462258899 372 BLUE_ON;
frankvnk 3:405462258899 373 RED_ON;
frankvnk 3:405462258899 374 GREEN_OFF;
frankvnk 3:405462258899 375 }
frankvnk 3:405462258899 376 else if(temp > 50)
frankvnk 3:405462258899 377 {
frankvnk 3:405462258899 378 BLUE_ON;
frankvnk 3:405462258899 379 GREEN_OFF;
frankvnk 3:405462258899 380 RED_OFF;
frankvnk 3:405462258899 381 }
frankvnk 3:405462258899 382 else if(temp > 25)
frankvnk 3:405462258899 383 {
frankvnk 3:405462258899 384 BLUE_OFF;
frankvnk 3:405462258899 385 GREEN_OFF;
frankvnk 3:405462258899 386 RED_ON;
frankvnk 3:405462258899 387 }
frankvnk 3:405462258899 388 else
frankvnk 3:405462258899 389 {
frankvnk 3:405462258899 390 BLUE_OFF;
frankvnk 3:405462258899 391 GREEN_ON;
frankvnk 3:405462258899 392 RED_OFF;
frankvnk 3:405462258899 393 }
frankvnk 3:405462258899 394 }
frankvnk 3:405462258899 395 BLUE_OFF;
frankvnk 3:405462258899 396 GREEN_OFF;
frankvnk 3:405462258899 397 RED_OFF;
frankvnk 3:405462258899 398
frankvnk 3:405462258899 399 server_running = 0;
frankvnk 3:405462258899 400 // Execute the user selected application
frankvnk 3:405462258899 401 if(temp > 75)
frankvnk 3:405462258899 402 { // Force SmartCOnfig
frankvnk 3:405462258899 403 server_running = 1;
frankvnk 3:405462258899 404 runSmartConfig = 1;
frankvnk 3:405462258899 405 initTCPIP();
frankvnk 3:405462258899 406 server_running = 1;
frankvnk 3:405462258899 407 RED_OFF;
frankvnk 3:405462258899 408 GREEN_OFF;
frankvnk 3:405462258899 409 BLUE_OFF;
frankvnk 3:405462258899 410 while(1)
frankvnk 3:405462258899 411 {
frankvnk 3:405462258899 412 printf("Reset system\n");
frankvnk 3:405462258899 413 GREEN_ON;
frankvnk 3:405462258899 414 secondFlag = 0;
frankvnk 3:405462258899 415 while(!secondFlag);
frankvnk 3:405462258899 416 secondFlag = 0;
frankvnk 3:405462258899 417 GREEN_OFF;
frankvnk 3:405462258899 418 while(!secondFlag);
frankvnk 3:405462258899 419 }
frankvnk 3:405462258899 420 } else SmartConfigProfilestored = SMART_CONFIG_SET;
frankvnk 3:405462258899 421
frankvnk 3:405462258899 422 RED_OFF;
frankvnk 3:405462258899 423 GREEN_OFF;
frankvnk 3:405462258899 424 BLUE_OFF;
frankvnk 3:405462258899 425
frankvnk 3:405462258899 426 // Start the selected application
frankvnk 3:405462258899 427 if(temp > 50)
frankvnk 3:405462258899 428 {
frankvnk 3:405462258899 429 compass_type = NED_COMPASS;
frankvnk 3:405462258899 430 init_eCompass();
frankvnk 3:405462258899 431 seconds = 0;
frankvnk 6:7c06ad22f206 432 demo_wifi_main(); // Run Webserver
frankvnk 3:405462258899 433 }
frankvnk 3:405462258899 434 if(temp > 25)
frankvnk 3:405462258899 435 {
frankvnk 3:405462258899 436 compass_type = NED_COMPASS;
frankvnk 3:405462258899 437 init_eCompass();
frankvnk 3:405462258899 438 seconds = 0;
frankvnk 6:7c06ad22f206 439 run_exosite(); // Send data to Exosite
frankvnk 3:405462258899 440 }
frankvnk 3:405462258899 441 init_eCompass();
frankvnk 3:405462258899 442 seconds = 0;
frankvnk 6:7c06ad22f206 443 runTCPIPserver(); // Run TCP/IP Connection to host
frankvnk 3:405462258899 444 }
frankvnk 3:405462258899 445
frankvnk 9:5d431f47ac93 446
frankvnk 9:5d431f47ac93 447