Dependencies:   PinDetect TextLCD mbed mRotaryEncoder

Committer:
cicklaus
Date:
Mon Feb 13 02:11:20 2012 +0000
Revision:
0:afb2650fb49a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cicklaus 0:afb2650fb49a 1
cicklaus 0:afb2650fb49a 2 #include <scmRTOS.h>
cicklaus 0:afb2650fb49a 3 #include "mbed.h"
cicklaus 0:afb2650fb49a 4 #include <iostream>
cicklaus 0:afb2650fb49a 5 #include "TextLCD.h"
cicklaus 0:afb2650fb49a 6 //#include "DebounceIn.h"
cicklaus 0:afb2650fb49a 7 #include <math.h>
cicklaus 0:afb2650fb49a 8 #include <string>
cicklaus 0:afb2650fb49a 9 #define MESSAGE_BUFFER_SIZE 1024
cicklaus 0:afb2650fb49a 10 #include "time.h"
cicklaus 0:afb2650fb49a 11 #include <stdio.h>
cicklaus 0:afb2650fb49a 12 #include <stdlib.h>
cicklaus 0:afb2650fb49a 13 #include <string.h>
cicklaus 0:afb2650fb49a 14 #include "MODSERIAL.h"
cicklaus 0:afb2650fb49a 15 #include "stdint.h"
cicklaus 0:afb2650fb49a 16 #include "DirHandle.h"
cicklaus 0:afb2650fb49a 17 #include "SDCard.h"
cicklaus 0:afb2650fb49a 18 #include "mRotaryEncoder.h"
cicklaus 0:afb2650fb49a 19
cicklaus 0:afb2650fb49a 20 SDCard Logger(p5, p6, p7, p8, "SDCard");
cicklaus 0:afb2650fb49a 21 mRotaryEncoder wheel(p16, p17, p15,PullUp,1500);
cicklaus 0:afb2650fb49a 22 Serial Computer(USBTX, USBRX);
cicklaus 0:afb2650fb49a 23 DigitalOut LED(LED1);
cicklaus 0:afb2650fb49a 24 MODSERIAL gsm(p9,p10);
cicklaus 0:afb2650fb49a 25
cicklaus 0:afb2650fb49a 26 AnalogIn WindVoltage(p20);
cicklaus 0:afb2650fb49a 27 TextLCD lcd(p22, p23, p24, p25, p26, p27);
cicklaus 0:afb2650fb49a 28
cicklaus 0:afb2650fb49a 29
cicklaus 0:afb2650fb49a 30
cicklaus 0:afb2650fb49a 31 char Emergency[40];
cicklaus 0:afb2650fb49a 32 char line= '\n';
cicklaus 0:afb2650fb49a 33 char c;
cicklaus 0:afb2650fb49a 34 char str[40];
cicklaus 0:afb2650fb49a 35 char Hi;
cicklaus 0:afb2650fb49a 36 struct tm t;
cicklaus 0:afb2650fb49a 37 int timecount = 0;
cicklaus 0:afb2650fb49a 38 char buffer1[32];
cicklaus 0:afb2650fb49a 39 char buf[18];
cicklaus 0:afb2650fb49a 40 char buf1[40];
cicklaus 0:afb2650fb49a 41 char buf2[4];
cicklaus 0:afb2650fb49a 42 char buf3[256];
cicklaus 0:afb2650fb49a 43 char buf4[20];
cicklaus 0:afb2650fb49a 44 char * pch;
cicklaus 0:afb2650fb49a 45 char ctr= 0x1A;
cicklaus 0:afb2650fb49a 46 char Key[]="OK";
cicklaus 0:afb2650fb49a 47 int Status = 0;
cicklaus 0:afb2650fb49a 48 int Status1=0;
cicklaus 0:afb2650fb49a 49 int Status2=0;
cicklaus 0:afb2650fb49a 50 int Status3=0;
cicklaus 0:afb2650fb49a 51 int Status4=0;
cicklaus 0:afb2650fb49a 52 int Status5=0;
cicklaus 0:afb2650fb49a 53 int Status6=0;
cicklaus 0:afb2650fb49a 54 int Status7=0;
cicklaus 0:afb2650fb49a 55
cicklaus 0:afb2650fb49a 56 float FinalVoltage=0;
cicklaus 0:afb2650fb49a 57 char SMS1[] ="#Read Volt\r\n";
cicklaus 0:afb2650fb49a 58 char SMS2[] ="#Read Current\r\n";
cicklaus 0:afb2650fb49a 59 char SMS3[] ="#Read All\r\n";
cicklaus 0:afb2650fb49a 60 char SMS4[] ="#Start Log\r\n";
cicklaus 0:afb2650fb49a 61 char SMS5[] ="#Stop Log\r\n";
cicklaus 0:afb2650fb49a 62 char SMS6[] ="#Change Emergency\r\n";
cicklaus 0:afb2650fb49a 63 char SMS7[] ="#Reset Emergerncy\r\n";
cicklaus 0:afb2650fb49a 64 char SMS[15];
cicklaus 0:afb2650fb49a 65 int logging =0;
cicklaus 0:afb2650fb49a 66 int logon = 0;
cicklaus 0:afb2650fb49a 67 int logoff = 0;
cicklaus 0:afb2650fb49a 68 int log_set =0;
cicklaus 0:afb2650fb49a 69 int log_start = 0;
cicklaus 0:afb2650fb49a 70
cicklaus 0:afb2650fb49a 71 int counter=0;
cicklaus 0:afb2650fb49a 72 int counter1=0;
cicklaus 0:afb2650fb49a 73 bool enc_pressed;
cicklaus 0:afb2650fb49a 74 bool enc_rotated;
cicklaus 0:afb2650fb49a 75
cicklaus 0:afb2650fb49a 76
cicklaus 0:afb2650fb49a 77 // OS timer/interrupt
cicklaus 0:afb2650fb49a 78 OS::TEventFlag GSM;
cicklaus 0:afb2650fb49a 79 OS::TEventFlag GSM1;
cicklaus 0:afb2650fb49a 80 OS::TEventFlag GSM2;
cicklaus 0:afb2650fb49a 81 OS::TEventFlag GSM3;
cicklaus 0:afb2650fb49a 82 OS::TEventFlag GSM4;
cicklaus 0:afb2650fb49a 83 OS::TEventFlag GSMSTART;
cicklaus 0:afb2650fb49a 84 OS::TEventFlag GSMSTOP;
cicklaus 0:afb2650fb49a 85 OS::TEventFlag LOGSTOP;
cicklaus 0:afb2650fb49a 86 OS::TEventFlag LOGSTART;
cicklaus 0:afb2650fb49a 87 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 88
cicklaus 0:afb2650fb49a 89
cicklaus 0:afb2650fb49a 90 void toggle()
cicklaus 0:afb2650fb49a 91 {
cicklaus 0:afb2650fb49a 92 switch (counter1) {
cicklaus 0:afb2650fb49a 93
cicklaus 0:afb2650fb49a 94 default :
cicklaus 0:afb2650fb49a 95 // wait(0.5);
cicklaus 0:afb2650fb49a 96 lcd.cls();
cicklaus 0:afb2650fb49a 97 lcd.locate(0,0); //Default State, Show time normally.
cicklaus 0:afb2650fb49a 98 lcd.printf("%s", buffer1);
cicklaus 0:afb2650fb49a 99 counter1 = 0;
cicklaus 0:afb2650fb49a 100 break;
cicklaus 0:afb2650fb49a 101
cicklaus 0:afb2650fb49a 102 case 2 :
cicklaus 0:afb2650fb49a 103 lcd.cls();
cicklaus 0:afb2650fb49a 104 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 105 lcd.printf("Voltage");
cicklaus 0:afb2650fb49a 106
cicklaus 0:afb2650fb49a 107 switch (counter) {
cicklaus 0:afb2650fb49a 108 case 1 :
cicklaus 0:afb2650fb49a 109 lcd.cls();
cicklaus 0:afb2650fb49a 110 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 111 lcd.printf("The Voltage is 3.00V");
cicklaus 0:afb2650fb49a 112 wait(2);
cicklaus 0:afb2650fb49a 113 counter=0;
cicklaus 0:afb2650fb49a 114 break;
cicklaus 0:afb2650fb49a 115
cicklaus 0:afb2650fb49a 116 }
cicklaus 0:afb2650fb49a 117 wait(0.5);
cicklaus 0:afb2650fb49a 118 break;
cicklaus 0:afb2650fb49a 119
cicklaus 0:afb2650fb49a 120
cicklaus 0:afb2650fb49a 121 case 4 :
cicklaus 0:afb2650fb49a 122 lcd.cls();
cicklaus 0:afb2650fb49a 123 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 124 lcd.printf("Current");
cicklaus 0:afb2650fb49a 125
cicklaus 0:afb2650fb49a 126 switch (counter) {
cicklaus 0:afb2650fb49a 127 case 1 :
cicklaus 0:afb2650fb49a 128 lcd.cls();
cicklaus 0:afb2650fb49a 129 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 130 lcd.printf("The Current is 2.34A");
cicklaus 0:afb2650fb49a 131 wait(2);
cicklaus 0:afb2650fb49a 132 counter=0;
cicklaus 0:afb2650fb49a 133 break;
cicklaus 0:afb2650fb49a 134
cicklaus 0:afb2650fb49a 135 }
cicklaus 0:afb2650fb49a 136 wait(0.5);
cicklaus 0:afb2650fb49a 137 break;
cicklaus 0:afb2650fb49a 138
cicklaus 0:afb2650fb49a 139 case 6 :
cicklaus 0:afb2650fb49a 140 lcd.cls();
cicklaus 0:afb2650fb49a 141 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 142 lcd.printf("On log SD card");
cicklaus 0:afb2650fb49a 143
cicklaus 0:afb2650fb49a 144 switch (counter) {
cicklaus 0:afb2650fb49a 145 case 1 :
cicklaus 0:afb2650fb49a 146 lcd.cls();
cicklaus 0:afb2650fb49a 147 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 148 lcd.printf("Logging commence");
cicklaus 0:afb2650fb49a 149 wait(2);
cicklaus 0:afb2650fb49a 150 counter=0;
cicklaus 0:afb2650fb49a 151 break;
cicklaus 0:afb2650fb49a 152
cicklaus 0:afb2650fb49a 153 }
cicklaus 0:afb2650fb49a 154 wait(0.5);
cicklaus 0:afb2650fb49a 155 break;
cicklaus 0:afb2650fb49a 156
cicklaus 0:afb2650fb49a 157
cicklaus 0:afb2650fb49a 158 case 8 :
cicklaus 0:afb2650fb49a 159 lcd.cls();
cicklaus 0:afb2650fb49a 160 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 161 lcd.printf("Off log SD card");
cicklaus 0:afb2650fb49a 162
cicklaus 0:afb2650fb49a 163 switch (counter) {
cicklaus 0:afb2650fb49a 164 case 1 :
cicklaus 0:afb2650fb49a 165 lcd.cls();
cicklaus 0:afb2650fb49a 166 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 167 lcd.printf("Logging aborted");
cicklaus 0:afb2650fb49a 168 wait(2);
cicklaus 0:afb2650fb49a 169 counter=0;
cicklaus 0:afb2650fb49a 170 break;
cicklaus 0:afb2650fb49a 171
cicklaus 0:afb2650fb49a 172 }
cicklaus 0:afb2650fb49a 173 wait(0.5);
cicklaus 0:afb2650fb49a 174 break;
cicklaus 0:afb2650fb49a 175
cicklaus 0:afb2650fb49a 176 case 10 :
cicklaus 0:afb2650fb49a 177 lcd.cls();
cicklaus 0:afb2650fb49a 178 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 179 lcd.printf("Reset SMS Alert");
cicklaus 0:afb2650fb49a 180
cicklaus 0:afb2650fb49a 181 switch (counter) {
cicklaus 0:afb2650fb49a 182 case 1 :
cicklaus 0:afb2650fb49a 183 lcd.cls();
cicklaus 0:afb2650fb49a 184 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 185 lcd.printf("Do you want to reset?");
cicklaus 0:afb2650fb49a 186 break;
cicklaus 0:afb2650fb49a 187 case 2 :
cicklaus 0:afb2650fb49a 188 lcd.cls();
cicklaus 0:afb2650fb49a 189 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 190 lcd.printf("Yes, reset done.");
cicklaus 0:afb2650fb49a 191 counter=0;
cicklaus 0:afb2650fb49a 192 break;
cicklaus 0:afb2650fb49a 193
cicklaus 0:afb2650fb49a 194 }
cicklaus 0:afb2650fb49a 195 wait(0.5);
cicklaus 0:afb2650fb49a 196 break;
cicklaus 0:afb2650fb49a 197
cicklaus 0:afb2650fb49a 198 case 12 :
cicklaus 0:afb2650fb49a 199 lcd.cls();
cicklaus 0:afb2650fb49a 200 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 201 lcd.printf("Emergency number");
cicklaus 0:afb2650fb49a 202
cicklaus 0:afb2650fb49a 203 switch (counter) {
cicklaus 0:afb2650fb49a 204 case 1 :
cicklaus 0:afb2650fb49a 205 lcd.cls();
cicklaus 0:afb2650fb49a 206 lcd.locate(0,0);
cicklaus 0:afb2650fb49a 207 lcd.printf("Number:999");
cicklaus 0:afb2650fb49a 208 wait(5);
cicklaus 0:afb2650fb49a 209 counter=0;
cicklaus 0:afb2650fb49a 210 break;
cicklaus 0:afb2650fb49a 211
cicklaus 0:afb2650fb49a 212 }
cicklaus 0:afb2650fb49a 213 wait(0.5);
cicklaus 0:afb2650fb49a 214 break;
cicklaus 0:afb2650fb49a 215
cicklaus 0:afb2650fb49a 216
cicklaus 0:afb2650fb49a 217
cicklaus 0:afb2650fb49a 218
cicklaus 0:afb2650fb49a 219 }
cicklaus 0:afb2650fb49a 220 }
cicklaus 0:afb2650fb49a 221
cicklaus 0:afb2650fb49a 222 void trigger_sw() {
cicklaus 0:afb2650fb49a 223 enc_pressed = true; // just set the flag, rest is done outside isr
cicklaus 0:afb2650fb49a 224 }
cicklaus 0:afb2650fb49a 225
cicklaus 0:afb2650fb49a 226 //interrup-Handler for rotary-encoder rotation
cicklaus 0:afb2650fb49a 227 void trigger_rotated() {
cicklaus 0:afb2650fb49a 228 enc_rotated = true; // just set the flag, rest is done outside isr
cicklaus 0:afb2650fb49a 229 }
cicklaus 0:afb2650fb49a 230 void Push() {
cicklaus 0:afb2650fb49a 231 if (enc_pressed==true) {
cicklaus 0:afb2650fb49a 232 enc_pressed=false;
cicklaus 0:afb2650fb49a 233 counter++;
cicklaus 0:afb2650fb49a 234 }
cicklaus 0:afb2650fb49a 235
cicklaus 0:afb2650fb49a 236 }
cicklaus 0:afb2650fb49a 237
cicklaus 0:afb2650fb49a 238 void Turn() {
cicklaus 0:afb2650fb49a 239 if (enc_rotated == true) {
cicklaus 0:afb2650fb49a 240 enc_rotated = false;
cicklaus 0:afb2650fb49a 241
cicklaus 0:afb2650fb49a 242 counter1++;
cicklaus 0:afb2650fb49a 243 }
cicklaus 0:afb2650fb49a 244
cicklaus 0:afb2650fb49a 245 }
cicklaus 0:afb2650fb49a 246
cicklaus 0:afb2650fb49a 247 void TimeMessage() //Get character (e.g. Printf the Words from serial)
cicklaus 0:afb2650fb49a 248 {
cicklaus 0:afb2650fb49a 249 strcpy (str,&Hi);
cicklaus 0:afb2650fb49a 250 do {
cicklaus 0:afb2650fb49a 251 c=Computer.getc();
cicklaus 0:afb2650fb49a 252 Computer.putc (c);
cicklaus 0:afb2650fb49a 253 strcat (str,&c);
cicklaus 0:afb2650fb49a 254 }while (c != ' ');
cicklaus 0:afb2650fb49a 255 }
cicklaus 0:afb2650fb49a 256
cicklaus 0:afb2650fb49a 257 void GSM_CLEAR_SMS() //Delete 1st SMS
cicklaus 0:afb2650fb49a 258 {
cicklaus 0:afb2650fb49a 259 gsm.printf("AT+CMGD=0,1\r\n");
cicklaus 0:afb2650fb49a 260 wait(0.2);
cicklaus 0:afb2650fb49a 261 }
cicklaus 0:afb2650fb49a 262
cicklaus 0:afb2650fb49a 263
cicklaus 0:afb2650fb49a 264
cicklaus 0:afb2650fb49a 265 void GSM_GETCHAR() //Get character (e.g. Printf the Words from serial)
cicklaus 0:afb2650fb49a 266 {
cicklaus 0:afb2650fb49a 267 do {
cicklaus 0:afb2650fb49a 268 c=gsm.getc();
cicklaus 0:afb2650fb49a 269 Computer.putc (c);
cicklaus 0:afb2650fb49a 270 }while (c != line);
cicklaus 0:afb2650fb49a 271 }
cicklaus 0:afb2650fb49a 272
cicklaus 0:afb2650fb49a 273 void GSM_GETCHAR1() //Get character (e.g. Printf the Words from serial)
cicklaus 0:afb2650fb49a 274 {
cicklaus 0:afb2650fb49a 275 strcpy (str,&Hi);
cicklaus 0:afb2650fb49a 276 do {
cicklaus 0:afb2650fb49a 277 c=gsm.getc();
cicklaus 0:afb2650fb49a 278 Computer.putc (c);
cicklaus 0:afb2650fb49a 279 strcat (str,&c);
cicklaus 0:afb2650fb49a 280
cicklaus 0:afb2650fb49a 281 }while (c != line);
cicklaus 0:afb2650fb49a 282 Computer.printf("%s\n\r",str);
cicklaus 0:afb2650fb49a 283 // Status = strcmp (SMS1,str);
cicklaus 0:afb2650fb49a 284 // pc.printf("%d\n\r", Status);
cicklaus 0:afb2650fb49a 285
cicklaus 0:afb2650fb49a 286 }
cicklaus 0:afb2650fb49a 287
cicklaus 0:afb2650fb49a 288 void Replyvolt()
cicklaus 0:afb2650fb49a 289 {
cicklaus 0:afb2650fb49a 290 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 291 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:afb2650fb49a 292 GSM_GETCHAR();
cicklaus 0:afb2650fb49a 293 gsm.printf("%s The Voltage is %.2f V %c", buffer1, FinalVoltage,ctr);
cicklaus 0:afb2650fb49a 294 }
cicklaus 0:afb2650fb49a 295
cicklaus 0:afb2650fb49a 296 void Replycurent()
cicklaus 0:afb2650fb49a 297 {
cicklaus 0:afb2650fb49a 298 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 299 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:afb2650fb49a 300 GSM_GETCHAR();
cicklaus 0:afb2650fb49a 301 gsm.printf("%s The Current is %.2f V %c", buffer1, FinalVoltage,ctr);
cicklaus 0:afb2650fb49a 302 }
cicklaus 0:afb2650fb49a 303
cicklaus 0:afb2650fb49a 304 void Replyall()
cicklaus 0:afb2650fb49a 305 {
cicklaus 0:afb2650fb49a 306 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 307 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:afb2650fb49a 308 GSM_GETCHAR();
cicklaus 0:afb2650fb49a 309 gsm.printf("%s Voltage: %.2f V, Current: %.2f A %c", buffer1,FinalVoltage, FinalVoltage,ctr);
cicklaus 0:afb2650fb49a 310 }
cicklaus 0:afb2650fb49a 311
cicklaus 0:afb2650fb49a 312 void Replylogstart()
cicklaus 0:afb2650fb49a 313 {
cicklaus 0:afb2650fb49a 314 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 315 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:afb2650fb49a 316 GSM_GETCHAR();
cicklaus 0:afb2650fb49a 317 if(logging ==1)
cicklaus 0:afb2650fb49a 318 {
cicklaus 0:afb2650fb49a 319
cicklaus 0:afb2650fb49a 320 gsm.printf(" Logging of SD CARD: Start %c",ctr);
cicklaus 0:afb2650fb49a 321
cicklaus 0:afb2650fb49a 322 GSMSTART.Signal();
cicklaus 0:afb2650fb49a 323 }
cicklaus 0:afb2650fb49a 324 if(logging == 0)
cicklaus 0:afb2650fb49a 325 {
cicklaus 0:afb2650fb49a 326 gsm.printf("%s Logging of SD Card: Has Started since %c", buffer1, FinalVoltage,ctr);
cicklaus 0:afb2650fb49a 327 }
cicklaus 0:afb2650fb49a 328
cicklaus 0:afb2650fb49a 329 }
cicklaus 0:afb2650fb49a 330
cicklaus 0:afb2650fb49a 331 void Replylogstop()
cicklaus 0:afb2650fb49a 332 {
cicklaus 0:afb2650fb49a 333 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 334 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:afb2650fb49a 335 GSM_GETCHAR();
cicklaus 0:afb2650fb49a 336 if(logging ==0)
cicklaus 0:afb2650fb49a 337 {
cicklaus 0:afb2650fb49a 338
cicklaus 0:afb2650fb49a 339 gsm.printf("Logging of SD CARD: Stopped %c", ctr);
cicklaus 0:afb2650fb49a 340 GSMSTOP.Signal();
cicklaus 0:afb2650fb49a 341 }
cicklaus 0:afb2650fb49a 342 if(logging == 1)
cicklaus 0:afb2650fb49a 343 {
cicklaus 0:afb2650fb49a 344 gsm.printf("%s Logging of SD Card: Has Stopped since %c", buffer1,ctr);
cicklaus 0:afb2650fb49a 345 }
cicklaus 0:afb2650fb49a 346
cicklaus 0:afb2650fb49a 347 }
cicklaus 0:afb2650fb49a 348
cicklaus 0:afb2650fb49a 349
cicklaus 0:afb2650fb49a 350 void CheckSMSMSG()
cicklaus 0:afb2650fb49a 351 {
cicklaus 0:afb2650fb49a 352 Status1 = strcmp (SMS1,str);
cicklaus 0:afb2650fb49a 353 Status2 = strcmp (SMS2,str);
cicklaus 0:afb2650fb49a 354 Status3 = strcmp (SMS3,str);
cicklaus 0:afb2650fb49a 355 Status4 = strcmp (SMS4,str);
cicklaus 0:afb2650fb49a 356 Status5 = strcmp (SMS5,str);
cicklaus 0:afb2650fb49a 357 Status6 = strcmp (SMS6,str);
cicklaus 0:afb2650fb49a 358 Status7 = strcmp (SMS7,str);
cicklaus 0:afb2650fb49a 359
cicklaus 0:afb2650fb49a 360 if(Status1 == 0)
cicklaus 0:afb2650fb49a 361 {
cicklaus 0:afb2650fb49a 362 Replyvolt();
cicklaus 0:afb2650fb49a 363 }
cicklaus 0:afb2650fb49a 364
cicklaus 0:afb2650fb49a 365 if(Status2 == 0)
cicklaus 0:afb2650fb49a 366 {
cicklaus 0:afb2650fb49a 367 Replycurent();
cicklaus 0:afb2650fb49a 368 }
cicklaus 0:afb2650fb49a 369
cicklaus 0:afb2650fb49a 370 if(Status3 == 0)
cicklaus 0:afb2650fb49a 371 {
cicklaus 0:afb2650fb49a 372 Replyall();
cicklaus 0:afb2650fb49a 373 }
cicklaus 0:afb2650fb49a 374 if(Status4 == 0)
cicklaus 0:afb2650fb49a 375 {
cicklaus 0:afb2650fb49a 376 GSM3.SignalISR();
cicklaus 0:afb2650fb49a 377 }
cicklaus 0:afb2650fb49a 378 if(Status5 == 0)
cicklaus 0:afb2650fb49a 379 {
cicklaus 0:afb2650fb49a 380 GSM4.SignalISR();
cicklaus 0:afb2650fb49a 381 }
cicklaus 0:afb2650fb49a 382
cicklaus 0:afb2650fb49a 383 if(Status6 == 0)
cicklaus 0:afb2650fb49a 384 {
cicklaus 0:afb2650fb49a 385 }
cicklaus 0:afb2650fb49a 386
cicklaus 0:afb2650fb49a 387 if(Status7 == 0)
cicklaus 0:afb2650fb49a 388 {
cicklaus 0:afb2650fb49a 389 }
cicklaus 0:afb2650fb49a 390 else
cicklaus 0:afb2650fb49a 391 {
cicklaus 0:afb2650fb49a 392 Computer.printf("Random SMS\n\r");}
cicklaus 0:afb2650fb49a 393 }
cicklaus 0:afb2650fb49a 394
cicklaus 0:afb2650fb49a 395
cicklaus 0:afb2650fb49a 396 void GSM_CHECK_MSG() //Check if msg is OK,Error.
cicklaus 0:afb2650fb49a 397 {
cicklaus 0:afb2650fb49a 398 Status = strcmp (Key,buf1);
cicklaus 0:afb2650fb49a 399 //pc.printf("%d\n\r", Status); //See the error Number
cicklaus 0:afb2650fb49a 400 }
cicklaus 0:afb2650fb49a 401
cicklaus 0:afb2650fb49a 402
cicklaus 0:afb2650fb49a 403
cicklaus 0:afb2650fb49a 404 void ExtractNum() //Extract the number from the sender's sms
cicklaus 0:afb2650fb49a 405 {
cicklaus 0:afb2650fb49a 406 pch = strtok (buf3," ,.-");
cicklaus 0:afb2650fb49a 407 pch = strtok (NULL, " ,.-");
cicklaus 0:afb2650fb49a 408 //pc.printf ("pch is %s\n\r",pch); //See Number extracted
cicklaus 0:afb2650fb49a 409 strcpy (buf4,pch);
cicklaus 0:afb2650fb49a 410 Computer.printf("%s\n\r", buf4); //Number extracted in "+6512345678"
cicklaus 0:afb2650fb49a 411 }
cicklaus 0:afb2650fb49a 412
cicklaus 0:afb2650fb49a 413
cicklaus 0:afb2650fb49a 414
cicklaus 0:afb2650fb49a 415 void ReceiveMessage()
cicklaus 0:afb2650fb49a 416 {
cicklaus 0:afb2650fb49a 417 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 418 gsm.printf("AT+CMGR=\"1\"\n\r"); //Read Message.
cicklaus 0:afb2650fb49a 419 gsm.scanf("%s",buf);
cicklaus 0:afb2650fb49a 420
cicklaus 0:afb2650fb49a 421 // pc.printf("%s\r\n",buf);
cicklaus 0:afb2650fb49a 422 gsm.scanf("%s",buf1);
cicklaus 0:afb2650fb49a 423 // pc.printf("%s\n\r",buf1);
cicklaus 0:afb2650fb49a 424
cicklaus 0:afb2650fb49a 425 GSM_CHECK_MSG(); //Check For reply. If Ok, no sms. if error, no sms.
cicklaus 0:afb2650fb49a 426 }
cicklaus 0:afb2650fb49a 427
cicklaus 0:afb2650fb49a 428
cicklaus 0:afb2650fb49a 429 void GSM_STARTUP()
cicklaus 0:afb2650fb49a 430 {
cicklaus 0:afb2650fb49a 431
cicklaus 0:afb2650fb49a 432 gsm.baud(9600);
cicklaus 0:afb2650fb49a 433 Computer.baud(9600);
cicklaus 0:afb2650fb49a 434 gsm.format(8, Serial::None, 1);
cicklaus 0:afb2650fb49a 435
cicklaus 0:afb2650fb49a 436 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 437 Computer.printf("\n\rSetting Up GSM\n\r");
cicklaus 0:afb2650fb49a 438 Computer.printf("---------------\n\r\n\r");
cicklaus 0:afb2650fb49a 439 gsm.printf("AT+CMGF=\"1\"\r\n");
cicklaus 0:afb2650fb49a 440 gsm.scanf("%s",buf);
cicklaus 0:afb2650fb49a 441 // pc.printf("buf1 is: %s\r\n",buf);
cicklaus 0:afb2650fb49a 442
cicklaus 0:afb2650fb49a 443 gsm.scanf("%s",buf3); //scanf OK
cicklaus 0:afb2650fb49a 444 Computer.printf("%s\r\n",buf3);
cicklaus 0:afb2650fb49a 445 GSM_CLEAR_SMS();
cicklaus 0:afb2650fb49a 446 do
cicklaus 0:afb2650fb49a 447 {
cicklaus 0:afb2650fb49a 448 Computer.printf("Enter Emergency Number[Space]: ");
cicklaus 0:afb2650fb49a 449 TimeMessage();
cicklaus 0:afb2650fb49a 450 Computer.printf("\n\r\n\r");
cicklaus 0:afb2650fb49a 451 Computer.printf("Is this your Number[y/n]: %s\n\r", str);
cicklaus 0:afb2650fb49a 452 strcpy (Emergency,str);
cicklaus 0:afb2650fb49a 453 c=Computer.getc();
cicklaus 0:afb2650fb49a 454 Computer.printf("\n\r\n\r");
cicklaus 0:afb2650fb49a 455 }while(c !='y');
cicklaus 0:afb2650fb49a 456 Computer.printf("...GSM Setup Done\n\r\n\r\n\r");
cicklaus 0:afb2650fb49a 457 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 458 }
cicklaus 0:afb2650fb49a 459
cicklaus 0:afb2650fb49a 460 /*void TimeMessage() //Get character (e.g. Printf the Words from serial)
cicklaus 0:afb2650fb49a 461 {
cicklaus 0:afb2650fb49a 462 strcpy (str,&Hi);
cicklaus 0:afb2650fb49a 463 do {
cicklaus 0:afb2650fb49a 464 c=pc.getc();
cicklaus 0:afb2650fb49a 465 pc.putc (c);
cicklaus 0:afb2650fb49a 466 strcat (str,&c);
cicklaus 0:afb2650fb49a 467 }while (c != ' ');
cicklaus 0:afb2650fb49a 468 }*/
cicklaus 0:afb2650fb49a 469
cicklaus 0:afb2650fb49a 470 void time_setup() {
cicklaus 0:afb2650fb49a 471 Computer.baud(9600);
cicklaus 0:afb2650fb49a 472
cicklaus 0:afb2650fb49a 473 Computer.printf("\n\rSetting Up Time\n\r");
cicklaus 0:afb2650fb49a 474 Computer.printf("---------------\n\r\n\r");
cicklaus 0:afb2650fb49a 475
cicklaus 0:afb2650fb49a 476 // get the current time from the terminal
cicklaus 0:afb2650fb49a 477
cicklaus 0:afb2650fb49a 478 do{
cicklaus 0:afb2650fb49a 479 Computer.printf("Enter current date and time:\n\r");
cicklaus 0:afb2650fb49a 480 Computer.printf("YYYY MM DD HH MM SS\n\r");
cicklaus 0:afb2650fb49a 481
cicklaus 0:afb2650fb49a 482 TimeMessage();
cicklaus 0:afb2650fb49a 483 t.tm_year = atoi (str);
cicklaus 0:afb2650fb49a 484 TimeMessage();
cicklaus 0:afb2650fb49a 485 t.tm_mon = atoi (str);
cicklaus 0:afb2650fb49a 486 TimeMessage();
cicklaus 0:afb2650fb49a 487 t.tm_mday= atoi (str);
cicklaus 0:afb2650fb49a 488 TimeMessage();
cicklaus 0:afb2650fb49a 489 t.tm_hour = atoi (str);
cicklaus 0:afb2650fb49a 490 TimeMessage();
cicklaus 0:afb2650fb49a 491 t.tm_min = atoi (str);
cicklaus 0:afb2650fb49a 492 TimeMessage();
cicklaus 0:afb2650fb49a 493 t.tm_sec = atoi (str);
cicklaus 0:afb2650fb49a 494
cicklaus 0:afb2650fb49a 495 Computer.printf("\n\r\n\r");
cicklaus 0:afb2650fb49a 496 Computer.printf("Is the time correct [y/n]\n\r");
cicklaus 0:afb2650fb49a 497 c=Computer.getc();
cicklaus 0:afb2650fb49a 498 Computer.printf("\n\r");
cicklaus 0:afb2650fb49a 499 }while(c !='y');
cicklaus 0:afb2650fb49a 500
cicklaus 0:afb2650fb49a 501 // adjust for tm structure required values
cicklaus 0:afb2650fb49a 502 t.tm_year = t.tm_year - 1900;
cicklaus 0:afb2650fb49a 503 t.tm_mon = t.tm_mon - 1;
cicklaus 0:afb2650fb49a 504
cicklaus 0:afb2650fb49a 505 // set the time
cicklaus 0:afb2650fb49a 506 set_time(mktime(&t));
cicklaus 0:afb2650fb49a 507
cicklaus 0:afb2650fb49a 508 Computer.printf("...Time Setting Done\n\r\n\r");
cicklaus 0:afb2650fb49a 509
cicklaus 0:afb2650fb49a 510 }
cicklaus 0:afb2650fb49a 511
cicklaus 0:afb2650fb49a 512 void message() //Get character (e.g. Printf the Words from serial)
cicklaus 0:afb2650fb49a 513 {
cicklaus 0:afb2650fb49a 514
cicklaus 0:afb2650fb49a 515 do {
cicklaus 0:afb2650fb49a 516 c=Computer.getc();
cicklaus 0:afb2650fb49a 517 Computer.putc (c);
cicklaus 0:afb2650fb49a 518 strcat (str,&c);
cicklaus 0:afb2650fb49a 519
cicklaus 0:afb2650fb49a 520 }while (c != '.');
cicklaus 0:afb2650fb49a 521 Computer.printf("\n\r\n\r");
cicklaus 0:afb2650fb49a 522
cicklaus 0:afb2650fb49a 523
cicklaus 0:afb2650fb49a 524 }
cicklaus 0:afb2650fb49a 525
cicklaus 0:afb2650fb49a 526 void Sending()
cicklaus 0:afb2650fb49a 527 {
cicklaus 0:afb2650fb49a 528 if(Status==36)
cicklaus 0:afb2650fb49a 529 {
cicklaus 0:afb2650fb49a 530 time_t seconds = time(NULL);
cicklaus 0:afb2650fb49a 531 gsm.scanf("%s",buf2);
cicklaus 0:afb2650fb49a 532 gsm.scanf("%s",buf3); //Scan ["READ","+6512345678",,"12/01/18,23:54:25+32"]
cicklaus 0:afb2650fb49a 533 ExtractNum(); //to extract number
cicklaus 0:afb2650fb49a 534
cicklaus 0:afb2650fb49a 535 Computer.printf("The Message is:\n\r");
cicklaus 0:afb2650fb49a 536 GSM_GETCHAR();
cicklaus 0:afb2650fb49a 537
cicklaus 0:afb2650fb49a 538 GSM_GETCHAR1(); //Compare sms(e.g.SMSing "#ReadVolt" will give u voltage reading)
cicklaus 0:afb2650fb49a 539 GSM_GETCHAR();
cicklaus 0:afb2650fb49a 540
cicklaus 0:afb2650fb49a 541 GSM_CLEAR_SMS(); //Delete 1st Message
cicklaus 0:afb2650fb49a 542 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 543
cicklaus 0:afb2650fb49a 544 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 545 }
cicklaus 0:afb2650fb49a 546 }
cicklaus 0:afb2650fb49a 547 void View_TIME()
cicklaus 0:afb2650fb49a 548 {
cicklaus 0:afb2650fb49a 549 do{
cicklaus 0:afb2650fb49a 550 time_t seconds = time(NULL);
cicklaus 0:afb2650fb49a 551 strftime(buffer1, 32, "%a %d/%m/%Y %I:%M:%S %p", localtime(&seconds));
cicklaus 0:afb2650fb49a 552 lcd.printf("%s\n", buffer1);
cicklaus 0:afb2650fb49a 553 wait(1);
cicklaus 0:afb2650fb49a 554 timecount = timecount + 1;
cicklaus 0:afb2650fb49a 555 lcd.cls();
cicklaus 0:afb2650fb49a 556 }while(timecount !=3);
cicklaus 0:afb2650fb49a 557 timecount = 0;
cicklaus 0:afb2650fb49a 558 }
cicklaus 0:afb2650fb49a 559
cicklaus 0:afb2650fb49a 560 void View_Voltage()
cicklaus 0:afb2650fb49a 561 {
cicklaus 0:afb2650fb49a 562 do{
cicklaus 0:afb2650fb49a 563 FinalVoltage = WindVoltage * 3.3* 2.926;
cicklaus 0:afb2650fb49a 564 lcd.printf("Voltage: %.2f V", FinalVoltage );
cicklaus 0:afb2650fb49a 565 wait(1);
cicklaus 0:afb2650fb49a 566 timecount = timecount + 1;
cicklaus 0:afb2650fb49a 567 lcd.cls();
cicklaus 0:afb2650fb49a 568 }while(timecount != 3);
cicklaus 0:afb2650fb49a 569 timecount = 0;
cicklaus 0:afb2650fb49a 570 }
cicklaus 0:afb2650fb49a 571
cicklaus 0:afb2650fb49a 572 void SD_card_setup()
cicklaus 0:afb2650fb49a 573 {
cicklaus 0:afb2650fb49a 574 Computer.printf("\n\rDo you want to start Logging[y/n]:\n\r");
cicklaus 0:afb2650fb49a 575 do{
cicklaus 0:afb2650fb49a 576 c=Computer.getc();
cicklaus 0:afb2650fb49a 577 if(c=='y')
cicklaus 0:afb2650fb49a 578 {
cicklaus 0:afb2650fb49a 579 logging = 0;
cicklaus 0:afb2650fb49a 580 log_set= 1;
cicklaus 0:afb2650fb49a 581 log_start = 1;
cicklaus 0:afb2650fb49a 582 }
cicklaus 0:afb2650fb49a 583 if(c=='n')
cicklaus 0:afb2650fb49a 584 {
cicklaus 0:afb2650fb49a 585 logging = 1;
cicklaus 0:afb2650fb49a 586 log_set = 1;
cicklaus 0:afb2650fb49a 587 }
cicklaus 0:afb2650fb49a 588 }while(log_set != 1);
cicklaus 0:afb2650fb49a 589 }
cicklaus 0:afb2650fb49a 590
cicklaus 0:afb2650fb49a 591 void SD_CARD()
cicklaus 0:afb2650fb49a 592 {
cicklaus 0:afb2650fb49a 593 if(logging == 0)
cicklaus 0:afb2650fb49a 594 {
cicklaus 0:afb2650fb49a 595 // Logger.SelectCRCMode(1);
cicklaus 0:afb2650fb49a 596 FILE *fp = fopen("/SDCard/myfile.csv", "a+");
cicklaus 0:afb2650fb49a 597 if(log_start == 1)
cicklaus 0:afb2650fb49a 598 {fprintf(fp,"%s, Logging Start\n\r",buffer1);
cicklaus 0:afb2650fb49a 599 log_start = 0;}
cicklaus 0:afb2650fb49a 600 if(log_start == 2)
cicklaus 0:afb2650fb49a 601 { fprintf(fp,"%s, Logging Stopped \n\r",buffer1);
cicklaus 0:afb2650fb49a 602 log_start = 0;
cicklaus 0:afb2650fb49a 603 logging = 1;
cicklaus 0:afb2650fb49a 604 }
cicklaus 0:afb2650fb49a 605 else
cicklaus 0:afb2650fb49a 606 {
cicklaus 0:afb2650fb49a 607 fprintf(fp,"%s, Voltage:, %.2f V\n\r",buffer1,FinalVoltage );}
cicklaus 0:afb2650fb49a 608 fclose(fp);
cicklaus 0:afb2650fb49a 609 printf("logging\n\r");
cicklaus 0:afb2650fb49a 610 }
cicklaus 0:afb2650fb49a 611
cicklaus 0:afb2650fb49a 612 }
cicklaus 0:afb2650fb49a 613 // process types
cicklaus 0:afb2650fb49a 614 typedef OS::process<OS::pr0, 800> TProc1;
cicklaus 0:afb2650fb49a 615 typedef OS::process<OS::pr1, 1000> TProc2;
cicklaus 0:afb2650fb49a 616 typedef OS::process<OS::pr2, 1500> TProc3;
cicklaus 0:afb2650fb49a 617 typedef OS::process<OS::pr3, 1000> TProc4;
cicklaus 0:afb2650fb49a 618 typedef OS::process<OS::pr4, 1000> TProc5;
cicklaus 0:afb2650fb49a 619 typedef OS::process<OS::pr5, 1000> TProc6;
cicklaus 0:afb2650fb49a 620 typedef OS::process<OS::pr6, 1000> TProc7;
cicklaus 0:afb2650fb49a 621 typedef OS::process<OS::pr7, 1000> TProc8;
cicklaus 0:afb2650fb49a 622 typedef OS::process<OS::pr8, 1000> TProc9;
cicklaus 0:afb2650fb49a 623 typedef OS::process<OS::pr9, 1000> TProc10;
cicklaus 0:afb2650fb49a 624 typedef OS::process<OS::pr10, 1000> TProc11;
cicklaus 0:afb2650fb49a 625 typedef OS::process<OS::pr11, 1000> TProc12;
cicklaus 0:afb2650fb49a 626 typedef OS::process<OS::pr12, 1000> TProc13;
cicklaus 0:afb2650fb49a 627 typedef OS::process<OS::pr13, 3000> TProc14;
cicklaus 0:afb2650fb49a 628
cicklaus 0:afb2650fb49a 629 // process objects
cicklaus 0:afb2650fb49a 630 TProc1 Proc1;
cicklaus 0:afb2650fb49a 631 TProc2 Proc2;
cicklaus 0:afb2650fb49a 632 TProc3 Proc3;
cicklaus 0:afb2650fb49a 633 TProc4 Proc4;
cicklaus 0:afb2650fb49a 634 TProc5 Proc5;
cicklaus 0:afb2650fb49a 635 TProc6 Proc6;
cicklaus 0:afb2650fb49a 636 TProc7 Proc7;
cicklaus 0:afb2650fb49a 637 TProc8 Proc8;
cicklaus 0:afb2650fb49a 638 TProc9 Proc9;
cicklaus 0:afb2650fb49a 639 TProc10 Proc10;
cicklaus 0:afb2650fb49a 640 TProc11 Proc11;
cicklaus 0:afb2650fb49a 641 TProc12 Proc12;
cicklaus 0:afb2650fb49a 642 TProc13 Proc13;
cicklaus 0:afb2650fb49a 643 TProc14 Proc14;
cicklaus 0:afb2650fb49a 644
cicklaus 0:afb2650fb49a 645
cicklaus 0:afb2650fb49a 646
cicklaus 0:afb2650fb49a 647 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 648
cicklaus 0:afb2650fb49a 649
cicklaus 0:afb2650fb49a 650 long long count = 0;
cicklaus 0:afb2650fb49a 651
cicklaus 0:afb2650fb49a 652 int main() {
cicklaus 0:afb2650fb49a 653 Logger.SelectCRCMode(1);
cicklaus 0:afb2650fb49a 654 Computer.baud(9600);
cicklaus 0:afb2650fb49a 655 printf("\nInitialising ...\n");
cicklaus 0:afb2650fb49a 656 gsm.baud(9600);
cicklaus 0:afb2650fb49a 657
cicklaus 0:afb2650fb49a 658 time_setup();
cicklaus 0:afb2650fb49a 659 GSM_STARTUP();
cicklaus 0:afb2650fb49a 660 SD_card_setup();
cicklaus 0:afb2650fb49a 661 printf("\n\rSAMS Settup Done\n\r");
cicklaus 0:afb2650fb49a 662 wait(0.5);
cicklaus 0:afb2650fb49a 663 printf("\n\rRunning Program\n\r");
cicklaus 0:afb2650fb49a 664 wheel.attachSW(&trigger_sw);
cicklaus 0:afb2650fb49a 665 wheel.attachROT(&trigger_rotated);
cicklaus 0:afb2650fb49a 666
cicklaus 0:afb2650fb49a 667
cicklaus 0:afb2650fb49a 668 OS::Run();
cicklaus 0:afb2650fb49a 669 }
cicklaus 0:afb2650fb49a 670
cicklaus 0:afb2650fb49a 671 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 672 template<> OS_PROCESS void TProc1::Exec() {
cicklaus 0:afb2650fb49a 673 for (;;) {
cicklaus 0:afb2650fb49a 674
cicklaus 0:afb2650fb49a 675 toggle();
cicklaus 0:afb2650fb49a 676
cicklaus 0:afb2650fb49a 677 // if(counter == 1)
cicklaus 0:afb2650fb49a 678 // {
cicklaus 0:afb2650fb49a 679 // printf("Hi\n\r");
cicklaus 0:afb2650fb49a 680 // }
cicklaus 0:afb2650fb49a 681 Sleep(2000);
cicklaus 0:afb2650fb49a 682
cicklaus 0:afb2650fb49a 683 }
cicklaus 0:afb2650fb49a 684 }
cicklaus 0:afb2650fb49a 685
cicklaus 0:afb2650fb49a 686 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 687 template<> OS_PROCESS void TProc2::Exec() {
cicklaus 0:afb2650fb49a 688 for (;;) {
cicklaus 0:afb2650fb49a 689 GSM.Wait();
cicklaus 0:afb2650fb49a 690 ReceiveMessage();
cicklaus 0:afb2650fb49a 691 GSM1.SignalISR();
cicklaus 0:afb2650fb49a 692 Sleep(2000);
cicklaus 0:afb2650fb49a 693
cicklaus 0:afb2650fb49a 694 }
cicklaus 0:afb2650fb49a 695 }
cicklaus 0:afb2650fb49a 696
cicklaus 0:afb2650fb49a 697 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 698 template<> OS_PROCESS void TProc3::Exec() {
cicklaus 0:afb2650fb49a 699 for (;;) {
cicklaus 0:afb2650fb49a 700 GSM1.Wait();
cicklaus 0:afb2650fb49a 701 Sending();
cicklaus 0:afb2650fb49a 702 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 703 GSM2.SignalISR();
cicklaus 0:afb2650fb49a 704 Sleep(2000);
cicklaus 0:afb2650fb49a 705
cicklaus 0:afb2650fb49a 706
cicklaus 0:afb2650fb49a 707 }
cicklaus 0:afb2650fb49a 708 }
cicklaus 0:afb2650fb49a 709 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 710 template<> OS_PROCESS void TProc4::Exec() {
cicklaus 0:afb2650fb49a 711 for (;;) {
cicklaus 0:afb2650fb49a 712 if(Status==36){
cicklaus 0:afb2650fb49a 713 GSM2.Wait();
cicklaus 0:afb2650fb49a 714 CheckSMSMSG(); //Reply SMS
cicklaus 0:afb2650fb49a 715 Computer.printf("Sent SMS\n\r");
cicklaus 0:afb2650fb49a 716 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 717 gsm.rxBufferFlush();
cicklaus 0:afb2650fb49a 718 GSM_CLEAR_SMS();
cicklaus 0:afb2650fb49a 719 gsm.rxBufferFlush();}
cicklaus 0:afb2650fb49a 720
cicklaus 0:afb2650fb49a 721
cicklaus 0:afb2650fb49a 722 Sleep(2000);
cicklaus 0:afb2650fb49a 723
cicklaus 0:afb2650fb49a 724
cicklaus 0:afb2650fb49a 725 }
cicklaus 0:afb2650fb49a 726 }
cicklaus 0:afb2650fb49a 727 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 728 template<> OS_PROCESS void TProc5::Exec() {
cicklaus 0:afb2650fb49a 729 for (;;) {
cicklaus 0:afb2650fb49a 730
cicklaus 0:afb2650fb49a 731 GSM3.Wait();
cicklaus 0:afb2650fb49a 732 Replylogstart();
cicklaus 0:afb2650fb49a 733
cicklaus 0:afb2650fb49a 734 Sleep(2000);
cicklaus 0:afb2650fb49a 735
cicklaus 0:afb2650fb49a 736
cicklaus 0:afb2650fb49a 737 }
cicklaus 0:afb2650fb49a 738 }
cicklaus 0:afb2650fb49a 739
cicklaus 0:afb2650fb49a 740 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 741 template<> OS_PROCESS void TProc6::Exec() {
cicklaus 0:afb2650fb49a 742 for (;;) {
cicklaus 0:afb2650fb49a 743
cicklaus 0:afb2650fb49a 744
cicklaus 0:afb2650fb49a 745 GSM4.Wait();
cicklaus 0:afb2650fb49a 746 Replylogstop();
cicklaus 0:afb2650fb49a 747 Sleep(2000);
cicklaus 0:afb2650fb49a 748
cicklaus 0:afb2650fb49a 749
cicklaus 0:afb2650fb49a 750 }
cicklaus 0:afb2650fb49a 751 }
cicklaus 0:afb2650fb49a 752 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 753 template<> OS_PROCESS void TProc7::Exec() {
cicklaus 0:afb2650fb49a 754 for (;;) {
cicklaus 0:afb2650fb49a 755
cicklaus 0:afb2650fb49a 756
cicklaus 0:afb2650fb49a 757 GSMSTART.Wait();
cicklaus 0:afb2650fb49a 758 logging = 0;
cicklaus 0:afb2650fb49a 759 // logon = 1;
cicklaus 0:afb2650fb49a 760 log_start = 1;
cicklaus 0:afb2650fb49a 761 printf("start\n\r");
cicklaus 0:afb2650fb49a 762 // LOGSTART.Signal();
cicklaus 0:afb2650fb49a 763 Sleep(2000);
cicklaus 0:afb2650fb49a 764
cicklaus 0:afb2650fb49a 765
cicklaus 0:afb2650fb49a 766 }
cicklaus 0:afb2650fb49a 767 }
cicklaus 0:afb2650fb49a 768 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 769 template<> OS_PROCESS void TProc8::Exec() {
cicklaus 0:afb2650fb49a 770 for (;;) {
cicklaus 0:afb2650fb49a 771
cicklaus 0:afb2650fb49a 772
cicklaus 0:afb2650fb49a 773 GSMSTOP.Wait();
cicklaus 0:afb2650fb49a 774 // logging = 1;
cicklaus 0:afb2650fb49a 775 log_start = 2;
cicklaus 0:afb2650fb49a 776 // logon = 1;
cicklaus 0:afb2650fb49a 777 Sleep(2000);
cicklaus 0:afb2650fb49a 778
cicklaus 0:afb2650fb49a 779
cicklaus 0:afb2650fb49a 780 }
cicklaus 0:afb2650fb49a 781 }
cicklaus 0:afb2650fb49a 782 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 783 template<> OS_PROCESS void TProc9::Exec() {
cicklaus 0:afb2650fb49a 784 for (;;) {
cicklaus 0:afb2650fb49a 785
cicklaus 0:afb2650fb49a 786 LOGSTART.Wait();
cicklaus 0:afb2650fb49a 787 lcd.printf("Logging of SD CARD: Start\n");
cicklaus 0:afb2650fb49a 788
cicklaus 0:afb2650fb49a 789
cicklaus 0:afb2650fb49a 790
cicklaus 0:afb2650fb49a 791 Sleep(2000);
cicklaus 0:afb2650fb49a 792 }
cicklaus 0:afb2650fb49a 793
cicklaus 0:afb2650fb49a 794 }
cicklaus 0:afb2650fb49a 795
cicklaus 0:afb2650fb49a 796
cicklaus 0:afb2650fb49a 797
cicklaus 0:afb2650fb49a 798
cicklaus 0:afb2650fb49a 799 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 800 template<> OS_PROCESS void TProc10::Exec() {
cicklaus 0:afb2650fb49a 801 for (;;) {
cicklaus 0:afb2650fb49a 802
cicklaus 0:afb2650fb49a 803 Sleep(2000);
cicklaus 0:afb2650fb49a 804
cicklaus 0:afb2650fb49a 805 }
cicklaus 0:afb2650fb49a 806 }
cicklaus 0:afb2650fb49a 807
cicklaus 0:afb2650fb49a 808
cicklaus 0:afb2650fb49a 809 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 810 template<> OS_PROCESS void TProc11::Exec() {
cicklaus 0:afb2650fb49a 811 for (;;) {
cicklaus 0:afb2650fb49a 812 FinalVoltage = WindVoltage * 3.3* 2.926;
cicklaus 0:afb2650fb49a 813 printf("p2\n\r");
cicklaus 0:afb2650fb49a 814 Sleep(2000);
cicklaus 0:afb2650fb49a 815
cicklaus 0:afb2650fb49a 816 }
cicklaus 0:afb2650fb49a 817 }
cicklaus 0:afb2650fb49a 818
cicklaus 0:afb2650fb49a 819 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 820 template<> OS_PROCESS void TProc12::Exec() {
cicklaus 0:afb2650fb49a 821 for (;;) {
cicklaus 0:afb2650fb49a 822
cicklaus 0:afb2650fb49a 823 //Sleep(2000);
cicklaus 0:afb2650fb49a 824 // lcd.cls();
cicklaus 0:afb2650fb49a 825 // lcd.printf("Voltage: %.2f\n", FinalVoltage);
cicklaus 0:afb2650fb49a 826 // printf("[2] %lld\n\r", count);
cicklaus 0:afb2650fb49a 827 Sleep(2000);
cicklaus 0:afb2650fb49a 828
cicklaus 0:afb2650fb49a 829 }
cicklaus 0:afb2650fb49a 830 }
cicklaus 0:afb2650fb49a 831
cicklaus 0:afb2650fb49a 832 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 833 template<> OS_PROCESS void TProc13::Exec() {
cicklaus 0:afb2650fb49a 834 for (;;) {
cicklaus 0:afb2650fb49a 835 // LOGSTART.Wait();
cicklaus 0:afb2650fb49a 836 // SD_CARD();
cicklaus 0:afb2650fb49a 837 // Sleep(1500);
cicklaus 0:afb2650fb49a 838 Sleep(2000);
cicklaus 0:afb2650fb49a 839
cicklaus 0:afb2650fb49a 840 }
cicklaus 0:afb2650fb49a 841 }
cicklaus 0:afb2650fb49a 842
cicklaus 0:afb2650fb49a 843 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 844 template<> OS_PROCESS void TProc14::Exec() {
cicklaus 0:afb2650fb49a 845 for (;;) {
cicklaus 0:afb2650fb49a 846 printf("SDCARD\n\r");
cicklaus 0:afb2650fb49a 847 SD_CARD();
cicklaus 0:afb2650fb49a 848 Sleep(1500);
cicklaus 0:afb2650fb49a 849
cicklaus 0:afb2650fb49a 850 }
cicklaus 0:afb2650fb49a 851 }
cicklaus 0:afb2650fb49a 852 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 853 void OS::SystemTimerUserHook() {
cicklaus 0:afb2650fb49a 854 count++;
cicklaus 0:afb2650fb49a 855 if(gsm.rxBufferGetCount() != 0)
cicklaus 0:afb2650fb49a 856
cicklaus 0:afb2650fb49a 857 { GSM.Signal();}
cicklaus 0:afb2650fb49a 858 time_t seconds = time(NULL);
cicklaus 0:afb2650fb49a 859 strftime(buffer1, 32, "%a %d/%m/%Y %I:%M:%S %p", localtime(&seconds));
cicklaus 0:afb2650fb49a 860 Push();
cicklaus 0:afb2650fb49a 861 Turn();
cicklaus 0:afb2650fb49a 862 wheel.attachSW(&trigger_sw);
cicklaus 0:afb2650fb49a 863 wheel.attachROT(&trigger_rotated);
cicklaus 0:afb2650fb49a 864
cicklaus 0:afb2650fb49a 865
cicklaus 0:afb2650fb49a 866
cicklaus 0:afb2650fb49a 867
cicklaus 0:afb2650fb49a 868 }
cicklaus 0:afb2650fb49a 869
cicklaus 0:afb2650fb49a 870 //---------------------------------------------------------------------------
cicklaus 0:afb2650fb49a 871 void OS::IdleProcessUserHook() {
cicklaus 0:afb2650fb49a 872 __WFI();
cicklaus 0:afb2650fb49a 873 }