Dependencies: PinDetect TextLCD mbed mRotaryEncoder
main.cpp@0:afb2650fb49a, 2012-02-13 (annotated)
- Committer:
- cicklaus
- Date:
- Mon Feb 13 02:11:20 2012 +0000
- Revision:
- 0:afb2650fb49a
Who changed what in which revision?
User | Revision | Line number | New 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 | } |