Laser Communication Protocol developed during HEPTA-Sat training in Bulgaria, October 2017.

Dependencies:   Hepta9axis HeptaBattery HeptaCamera_GPS HeptaTemp HeptaXbee SDFileSystem mbed

Committer:
stoilivanov
Date:
Sat Nov 11 14:34:04 2017 +0000
Revision:
0:95bf84c286f5
Child:
1:f7206e74c970
Initial version.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stoilivanov 0:95bf84c286f5 1 #include "mbed.h"
stoilivanov 0:95bf84c286f5 2 #include "SDFileSystem.h"
stoilivanov 0:95bf84c286f5 3 #include "HeptaXbee.h"
stoilivanov 0:95bf84c286f5 4 #include "HeptaCamera_GPS.h"
stoilivanov 0:95bf84c286f5 5 #include "Hepta9axis.h"
stoilivanov 0:95bf84c286f5 6 #include "HeptaTemp.h"
stoilivanov 0:95bf84c286f5 7 #include "HeptaBattery.h"
stoilivanov 0:95bf84c286f5 8 #include <stdio.h>
stoilivanov 0:95bf84c286f5 9 #include <string.h>
stoilivanov 0:95bf84c286f5 10 #include <stdlib.h>
stoilivanov 0:95bf84c286f5 11
stoilivanov 0:95bf84c286f5 12
stoilivanov 0:95bf84c286f5 13 Serial pc(USBTX,USBRX);
stoilivanov 0:95bf84c286f5 14 SDFileSystem sd(p5, p6, p7, p8, "sd");
stoilivanov 0:95bf84c286f5 15 HeptaXbee xbee(p9,p10);
stoilivanov 0:95bf84c286f5 16 HeptaCamera_GPS cam_gps(p13, p14,p25,p24);
stoilivanov 0:95bf84c286f5 17 Hepta9axis n_axis(p28,p27,0xD0,0x18);
stoilivanov 0:95bf84c286f5 18 HeptaTemp temp(p17);
stoilivanov 0:95bf84c286f5 19 AnalogIn light(p18);
stoilivanov 0:95bf84c286f5 20 PwmOut led(p21);
stoilivanov 0:95bf84c286f5 21 HeptaBattery battery(p16,p26);
stoilivanov 0:95bf84c286f5 22 DigitalOut myled(LED1);
stoilivanov 0:95bf84c286f5 23
stoilivanov 0:95bf84c286f5 24 typedef struct {
stoilivanov 0:95bf84c286f5 25
stoilivanov 0:95bf84c286f5 26 char* morse;
stoilivanov 0:95bf84c286f5 27
stoilivanov 0:95bf84c286f5 28 char* ascii;
stoilivanov 0:95bf84c286f5 29
stoilivanov 0:95bf84c286f5 30 } morse_table_t;
stoilivanov 0:95bf84c286f5 31
stoilivanov 0:95bf84c286f5 32
stoilivanov 0:95bf84c286f5 33 int main()
stoilivanov 0:95bf84c286f5 34
stoilivanov 0:95bf84c286f5 35 {
stoilivanov 0:95bf84c286f5 36
stoilivanov 0:95bf84c286f5 37 morse_table_t table[] = { {".-", "A"},
stoilivanov 0:95bf84c286f5 38
stoilivanov 0:95bf84c286f5 39 {"-...", "B"},
stoilivanov 0:95bf84c286f5 40
stoilivanov 0:95bf84c286f5 41 {"-.-.", "C"},
stoilivanov 0:95bf84c286f5 42
stoilivanov 0:95bf84c286f5 43 {"-.." , "D"},
stoilivanov 0:95bf84c286f5 44
stoilivanov 0:95bf84c286f5 45 {"." , "E"},
stoilivanov 0:95bf84c286f5 46
stoilivanov 0:95bf84c286f5 47 {"..-." , "F"},
stoilivanov 0:95bf84c286f5 48
stoilivanov 0:95bf84c286f5 49 {"--." , "G"},
stoilivanov 0:95bf84c286f5 50
stoilivanov 0:95bf84c286f5 51 {"...." , "H"},
stoilivanov 0:95bf84c286f5 52
stoilivanov 0:95bf84c286f5 53 {".." , "I"},
stoilivanov 0:95bf84c286f5 54
stoilivanov 0:95bf84c286f5 55 {".---" , "J"},
stoilivanov 0:95bf84c286f5 56
stoilivanov 0:95bf84c286f5 57 {"-.-" , "K"},
stoilivanov 0:95bf84c286f5 58
stoilivanov 0:95bf84c286f5 59 {".-.." , "L"},
stoilivanov 0:95bf84c286f5 60
stoilivanov 0:95bf84c286f5 61 {"--" , "M"},
stoilivanov 0:95bf84c286f5 62
stoilivanov 0:95bf84c286f5 63 {"-." , "N"},
stoilivanov 0:95bf84c286f5 64
stoilivanov 0:95bf84c286f5 65 {"---" , "O"},
stoilivanov 0:95bf84c286f5 66
stoilivanov 0:95bf84c286f5 67 {".--." , "P"},
stoilivanov 0:95bf84c286f5 68
stoilivanov 0:95bf84c286f5 69 {"--.-" , "Q"},
stoilivanov 0:95bf84c286f5 70
stoilivanov 0:95bf84c286f5 71 {".-." , "R"},
stoilivanov 0:95bf84c286f5 72
stoilivanov 0:95bf84c286f5 73 {"..." , "S"},
stoilivanov 0:95bf84c286f5 74
stoilivanov 0:95bf84c286f5 75 {"-" , "T"},
stoilivanov 0:95bf84c286f5 76
stoilivanov 0:95bf84c286f5 77 {"..-" , "U"},
stoilivanov 0:95bf84c286f5 78
stoilivanov 0:95bf84c286f5 79 {"...-" , "V"},
stoilivanov 0:95bf84c286f5 80
stoilivanov 0:95bf84c286f5 81 {".--" , "W"},
stoilivanov 0:95bf84c286f5 82
stoilivanov 0:95bf84c286f5 83 {"-..-" , "X"},
stoilivanov 0:95bf84c286f5 84
stoilivanov 0:95bf84c286f5 85 {"-.--" , "Y"},
stoilivanov 0:95bf84c286f5 86
stoilivanov 0:95bf84c286f5 87 {"--.." "Z"},
stoilivanov 0:95bf84c286f5 88
stoilivanov 0:95bf84c286f5 89 {"-----" ,"0"},
stoilivanov 0:95bf84c286f5 90
stoilivanov 0:95bf84c286f5 91 {".----" ,"1"},
stoilivanov 0:95bf84c286f5 92
stoilivanov 0:95bf84c286f5 93 {"..---" , "2"},
stoilivanov 0:95bf84c286f5 94
stoilivanov 0:95bf84c286f5 95 {"...--" , "3"},
stoilivanov 0:95bf84c286f5 96
stoilivanov 0:95bf84c286f5 97 {"....-" , "4"},
stoilivanov 0:95bf84c286f5 98
stoilivanov 0:95bf84c286f5 99 {"....." , "5"},
stoilivanov 0:95bf84c286f5 100
stoilivanov 0:95bf84c286f5 101 {"-...." ,"6"},
stoilivanov 0:95bf84c286f5 102
stoilivanov 0:95bf84c286f5 103 {"--..." , "7"},
stoilivanov 0:95bf84c286f5 104
stoilivanov 0:95bf84c286f5 105 {"---.." , "8"},
stoilivanov 0:95bf84c286f5 106
stoilivanov 0:95bf84c286f5 107 {"----." , "9"},
stoilivanov 0:95bf84c286f5 108
stoilivanov 0:95bf84c286f5 109 {"/" , " "}
stoilivanov 0:95bf84c286f5 110
stoilivanov 0:95bf84c286f5 111 };
stoilivanov 0:95bf84c286f5 112
stoilivanov 0:95bf84c286f5 113 pc.baud(9600);
stoilivanov 0:95bf84c286f5 114
stoilivanov 0:95bf84c286f5 115 int st=0;
stoilivanov 0:95bf84c286f5 116
stoilivanov 0:95bf84c286f5 117 char symbol,space;
stoilivanov 0:95bf84c286f5 118
stoilivanov 0:95bf84c286f5 119 char mes[100];
stoilivanov 0:95bf84c286f5 120
stoilivanov 0:95bf84c286f5 121 char sysp[2];
stoilivanov 0:95bf84c286f5 122
stoilivanov 0:95bf84c286f5 123 float count=0.0,count_on=0.0,count_off=0.0, len = 0.0;
stoilivanov 0:95bf84c286f5 124
stoilivanov 0:95bf84c286f5 125 float current,vol,sig,lux;
stoilivanov 0:95bf84c286f5 126
stoilivanov 0:95bf84c286f5 127 led = 1;
stoilivanov 0:95bf84c286f5 128
stoilivanov 0:95bf84c286f5 129 mkdir("/sd/LaserComms", 0777);
stoilivanov 0:95bf84c286f5 130
stoilivanov 0:95bf84c286f5 131 FILE *fp = fopen("/sd/LaserComms/message.txt", "w");
stoilivanov 0:95bf84c286f5 132
stoilivanov 0:95bf84c286f5 133 if(fp == NULL) {
stoilivanov 0:95bf84c286f5 134
stoilivanov 0:95bf84c286f5 135 error("Could not open file for writing\r\n");
stoilivanov 0:95bf84c286f5 136
stoilivanov 0:95bf84c286f5 137 }
stoilivanov 0:95bf84c286f5 138
stoilivanov 0:95bf84c286f5 139 while (1) {
stoilivanov 0:95bf84c286f5 140
stoilivanov 0:95bf84c286f5 141 do {
stoilivanov 0:95bf84c286f5 142
stoilivanov 0:95bf84c286f5 143 vol = light.read();
stoilivanov 0:95bf84c286f5 144
stoilivanov 0:95bf84c286f5 145 sig = 3.3*1.947*vol;
stoilivanov 0:95bf84c286f5 146
stoilivanov 0:95bf84c286f5 147 current = sig * 100;
stoilivanov 0:95bf84c286f5 148
stoilivanov 0:95bf84c286f5 149 lux = (current)*2;
stoilivanov 0:95bf84c286f5 150
stoilivanov 0:95bf84c286f5 151 if ( lux > 300 ) {
stoilivanov 0:95bf84c286f5 152
stoilivanov 0:95bf84c286f5 153 count = count + 0.1;
stoilivanov 0:95bf84c286f5 154
stoilivanov 0:95bf84c286f5 155 } else {
stoilivanov 0:95bf84c286f5 156
stoilivanov 0:95bf84c286f5 157 count = 0.0;
stoilivanov 0:95bf84c286f5 158
stoilivanov 0:95bf84c286f5 159 }
stoilivanov 0:95bf84c286f5 160
stoilivanov 0:95bf84c286f5 161 xbee.printf("lux= %f , current= %f ,vol= %f , count= %f \r\n",lux,current,vol,count);
stoilivanov 0:95bf84c286f5 162
stoilivanov 0:95bf84c286f5 163 wait (0.1);
stoilivanov 0:95bf84c286f5 164
stoilivanov 0:95bf84c286f5 165 } while ( count <= 3.0 );
stoilivanov 0:95bf84c286f5 166
stoilivanov 0:95bf84c286f5 167 xbee.printf("LASER COMMUNICATION ESTABLISHED! RECEIVING MODE ON!\r\n");
stoilivanov 0:95bf84c286f5 168
stoilivanov 0:95bf84c286f5 169
stoilivanov 0:95bf84c286f5 170
stoilivanov 0:95bf84c286f5 171 lux=0;
stoilivanov 0:95bf84c286f5 172
stoilivanov 0:95bf84c286f5 173 while(1) {
stoilivanov 0:95bf84c286f5 174
stoilivanov 0:95bf84c286f5 175 count_on = 0.0;
stoilivanov 0:95bf84c286f5 176
stoilivanov 0:95bf84c286f5 177 count_off = 0.0;
stoilivanov 0:95bf84c286f5 178
stoilivanov 0:95bf84c286f5 179 /*vol = light.read();
stoilivanov 0:95bf84c286f5 180
stoilivanov 0:95bf84c286f5 181 sig = 3.3*1.947*vol;
stoilivanov 0:95bf84c286f5 182
stoilivanov 0:95bf84c286f5 183 current = sig * 100;
stoilivanov 0:95bf84c286f5 184
stoilivanov 0:95bf84c286f5 185 lux = (current)*2;*/
stoilivanov 0:95bf84c286f5 186
stoilivanov 0:95bf84c286f5 187
stoilivanov 0:95bf84c286f5 188
stoilivanov 0:95bf84c286f5 189 while(lux<300) {
stoilivanov 0:95bf84c286f5 190
stoilivanov 0:95bf84c286f5 191 xbee.printf("lux= %f, count_off= %f \r\n",lux,count_off);
stoilivanov 0:95bf84c286f5 192
stoilivanov 0:95bf84c286f5 193 count_off = count_off + 0.05;
stoilivanov 0:95bf84c286f5 194
stoilivanov 0:95bf84c286f5 195 wait(0.05);
stoilivanov 0:95bf84c286f5 196
stoilivanov 0:95bf84c286f5 197 vol = light.read();
stoilivanov 0:95bf84c286f5 198
stoilivanov 0:95bf84c286f5 199 sig = 3.3*1.947*vol;
stoilivanov 0:95bf84c286f5 200
stoilivanov 0:95bf84c286f5 201 current = sig * 100;
stoilivanov 0:95bf84c286f5 202
stoilivanov 0:95bf84c286f5 203 lux = (current)*2;
stoilivanov 0:95bf84c286f5 204
stoilivanov 0:95bf84c286f5 205 }
stoilivanov 0:95bf84c286f5 206
stoilivanov 0:95bf84c286f5 207 if (count_off >= 0.5) {
stoilivanov 0:95bf84c286f5 208
stoilivanov 0:95bf84c286f5 209 space = '/';
stoilivanov 0:95bf84c286f5 210
stoilivanov 0:95bf84c286f5 211 } else {
stoilivanov 0:95bf84c286f5 212
stoilivanov 0:95bf84c286f5 213 space = '\0';
stoilivanov 0:95bf84c286f5 214
stoilivanov 0:95bf84c286f5 215 }
stoilivanov 0:95bf84c286f5 216
stoilivanov 0:95bf84c286f5 217 if (count_off > 3.0) {
stoilivanov 0:95bf84c286f5 218
stoilivanov 0:95bf84c286f5 219 break;
stoilivanov 0:95bf84c286f5 220
stoilivanov 0:95bf84c286f5 221 }
stoilivanov 0:95bf84c286f5 222
stoilivanov 0:95bf84c286f5 223
stoilivanov 0:95bf84c286f5 224
stoilivanov 0:95bf84c286f5 225 while(lux>=300) {
stoilivanov 0:95bf84c286f5 226
stoilivanov 0:95bf84c286f5 227 xbee.printf("lux= %f, count_on= %f \r\n",lux,count_on);
stoilivanov 0:95bf84c286f5 228
stoilivanov 0:95bf84c286f5 229 count_on = count_on + 0.05;
stoilivanov 0:95bf84c286f5 230
stoilivanov 0:95bf84c286f5 231 wait(0.05);
stoilivanov 0:95bf84c286f5 232
stoilivanov 0:95bf84c286f5 233 vol = light.read();
stoilivanov 0:95bf84c286f5 234
stoilivanov 0:95bf84c286f5 235 sig = 3.3*1.947*vol;
stoilivanov 0:95bf84c286f5 236
stoilivanov 0:95bf84c286f5 237 current = sig * 100;
stoilivanov 0:95bf84c286f5 238
stoilivanov 0:95bf84c286f5 239 lux = (current)*2;
stoilivanov 0:95bf84c286f5 240
stoilivanov 0:95bf84c286f5 241 }
stoilivanov 0:95bf84c286f5 242
stoilivanov 0:95bf84c286f5 243 if (count_on >= 0.5) {
stoilivanov 0:95bf84c286f5 244
stoilivanov 0:95bf84c286f5 245 symbol = '-';
stoilivanov 0:95bf84c286f5 246
stoilivanov 0:95bf84c286f5 247 } else {
stoilivanov 0:95bf84c286f5 248
stoilivanov 0:95bf84c286f5 249 symbol = '.';
stoilivanov 0:95bf84c286f5 250
stoilivanov 0:95bf84c286f5 251 }
stoilivanov 0:95bf84c286f5 252
stoilivanov 0:95bf84c286f5 253 if (count_off > 3.0) {
stoilivanov 0:95bf84c286f5 254
stoilivanov 0:95bf84c286f5 255 break;
stoilivanov 0:95bf84c286f5 256
stoilivanov 0:95bf84c286f5 257 }
stoilivanov 0:95bf84c286f5 258
stoilivanov 0:95bf84c286f5 259 pc.printf("%c%c", space,symbol);
stoilivanov 0:95bf84c286f5 260
stoilivanov 0:95bf84c286f5 261 fprintf(fp,"%c",symbol);
stoilivanov 0:95bf84c286f5 262
stoilivanov 0:95bf84c286f5 263
stoilivanov 0:95bf84c286f5 264
stoilivanov 0:95bf84c286f5 265 }
stoilivanov 0:95bf84c286f5 266
stoilivanov 0:95bf84c286f5 267 fclose(fp);
stoilivanov 0:95bf84c286f5 268
stoilivanov 0:95bf84c286f5 269 fp = fopen("/sd/LaserComms/message.txt","r");
stoilivanov 0:95bf84c286f5 270
stoilivanov 0:95bf84c286f5 271 fgets(mes,100,fp);
stoilivanov 0:95bf84c286f5 272
stoilivanov 0:95bf84c286f5 273 pc.printf("%s\n",mes);
stoilivanov 0:95bf84c286f5 274
stoilivanov 0:95bf84c286f5 275 fclose(fp);
stoilivanov 0:95bf84c286f5 276
stoilivanov 0:95bf84c286f5 277
stoilivanov 0:95bf84c286f5 278
stoilivanov 0:95bf84c286f5 279 if (mes != "\0") {
stoilivanov 0:95bf84c286f5 280
stoilivanov 0:95bf84c286f5 281 xbee.printf("Message accepted successfully! \r\n");
stoilivanov 0:95bf84c286f5 282
stoilivanov 0:95bf84c286f5 283 xbee.printf("Morse: %s\r\n Translating... \r\n",mes);
stoilivanov 0:95bf84c286f5 284
stoilivanov 0:95bf84c286f5 285 }
stoilivanov 0:95bf84c286f5 286
stoilivanov 0:95bf84c286f5 287
stoilivanov 0:95bf84c286f5 288
stoilivanov 0:95bf84c286f5 289 char* segment,final_mes;
stoilivanov 0:95bf84c286f5 290
stoilivanov 0:95bf84c286f5 291 int i;
stoilivanov 0:95bf84c286f5 292
stoilivanov 0:95bf84c286f5 293 segment = strtok(mes, " ");
stoilivanov 0:95bf84c286f5 294
stoilivanov 0:95bf84c286f5 295 xbee.printf("Translated: ");
stoilivanov 0:95bf84c286f5 296
stoilivanov 0:95bf84c286f5 297 FILE *fh = fopen("/sd/LaserComms/final_message.txt", "w");
stoilivanov 0:95bf84c286f5 298
stoilivanov 0:95bf84c286f5 299 if(fh == NULL) {
stoilivanov 0:95bf84c286f5 300
stoilivanov 0:95bf84c286f5 301 error("Could not open file for writing\r\n");
stoilivanov 0:95bf84c286f5 302
stoilivanov 0:95bf84c286f5 303 }
stoilivanov 0:95bf84c286f5 304
stoilivanov 0:95bf84c286f5 305 while(segment) {
stoilivanov 0:95bf84c286f5 306
stoilivanov 0:95bf84c286f5 307 for(i=0; i<37; ++i) {
stoilivanov 0:95bf84c286f5 308
stoilivanov 0:95bf84c286f5 309 if (!strcmp(segment, table[i].morse)) {
stoilivanov 0:95bf84c286f5 310
stoilivanov 0:95bf84c286f5 311 xbee.printf("%s",(table[i].ascii));
stoilivanov 0:95bf84c286f5 312
stoilivanov 0:95bf84c286f5 313 fprintf(fh,"%s",(table[i].ascii));
stoilivanov 0:95bf84c286f5 314
stoilivanov 0:95bf84c286f5 315 }
stoilivanov 0:95bf84c286f5 316
stoilivanov 0:95bf84c286f5 317 }
stoilivanov 0:95bf84c286f5 318
stoilivanov 0:95bf84c286f5 319 segment = strtok(NULL, " ");
stoilivanov 0:95bf84c286f5 320
stoilivanov 0:95bf84c286f5 321 }
stoilivanov 0:95bf84c286f5 322
stoilivanov 0:95bf84c286f5 323
stoilivanov 0:95bf84c286f5 324
stoilivanov 0:95bf84c286f5 325 fclose(fh);
stoilivanov 0:95bf84c286f5 326
stoilivanov 0:95bf84c286f5 327 fh = fopen("/sd/LaserComms/final_message.txt","r");
stoilivanov 0:95bf84c286f5 328
stoilivanov 0:95bf84c286f5 329 fgets(&final_mes,100,fh);
stoilivanov 0:95bf84c286f5 330
stoilivanov 0:95bf84c286f5 331 fclose(fh);
stoilivanov 0:95bf84c286f5 332
stoilivanov 0:95bf84c286f5 333
stoilivanov 0:95bf84c286f5 334
stoilivanov 0:95bf84c286f5 335
stoilivanov 0:95bf84c286f5 336
stoilivanov 0:95bf84c286f5 337 if ( "final_mes" == "TELEMETRY" ) {
stoilivanov 0:95bf84c286f5 338
stoilivanov 0:95bf84c286f5 339 xbee.printf("Telemetry requested!");
stoilivanov 0:95bf84c286f5 340
stoilivanov 0:95bf84c286f5 341 cam_gps.gps_setting();
stoilivanov 0:95bf84c286f5 342
stoilivanov 0:95bf84c286f5 343 float gx,gy,gz,ax,ay,az,mx,my,mz,bt,temper;
stoilivanov 0:95bf84c286f5 344
stoilivanov 0:95bf84c286f5 345 char ns='A',ew='B',aunit='m';
stoilivanov 0:95bf84c286f5 346
stoilivanov 0:95bf84c286f5 347 float time=0.0,latitude=0.0,longitude=0.0,hacu=0.0,altitude=0.0;
stoilivanov 0:95bf84c286f5 348
stoilivanov 0:95bf84c286f5 349 int quality=0,stnum=0,gps_check=0;
stoilivanov 0:95bf84c286f5 350
stoilivanov 0:95bf84c286f5 351 for(int i = 0; i < 10; i++) {
stoilivanov 0:95bf84c286f5 352
stoilivanov 0:95bf84c286f5 353 n_axis.sen_gyro(&gx,&gy,&gz);
stoilivanov 0:95bf84c286f5 354
stoilivanov 0:95bf84c286f5 355 n_axis.sen_acc(&ax,&ay,&az);
stoilivanov 0:95bf84c286f5 356
stoilivanov 0:95bf84c286f5 357 n_axis.sen_mag(&mx,&my,&mz);
stoilivanov 0:95bf84c286f5 358
stoilivanov 0:95bf84c286f5 359 battery.vol(&bt);
stoilivanov 0:95bf84c286f5 360
stoilivanov 0:95bf84c286f5 361 temp.temp_sense(&temper);
stoilivanov 0:95bf84c286f5 362
stoilivanov 0:95bf84c286f5 363 cam_gps.gga_sensing(&time, &latitude, &ns, &longitude, &ew, &quality, &stnum, &hacu, &altitude, &aunit, &gps_check);
stoilivanov 0:95bf84c286f5 364
stoilivanov 0:95bf84c286f5 365
stoilivanov 0:95bf84c286f5 366
stoilivanov 0:95bf84c286f5 367 xbee.printf("gx = %f gy = %f gz = %f\r\n",gx,gy,gz);
stoilivanov 0:95bf84c286f5 368
stoilivanov 0:95bf84c286f5 369 xbee.printf("ax = %f ay = %f az = %f\r\n",ax,ay,az);
stoilivanov 0:95bf84c286f5 370
stoilivanov 0:95bf84c286f5 371 xbee.printf("mx = %f my = %f mz = %f\r\n",mx,my,mz);
stoilivanov 0:95bf84c286f5 372
stoilivanov 0:95bf84c286f5 373 xbee.printf("Temperature = %f\r\n",temper);
stoilivanov 0:95bf84c286f5 374
stoilivanov 0:95bf84c286f5 375 xbee.printf("Battery voltage: = %f[V]\r\n",bt);
stoilivanov 0:95bf84c286f5 376
stoilivanov 0:95bf84c286f5 377 xbee.printf("%f,%f,%c,%f,%c,%d,%d,%f,%f,%c\r\n\n",time,latitude,ns,longitude,ew,quality,stnum,hacu,altitude,aunit);
stoilivanov 0:95bf84c286f5 378
stoilivanov 0:95bf84c286f5 379 led = (i%2);
stoilivanov 0:95bf84c286f5 380
stoilivanov 0:95bf84c286f5 381 wait(1.0);
stoilivanov 0:95bf84c286f5 382
stoilivanov 0:95bf84c286f5 383 }
stoilivanov 0:95bf84c286f5 384
stoilivanov 0:95bf84c286f5 385 xbee.initialize();
stoilivanov 0:95bf84c286f5 386
stoilivanov 0:95bf84c286f5 387 }
stoilivanov 0:95bf84c286f5 388
stoilivanov 0:95bf84c286f5 389 if ( "final_mes" == "PHOTO") {
stoilivanov 0:95bf84c286f5 390
stoilivanov 0:95bf84c286f5 391 led = 0;
stoilivanov 0:95bf84c286f5 392
stoilivanov 0:95bf84c286f5 393 wait(0.2);
stoilivanov 0:95bf84c286f5 394
stoilivanov 0:95bf84c286f5 395 led = 1;
stoilivanov 0:95bf84c286f5 396
stoilivanov 0:95bf84c286f5 397 wait(0.2);
stoilivanov 0:95bf84c286f5 398
stoilivanov 0:95bf84c286f5 399 led = 0;
stoilivanov 0:95bf84c286f5 400
stoilivanov 0:95bf84c286f5 401 wait(0.2);
stoilivanov 0:95bf84c286f5 402
stoilivanov 0:95bf84c286f5 403 led = 1;
stoilivanov 0:95bf84c286f5 404
stoilivanov 0:95bf84c286f5 405 wait(0.2);
stoilivanov 0:95bf84c286f5 406
stoilivanov 0:95bf84c286f5 407 led = 0;
stoilivanov 0:95bf84c286f5 408
stoilivanov 0:95bf84c286f5 409 wait(0.2);
stoilivanov 0:95bf84c286f5 410
stoilivanov 0:95bf84c286f5 411 led = 1;
stoilivanov 0:95bf84c286f5 412
stoilivanov 0:95bf84c286f5 413 wait(0.2);
stoilivanov 0:95bf84c286f5 414
stoilivanov 0:95bf84c286f5 415 led = 0;
stoilivanov 0:95bf84c286f5 416
stoilivanov 0:95bf84c286f5 417 xbee.printf("Photo requested! \r\n Camera Snapshot Mode\r\n\n Please Smile! :) \r\n");
stoilivanov 0:95bf84c286f5 418
stoilivanov 0:95bf84c286f5 419 cam_gps.Sync();
stoilivanov 0:95bf84c286f5 420
stoilivanov 0:95bf84c286f5 421 cam_gps.initialize(HeptaCamera_GPS::Baud115200, HeptaCamera_GPS::JpegResolution640x480);
stoilivanov 0:95bf84c286f5 422
stoilivanov 0:95bf84c286f5 423 cam_gps.test_jpeg_snapshot_picture(1);
stoilivanov 0:95bf84c286f5 424
stoilivanov 0:95bf84c286f5 425 led = 1;
stoilivanov 0:95bf84c286f5 426
stoilivanov 0:95bf84c286f5 427 }
stoilivanov 0:95bf84c286f5 428
stoilivanov 0:95bf84c286f5 429 if ( "final_mes" == "SOS") {
stoilivanov 0:95bf84c286f5 430
stoilivanov 0:95bf84c286f5 431 // LED blinks SOS message
stoilivanov 0:95bf84c286f5 432
stoilivanov 0:95bf84c286f5 433 }
stoilivanov 0:95bf84c286f5 434
stoilivanov 0:95bf84c286f5 435 xbee.putc(xbee.getc());
stoilivanov 0:95bf84c286f5 436
stoilivanov 0:95bf84c286f5 437 led=0;
stoilivanov 0:95bf84c286f5 438
stoilivanov 0:95bf84c286f5 439 wait(0.2);
stoilivanov 0:95bf84c286f5 440
stoilivanov 0:95bf84c286f5 441 led = 1;
stoilivanov 0:95bf84c286f5 442
stoilivanov 0:95bf84c286f5 443 wait(0.2);
stoilivanov 0:95bf84c286f5 444
stoilivanov 0:95bf84c286f5 445 led = 0;
stoilivanov 0:95bf84c286f5 446
stoilivanov 0:95bf84c286f5 447 wait(0.2);
stoilivanov 0:95bf84c286f5 448
stoilivanov 0:95bf84c286f5 449 led = 1;
stoilivanov 0:95bf84c286f5 450
stoilivanov 0:95bf84c286f5 451 wait(0.2);
stoilivanov 0:95bf84c286f5 452
stoilivanov 0:95bf84c286f5 453 led = 0;
stoilivanov 0:95bf84c286f5 454
stoilivanov 0:95bf84c286f5 455 xbee.printf("Communication terminated! \r\n");
stoilivanov 0:95bf84c286f5 456
stoilivanov 0:95bf84c286f5 457 }
stoilivanov 0:95bf84c286f5 458
stoilivanov 0:95bf84c286f5 459 }