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.
Dependencies: mbed CC3000_Hostdriver TEMT6200 TSI Wi-Go_eCompass_Lib_V3 WiGo_BattCharger
Fork of CC3000_Simple_Socket by
main.cpp@9:5d431f47ac93, 2013-10-17 (annotated)
- 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?
| User | Revision | Line number | New 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 |
