Dependencies:   TextLCD mbed

Committer:
cicklaus
Date:
Fri Jun 01 20:46:28 2012 +0000
Revision:
0:bdcfca60d8a6

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cicklaus 0:bdcfca60d8a6 1 #include "mbed.h"
cicklaus 0:bdcfca60d8a6 2 #include "MODSERIAL.h"
cicklaus 0:bdcfca60d8a6 3 #include <stdio.h>
cicklaus 0:bdcfca60d8a6 4 #include <stdlib.h>
cicklaus 0:bdcfca60d8a6 5 #include <string.h>
cicklaus 0:bdcfca60d8a6 6 #include <iostream>
cicklaus 0:bdcfca60d8a6 7 #include "lib_crc.h"
cicklaus 0:bdcfca60d8a6 8
cicklaus 0:bdcfca60d8a6 9 // Connect the TX of the GPS module to p10 RX input
cicklaus 0:bdcfca60d8a6 10 Serial Computer(USBTX, USBRX);
cicklaus 0:bdcfca60d8a6 11 MODSERIAL gsm(p13, p14);
cicklaus 0:bdcfca60d8a6 12 DigitalOut Led(LED1);
cicklaus 0:bdcfca60d8a6 13 DigitalOut Led1(LED2);
cicklaus 0:bdcfca60d8a6 14 MODSERIAL RS485(p28,p27);
cicklaus 0:bdcfca60d8a6 15 Serial LEDScreen(p9,p10);
cicklaus 0:bdcfca60d8a6 16 DigitalOut ho(p26);
cicklaus 0:bdcfca60d8a6 17 DigitalOut led(LED3);
cicklaus 0:bdcfca60d8a6 18 Ticker flipper;
cicklaus 0:bdcfca60d8a6 19
cicklaus 0:bdcfca60d8a6 20 bool Pass = false;
cicklaus 0:bdcfca60d8a6 21 int count1 =0;
cicklaus 0:bdcfca60d8a6 22 int count2 =0;
cicklaus 0:bdcfca60d8a6 23 char buf[18];
cicklaus 0:bdcfca60d8a6 24 char Key[]="OK";
cicklaus 0:bdcfca60d8a6 25 char Hi;
cicklaus 0:bdcfca60d8a6 26 char * pch;
cicklaus 0:bdcfca60d8a6 27 char Ext1[10];
cicklaus 0:bdcfca60d8a6 28 char Ext2[10];
cicklaus 0:bdcfca60d8a6 29 char Ext3[10];
cicklaus 0:bdcfca60d8a6 30 int alert=0;
cicklaus 0:bdcfca60d8a6 31 int Status=0, Status1=0, Status2=0, Status3=0, Status4=0, Status5=0,Status6=0, Status7=0,NumberStat = 0;
cicklaus 0:bdcfca60d8a6 32 int Emer, Emer1, Emer2, Emer3;
cicklaus 0:bdcfca60d8a6 33 char Emergency[]= "1", Emergency1[]="2",Emergency2[]= "3",Emergency3[]= "4";
cicklaus 0:bdcfca60d8a6 34 char line= '\n';
cicklaus 0:bdcfca60d8a6 35 char c;
cicklaus 0:bdcfca60d8a6 36 char SMS1[] ="#Read Volt\r\n", SMS2[] ="#Read Current\r\n", SMS3[] ="#Read All\r\n", SMS4[] ="#Changenum\r\n", SMS5[] ="#Stop Log\r\n", SMS6[] ="#Hi\r\n", SMS7[] ="#Reset Emergerncy\r\n";
cicklaus 0:bdcfca60d8a6 37 char SMS[15];
cicklaus 0:bdcfca60d8a6 38 char Password[]= "1234";
cicklaus 0:bdcfca60d8a6 39 char buffer1[32];
cicklaus 0:bdcfca60d8a6 40 char str[9];
cicklaus 0:bdcfca60d8a6 41 char str2[9];
cicklaus 0:bdcfca60d8a6 42 char ctr= 0x1A;
cicklaus 0:bdcfca60d8a6 43 char buf1[40];
cicklaus 0:bdcfca60d8a6 44 char buf2[4];
cicklaus 0:bdcfca60d8a6 45 char buf3[256];
cicklaus 0:bdcfca60d8a6 46 char buf4[20];
cicklaus 0:bdcfca60d8a6 47 float FinalVoltage=0;
cicklaus 0:bdcfca60d8a6 48 bool newline_detected = false;
cicklaus 0:bdcfca60d8a6 49 char NumberMan[20];
cicklaus 0:bdcfca60d8a6 50 int PassChecker;
cicklaus 0:bdcfca60d8a6 51 int voltcount = 0;
cicklaus 0:bdcfca60d8a6 52 char modbusreply[9];
cicklaus 0:bdcfca60d8a6 53 char modbusreply1[16];
cicklaus 0:bdcfca60d8a6 54 char a[2];
cicklaus 0:bdcfca60d8a6 55 int b;
cicklaus 0:bdcfca60d8a6 56 int firsthex4; //Modbus Hex4
cicklaus 0:bdcfca60d8a6 57 int firsthex5; //MOdbus Hex5
cicklaus 0:bdcfca60d8a6 58 int Sechex4; //Modbus Hex4
cicklaus 0:bdcfca60d8a6 59 int Sechex5; //Modbus Hex5
cicklaus 0:bdcfca60d8a6 60 char hi= 0x48;
cicklaus 0:bdcfca60d8a6 61 int count = 0;
cicklaus 0:bdcfca60d8a6 62 //uint32_t EnergyGen;
cicklaus 0:bdcfca60d8a6 63 //uint32_t Energyused;
cicklaus 0:bdcfca60d8a6 64 int EnergyGen;
cicklaus 0:bdcfca60d8a6 65 int Energyused;
cicklaus 0:bdcfca60d8a6 66 char crc[10];
cicklaus 0:bdcfca60d8a6 67 char crc1;
cicklaus 0:bdcfca60d8a6 68 char buffer [10];
cicklaus 0:bdcfca60d8a6 69 bool Dam = false;
cicklaus 0:bdcfca60d8a6 70
cicklaus 0:bdcfca60d8a6 71
cicklaus 0:bdcfca60d8a6 72
cicklaus 0:bdcfca60d8a6 73
cicklaus 0:bdcfca60d8a6 74
cicklaus 0:bdcfca60d8a6 75 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 76
cicklaus 0:bdcfca60d8a6 77 void LEDSerialstart() { //Starting code for LED Screen
cicklaus 0:bdcfca60d8a6 78 LEDScreen.putc(0x00);
cicklaus 0:bdcfca60d8a6 79 LEDScreen.putc(0xff);
cicklaus 0:bdcfca60d8a6 80 LEDScreen.putc(0xff);
cicklaus 0:bdcfca60d8a6 81 LEDScreen.putc(0x00);
cicklaus 0:bdcfca60d8a6 82 LEDScreen.putc(0x0b);
cicklaus 0:bdcfca60d8a6 83 LEDScreen.putc(0x00);
cicklaus 0:bdcfca60d8a6 84 LEDScreen.putc(0x01);
cicklaus 0:bdcfca60d8a6 85 LEDScreen.putc(0xff);
cicklaus 0:bdcfca60d8a6 86 LEDScreen.putc(0x01);
cicklaus 0:bdcfca60d8a6 87 LEDScreen.putc(0x01);
cicklaus 0:bdcfca60d8a6 88 LEDScreen.putc(0x03);
cicklaus 0:bdcfca60d8a6 89 LEDScreen.putc(0xef);
cicklaus 0:bdcfca60d8a6 90 LEDScreen.putc(0xb0);
cicklaus 0:bdcfca60d8a6 91 LEDScreen.putc(0xef);
cicklaus 0:bdcfca60d8a6 92 LEDScreen.putc(0xa2);
cicklaus 0:bdcfca60d8a6 93 }
cicklaus 0:bdcfca60d8a6 94 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 95 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 96
cicklaus 0:bdcfca60d8a6 97 void New_Screen() { //New Frame for LED screeen
cicklaus 0:bdcfca60d8a6 98 LEDScreen.putc(0xef);
cicklaus 0:bdcfca60d8a6 99 LEDScreen.putc(0xb1);
cicklaus 0:bdcfca60d8a6 100 LEDScreen.putc(0xef);
cicklaus 0:bdcfca60d8a6 101 LEDScreen.putc(0xa0);
cicklaus 0:bdcfca60d8a6 102 LEDScreen.putc(0xff);
cicklaus 0:bdcfca60d8a6 103 LEDScreen.putc(0xef);
cicklaus 0:bdcfca60d8a6 104 LEDScreen.putc(0xb0);
cicklaus 0:bdcfca60d8a6 105 LEDScreen.putc(0xef);
cicklaus 0:bdcfca60d8a6 106 LEDScreen.putc(0xa2);
cicklaus 0:bdcfca60d8a6 107
cicklaus 0:bdcfca60d8a6 108 }
cicklaus 0:bdcfca60d8a6 109 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 110 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 111
cicklaus 0:bdcfca60d8a6 112 void LEDSerial_end() { //Ending code for LED screen
cicklaus 0:bdcfca60d8a6 113 LEDScreen.putc(0xff);
cicklaus 0:bdcfca60d8a6 114 LEDScreen.putc(0xff);
cicklaus 0:bdcfca60d8a6 115 LEDScreen.putc(0x00);
cicklaus 0:bdcfca60d8a6 116 }
cicklaus 0:bdcfca60d8a6 117 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 118 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 119
cicklaus 0:bdcfca60d8a6 120 /*void MasterRequest1() { //Request accumulative Kwh from Modbus 1
cicklaus 0:bdcfca60d8a6 121 ho= 1;
cicklaus 0:bdcfca60d8a6 122 wait(0.1);
cicklaus 0:bdcfca60d8a6 123 RS485.putc(0x01);
cicklaus 0:bdcfca60d8a6 124 RS485.putc(0x03);
cicklaus 0:bdcfca60d8a6 125 RS485.putc(0x00);
cicklaus 0:bdcfca60d8a6 126 RS485.putc(0x04);
cicklaus 0:bdcfca60d8a6 127 RS485.putc(0x00);
cicklaus 0:bdcfca60d8a6 128 RS485.putc(0x02);
cicklaus 0:bdcfca60d8a6 129 RS485.putc(0x85);
cicklaus 0:bdcfca60d8a6 130 RS485.putc(0xca);
cicklaus 0:bdcfca60d8a6 131 wait(0.009);
cicklaus 0:bdcfca60d8a6 132 }
cicklaus 0:bdcfca60d8a6 133 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 134 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 135
cicklaus 0:bdcfca60d8a6 136 void SlaveReply1() { //Reply from Modbus1
cicklaus 0:bdcfca60d8a6 137
cicklaus 0:bdcfca60d8a6 138 ho= 0;
cicklaus 0:bdcfca60d8a6 139 wait(0.0025);
cicklaus 0:bdcfca60d8a6 140 while (RS485.readable()) {
cicklaus 0:bdcfca60d8a6 141 RS485.getc();
cicklaus 0:bdcfca60d8a6 142 }
cicklaus 0:bdcfca60d8a6 143 for (int count = 0; count!=6; count++) {
cicklaus 0:bdcfca60d8a6 144 b= RS485.getc();
cicklaus 0:bdcfca60d8a6 145 Computer.putc(c);
cicklaus 0:bdcfca60d8a6 146 modbusreply[count] = b;
cicklaus 0:bdcfca60d8a6 147 }
cicklaus 0:bdcfca60d8a6 148 RS485.getc();
cicklaus 0:bdcfca60d8a6 149 a[0]= RS485.getc();
cicklaus 0:bdcfca60d8a6 150 a[1]= RS485.getc();
cicklaus 0:bdcfca60d8a6 151 int nValue = a[0] + (a[1] << 8); // combining 2 bytes into an int then convert to 2 byte hex
cicklaus 0:bdcfca60d8a6 152
cicklaus 0:bdcfca60d8a6 153 if (calculate_crc16_Modbus(modbusreply, 7)== nValue) {
cicklaus 0:bdcfca60d8a6 154 firsthex4 = modbusreply[3];
cicklaus 0:bdcfca60d8a6 155 firsthex5 = modbusreply[4];
cicklaus 0:bdcfca60d8a6 156 EnergyGen =((firsthex4*256) + firsthex5);
cicklaus 0:bdcfca60d8a6 157 printf("Energy Generate: %d kWh\n\r",EnergyGen);
cicklaus 0:bdcfca60d8a6 158
cicklaus 0:bdcfca60d8a6 159 }
cicklaus 0:bdcfca60d8a6 160 }*/
cicklaus 0:bdcfca60d8a6 161
cicklaus 0:bdcfca60d8a6 162 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 163 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 164
cicklaus 0:bdcfca60d8a6 165 void MasterRequest2() { //Request accumulative Kwh from Modbus 2 (ERROR)
cicklaus 0:bdcfca60d8a6 166 ho= 1;
cicklaus 0:bdcfca60d8a6 167 wait(0.1);
cicklaus 0:bdcfca60d8a6 168 RS485.putc(0x02);
cicklaus 0:bdcfca60d8a6 169 RS485.putc(0x03);
cicklaus 0:bdcfca60d8a6 170 RS485.putc(0x00);
cicklaus 0:bdcfca60d8a6 171 RS485.putc(0x0a);
cicklaus 0:bdcfca60d8a6 172 RS485.putc(0x00);
cicklaus 0:bdcfca60d8a6 173 RS485.putc(0x02);
cicklaus 0:bdcfca60d8a6 174 RS485.putc(0xe4);
cicklaus 0:bdcfca60d8a6 175 RS485.putc(0x3a);
cicklaus 0:bdcfca60d8a6 176 wait(0.009);
cicklaus 0:bdcfca60d8a6 177 }
cicklaus 0:bdcfca60d8a6 178 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 179 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 180
cicklaus 0:bdcfca60d8a6 181 void SlaveReply2() { //Reply from Modbus1 (ERROR)
cicklaus 0:bdcfca60d8a6 182
cicklaus 0:bdcfca60d8a6 183 ho= 0;
cicklaus 0:bdcfca60d8a6 184 // wait(0.0025);
cicklaus 0:bdcfca60d8a6 185 wait(0.005);
cicklaus 0:bdcfca60d8a6 186 RS485.getc();
cicklaus 0:bdcfca60d8a6 187
cicklaus 0:bdcfca60d8a6 188 do{
cicklaus 0:bdcfca60d8a6 189 b = RS485.getc();
cicklaus 0:bdcfca60d8a6 190 // Computer.putc(b);
cicklaus 0:bdcfca60d8a6 191 }while(b == 0x00);
cicklaus 0:bdcfca60d8a6 192 // b = RS485.getc();
cicklaus 0:bdcfca60d8a6 193 Computer.putc(b);
cicklaus 0:bdcfca60d8a6 194 modbusreply1[0] = b;
cicklaus 0:bdcfca60d8a6 195
cicklaus 0:bdcfca60d8a6 196 for (int count2 = 1; count2!=7; count2++) {
cicklaus 0:bdcfca60d8a6 197
cicklaus 0:bdcfca60d8a6 198 // modbusreply1[count2] = b;
cicklaus 0:bdcfca60d8a6 199 b= RS485.getc();
cicklaus 0:bdcfca60d8a6 200 Computer.putc(b);
cicklaus 0:bdcfca60d8a6 201 modbusreply1[count2] = b;
cicklaus 0:bdcfca60d8a6 202 }
cicklaus 0:bdcfca60d8a6 203 RS485.getc();
cicklaus 0:bdcfca60d8a6 204
cicklaus 0:bdcfca60d8a6 205 a[1]= RS485.getc();
cicklaus 0:bdcfca60d8a6 206 a[0]= RS485.getc();
cicklaus 0:bdcfca60d8a6 207 int nValue = a[0] + (a[1] << 8); // combining 2 bytes into an int then convert to 2 byte hex
cicklaus 0:bdcfca60d8a6 208
cicklaus 0:bdcfca60d8a6 209 // if (calculate_crc16_Modbus(modbusreply1, 7)== nValue) {
cicklaus 0:bdcfca60d8a6 210 Sechex4 = modbusreply1[3];
cicklaus 0:bdcfca60d8a6 211 Sechex5 = modbusreply1[4];
cicklaus 0:bdcfca60d8a6 212 Energyused =((Sechex4*256) + Sechex5);
cicklaus 0:bdcfca60d8a6 213 // printf("Energy Used: %d kWh\n\r",Energyused);
cicklaus 0:bdcfca60d8a6 214 // printf("E: %04X kWh\n\r",calculate_crc16_Modbus(modbusreply1, 7));
cicklaus 0:bdcfca60d8a6 215 // printf("W: %04X kWh\n\r",nValue);
cicklaus 0:bdcfca60d8a6 216 //}
cicklaus 0:bdcfca60d8a6 217 }
cicklaus 0:bdcfca60d8a6 218 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 219
cicklaus 0:bdcfca60d8a6 220 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 221 void GSM_GETCHAR() { //Get character (e.g. Printf the Words from serial)
cicklaus 0:bdcfca60d8a6 222 do {
cicklaus 0:bdcfca60d8a6 223 c=gsm.getc();
cicklaus 0:bdcfca60d8a6 224 Computer.putc (c);
cicklaus 0:bdcfca60d8a6 225 } while (c != line);
cicklaus 0:bdcfca60d8a6 226 }
cicklaus 0:bdcfca60d8a6 227 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 228
cicklaus 0:bdcfca60d8a6 229 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 230 void GSM_CLEAR_SMS() { //Delete 1st SMS
cicklaus 0:bdcfca60d8a6 231 gsm.printf("AT+CMGD=0,1\r\n");
cicklaus 0:bdcfca60d8a6 232 wait(0.3);
cicklaus 0:bdcfca60d8a6 233 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 234
cicklaus 0:bdcfca60d8a6 235
cicklaus 0:bdcfca60d8a6 236 }
cicklaus 0:bdcfca60d8a6 237 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 238
cicklaus 0:bdcfca60d8a6 239 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 240 void GSM_GETCHAR1() { //Get character (e.g. Printf the Words from serial)
cicklaus 0:bdcfca60d8a6 241 strcpy (str,&Hi);
cicklaus 0:bdcfca60d8a6 242 do {
cicklaus 0:bdcfca60d8a6 243 c=gsm.getc();
cicklaus 0:bdcfca60d8a6 244 Computer.putc (c);
cicklaus 0:bdcfca60d8a6 245 strcat (str,&c);
cicklaus 0:bdcfca60d8a6 246
cicklaus 0:bdcfca60d8a6 247 } while (c != line);
cicklaus 0:bdcfca60d8a6 248 Computer.printf("%s\n\r",str);
cicklaus 0:bdcfca60d8a6 249
cicklaus 0:bdcfca60d8a6 250
cicklaus 0:bdcfca60d8a6 251 }
cicklaus 0:bdcfca60d8a6 252 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 253 void Checkit() { //Clear Extra character from GSM
cicklaus 0:bdcfca60d8a6 254
cicklaus 0:bdcfca60d8a6 255 wait(1);
cicklaus 0:bdcfca60d8a6 256 while (gsm.readable()) {
cicklaus 0:bdcfca60d8a6 257 gsm.getc();
cicklaus 0:bdcfca60d8a6 258 }
cicklaus 0:bdcfca60d8a6 259 }
cicklaus 0:bdcfca60d8a6 260
cicklaus 0:bdcfca60d8a6 261 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 262 void SMS_Alert() { //Alert User abt error (NOT COMPLETED.What type of error to trigger SMS)
cicklaus 0:bdcfca60d8a6 263 if (voltcount==10) {
cicklaus 0:bdcfca60d8a6 264 if (alert == 0) {
cicklaus 0:bdcfca60d8a6 265 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 266 gsm.printf("AT+CMGS=%s\r\n",Emergency); //Send SMS
cicklaus 0:bdcfca60d8a6 267 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 268 gsm.printf("Alert: Voltage has been 0V for the pass 1 hour %c",ctr);
cicklaus 0:bdcfca60d8a6 269 wait(0.3);
cicklaus 0:bdcfca60d8a6 270 gsm.printf("%c", ctr);
cicklaus 0:bdcfca60d8a6 271 alert = 1;
cicklaus 0:bdcfca60d8a6 272
cicklaus 0:bdcfca60d8a6 273 }
cicklaus 0:bdcfca60d8a6 274 }
cicklaus 0:bdcfca60d8a6 275 }
cicklaus 0:bdcfca60d8a6 276 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 277
cicklaus 0:bdcfca60d8a6 278 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 279 void Replyvolt() { //Reply energy generated
cicklaus 0:bdcfca60d8a6 280 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 281 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:bdcfca60d8a6 282 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 283 gsm.printf("The Power is %s W %c", buffer,ctr);
cicklaus 0:bdcfca60d8a6 284 wait(0.3);
cicklaus 0:bdcfca60d8a6 285 gsm.printf("%c", ctr);
cicklaus 0:bdcfca60d8a6 286 // wait(1.5);
cicklaus 0:bdcfca60d8a6 287 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 288 }
cicklaus 0:bdcfca60d8a6 289 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 290
cicklaus 0:bdcfca60d8a6 291
cicklaus 0:bdcfca60d8a6 292 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 293 void Replycurent() { //Reply energy used
cicklaus 0:bdcfca60d8a6 294 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 295 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:bdcfca60d8a6 296 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 297 gsm.printf("The Current is %.2f V %c",FinalVoltage,ctr);
cicklaus 0:bdcfca60d8a6 298 wait(0.3);
cicklaus 0:bdcfca60d8a6 299 gsm.printf("%c", ctr);
cicklaus 0:bdcfca60d8a6 300 // wait(2.5);
cicklaus 0:bdcfca60d8a6 301 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 302
cicklaus 0:bdcfca60d8a6 303 }
cicklaus 0:bdcfca60d8a6 304 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 305
cicklaus 0:bdcfca60d8a6 306 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 307 void Replyall() { //Reply Energy gen and used
cicklaus 0:bdcfca60d8a6 308 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 309 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:bdcfca60d8a6 310 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 311 gsm.printf("Voltage: %.2f V, Current: %.2f A %c", FinalVoltage, FinalVoltage,ctr);
cicklaus 0:bdcfca60d8a6 312 wait(0.3);
cicklaus 0:bdcfca60d8a6 313 gsm.printf("%c", ctr);
cicklaus 0:bdcfca60d8a6 314 wait(2.5);
cicklaus 0:bdcfca60d8a6 315 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 316 }
cicklaus 0:bdcfca60d8a6 317 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 318 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 319 void Change_Number() { //Change Emergency Number
cicklaus 0:bdcfca60d8a6 320 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 321 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:bdcfca60d8a6 322 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 323 gsm.printf("Plese sms back the following in order: Password, Current Number, New Number %c",ctr);
cicklaus 0:bdcfca60d8a6 324 wait(0.3);
cicklaus 0:bdcfca60d8a6 325 gsm.printf("%c", ctr);
cicklaus 0:bdcfca60d8a6 326 strcpy (NumberMan,buf4);
cicklaus 0:bdcfca60d8a6 327 wait(2.5);
cicklaus 0:bdcfca60d8a6 328 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 329
cicklaus 0:bdcfca60d8a6 330
cicklaus 0:bdcfca60d8a6 331 }
cicklaus 0:bdcfca60d8a6 332
cicklaus 0:bdcfca60d8a6 333 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 334 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 335 void CheckSMSMSG() { //Check MSG receive from Sender
cicklaus 0:bdcfca60d8a6 336 Status1 = strcmp (SMS1,str);
cicklaus 0:bdcfca60d8a6 337 Status2 = strcmp (SMS2,str);
cicklaus 0:bdcfca60d8a6 338 Status3 = strcmp (SMS3,str);
cicklaus 0:bdcfca60d8a6 339 Status4 = strcmp (SMS4,str);
cicklaus 0:bdcfca60d8a6 340 Status5 = strcmp (SMS5,str);
cicklaus 0:bdcfca60d8a6 341 Status6 = strcmp (SMS6,str);
cicklaus 0:bdcfca60d8a6 342 Status7 = strcmp (SMS7,str);
cicklaus 0:bdcfca60d8a6 343
cicklaus 0:bdcfca60d8a6 344 if (Status1 == 0) {
cicklaus 0:bdcfca60d8a6 345 Replyvolt();
cicklaus 0:bdcfca60d8a6 346 Checkit();
cicklaus 0:bdcfca60d8a6 347 }
cicklaus 0:bdcfca60d8a6 348 if (Status2 == 0) {
cicklaus 0:bdcfca60d8a6 349 Replycurent();
cicklaus 0:bdcfca60d8a6 350 Checkit();
cicklaus 0:bdcfca60d8a6 351 }
cicklaus 0:bdcfca60d8a6 352
cicklaus 0:bdcfca60d8a6 353 if (Status3 == 0) {
cicklaus 0:bdcfca60d8a6 354 Replyall();
cicklaus 0:bdcfca60d8a6 355 Checkit();
cicklaus 0:bdcfca60d8a6 356 }
cicklaus 0:bdcfca60d8a6 357 if (Status4 == 0) {
cicklaus 0:bdcfca60d8a6 358 Change_Number();
cicklaus 0:bdcfca60d8a6 359 Checkit();
cicklaus 0:bdcfca60d8a6 360 }
cicklaus 0:bdcfca60d8a6 361 if (Status5 == 0) {
cicklaus 0:bdcfca60d8a6 362
cicklaus 0:bdcfca60d8a6 363 }
cicklaus 0:bdcfca60d8a6 364 if (Status1!=0 && Status2!=0 &&Status3!=0 &&Status4!=0 &&Status5!=0) {
cicklaus 0:bdcfca60d8a6 365 Computer.printf("Random SMS\n\r");
cicklaus 0:bdcfca60d8a6 366 }
cicklaus 0:bdcfca60d8a6 367 }
cicklaus 0:bdcfca60d8a6 368 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 369 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 370 void CheckPassword() { //Change Password Function
cicklaus 0:bdcfca60d8a6 371 PassChecker = strcmp (Password,Ext1); //Check if Password is correct
cicklaus 0:bdcfca60d8a6 372 if (PassChecker != 0) { //If password is incorrect. Reply Invalid Password
cicklaus 0:bdcfca60d8a6 373 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 374 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:bdcfca60d8a6 375 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 376 gsm.printf("Invalid Password %c",ctr);
cicklaus 0:bdcfca60d8a6 377 strcpy (NumberMan,&Hi);
cicklaus 0:bdcfca60d8a6 378 gsm.printf("%c", ctr);
cicklaus 0:bdcfca60d8a6 379 wait(2.5);
cicklaus 0:bdcfca60d8a6 380 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 381 Checkit();
cicklaus 0:bdcfca60d8a6 382 } else { //Otherwise, Pass is true. ....go to funtion "Old_Number"
cicklaus 0:bdcfca60d8a6 383 Pass = true;
cicklaus 0:bdcfca60d8a6 384 }
cicklaus 0:bdcfca60d8a6 385 // Checkit();
cicklaus 0:bdcfca60d8a6 386
cicklaus 0:bdcfca60d8a6 387 }
cicklaus 0:bdcfca60d8a6 388 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 389 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 390 void Old_Number() { //trigger if password is true
cicklaus 0:bdcfca60d8a6 391 if (Pass== true) {
cicklaus 0:bdcfca60d8a6 392 Emer = strcmp (Emergency,Ext2); //Check if Number is emergency 1
cicklaus 0:bdcfca60d8a6 393 Emer1 = strcmp (Emergency1,Ext2); //Check if Number is emergency 2
cicklaus 0:bdcfca60d8a6 394 Emer2 = strcmp (Emergency2,Ext2); //Check if Number is emergency 3
cicklaus 0:bdcfca60d8a6 395 Emer3 = strcmp (Emergency3,Ext2); //Check if Number is emergency 4
cicklaus 0:bdcfca60d8a6 396 if (Emer == 0) {
cicklaus 0:bdcfca60d8a6 397 strcpy (Emergency,Ext3);
cicklaus 0:bdcfca60d8a6 398 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 399 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:bdcfca60d8a6 400 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 401 gsm.printf("Emergency Number \"%s\" is set %c",Emergency, ctr);
cicklaus 0:bdcfca60d8a6 402 strcpy (NumberMan,&Hi);
cicklaus 0:bdcfca60d8a6 403 gsm.printf("%c", ctr);
cicklaus 0:bdcfca60d8a6 404 wait(2.5);
cicklaus 0:bdcfca60d8a6 405 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 406 Checkit();
cicklaus 0:bdcfca60d8a6 407 }
cicklaus 0:bdcfca60d8a6 408 if (Emer1 == 0) {
cicklaus 0:bdcfca60d8a6 409 strcpy (Emergency1,Ext3);
cicklaus 0:bdcfca60d8a6 410 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 411 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:bdcfca60d8a6 412 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 413 gsm.printf("Emergency Number \"%s\" is set %c",Emergency1, ctr);
cicklaus 0:bdcfca60d8a6 414 strcpy (NumberMan,&Hi);
cicklaus 0:bdcfca60d8a6 415 gsm.printf("%c", ctr);
cicklaus 0:bdcfca60d8a6 416 wait(2.5);
cicklaus 0:bdcfca60d8a6 417 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 418 Checkit();
cicklaus 0:bdcfca60d8a6 419 }
cicklaus 0:bdcfca60d8a6 420 if (Emer2 == 0) {
cicklaus 0:bdcfca60d8a6 421 strcpy (Emergency2,Ext3);
cicklaus 0:bdcfca60d8a6 422 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 423 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:bdcfca60d8a6 424 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 425 gsm.printf("Emergency Number \"%s\" is set %c",Emergency2, ctr);
cicklaus 0:bdcfca60d8a6 426 strcpy (NumberMan,&Hi);
cicklaus 0:bdcfca60d8a6 427 gsm.printf("%c", ctr);
cicklaus 0:bdcfca60d8a6 428 wait(2.5);
cicklaus 0:bdcfca60d8a6 429 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 430 Checkit();
cicklaus 0:bdcfca60d8a6 431 }
cicklaus 0:bdcfca60d8a6 432 if (Emer3 == 0) {
cicklaus 0:bdcfca60d8a6 433 strcpy (Emergency3,Ext3);
cicklaus 0:bdcfca60d8a6 434 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 435 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:bdcfca60d8a6 436 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 437 gsm.printf("Emergency Number \"%s\" is set %c",Emergency3, ctr);
cicklaus 0:bdcfca60d8a6 438 strcpy (NumberMan,&Hi);
cicklaus 0:bdcfca60d8a6 439 gsm.printf("%c", ctr);
cicklaus 0:bdcfca60d8a6 440 wait(2.5);
cicklaus 0:bdcfca60d8a6 441 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 442 Checkit();
cicklaus 0:bdcfca60d8a6 443 }
cicklaus 0:bdcfca60d8a6 444 if (Emer != 0 && Emer1 != 0 && Emer2 != 0 && Emer3 != 0) {
cicklaus 0:bdcfca60d8a6 445 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 446 gsm.printf("AT+CMGS=%s\r\n",buf4); //Send SMS
cicklaus 0:bdcfca60d8a6 447 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 448 gsm.printf("No such Number %c",Emergency3, ctr);
cicklaus 0:bdcfca60d8a6 449 strcpy (NumberMan,&Hi);
cicklaus 0:bdcfca60d8a6 450 gsm.printf("%c", ctr);
cicklaus 0:bdcfca60d8a6 451 wait(2.5);
cicklaus 0:bdcfca60d8a6 452 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 453 Checkit();
cicklaus 0:bdcfca60d8a6 454 }
cicklaus 0:bdcfca60d8a6 455 }
cicklaus 0:bdcfca60d8a6 456
cicklaus 0:bdcfca60d8a6 457
cicklaus 0:bdcfca60d8a6 458 }
cicklaus 0:bdcfca60d8a6 459
cicklaus 0:bdcfca60d8a6 460
cicklaus 0:bdcfca60d8a6 461 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 462 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 463 void Check_Number() {
cicklaus 0:bdcfca60d8a6 464 pch = strtok (str," ,.-");
cicklaus 0:bdcfca60d8a6 465 strcpy (Ext1,pch);
cicklaus 0:bdcfca60d8a6 466 pch = strtok (NULL, " ,.-");
cicklaus 0:bdcfca60d8a6 467 strcpy (Ext2,pch);
cicklaus 0:bdcfca60d8a6 468 pch = strtok (NULL, " ,.-");
cicklaus 0:bdcfca60d8a6 469 strcpy (Ext3,pch);
cicklaus 0:bdcfca60d8a6 470 }
cicklaus 0:bdcfca60d8a6 471 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 472 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 473 void ExtractNum() { //Extract the number from the sender's sms
cicklaus 0:bdcfca60d8a6 474 pch = strtok (buf3," ,.-");
cicklaus 0:bdcfca60d8a6 475 pch = strtok (NULL, " ,.-");
cicklaus 0:bdcfca60d8a6 476 //pc.printf ("pch is %s\n\r",pch); //See Number extracted
cicklaus 0:bdcfca60d8a6 477 strcpy (buf4,pch);
cicklaus 0:bdcfca60d8a6 478 Computer.printf("%s\n\r", buf4); //Number extracted in "+6512345678"
cicklaus 0:bdcfca60d8a6 479 }
cicklaus 0:bdcfca60d8a6 480 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 481
cicklaus 0:bdcfca60d8a6 482
cicklaus 0:bdcfca60d8a6 483 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 484 void Sending() {
cicklaus 0:bdcfca60d8a6 485 if (Status==36) {
cicklaus 0:bdcfca60d8a6 486 time_t seconds = time(NULL);
cicklaus 0:bdcfca60d8a6 487 gsm.scanf("%s",buf2);
cicklaus 0:bdcfca60d8a6 488 gsm.scanf("%s",buf3); //Scan ["READ","+6512345678",,"12/01/18,23:54:25+32"]
cicklaus 0:bdcfca60d8a6 489 ExtractNum(); //to extract number
cicklaus 0:bdcfca60d8a6 490
cicklaus 0:bdcfca60d8a6 491 Computer.printf("The Message is:\n\r");
cicklaus 0:bdcfca60d8a6 492 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 493
cicklaus 0:bdcfca60d8a6 494 GSM_GETCHAR1(); //Extract sms(e.g.SMSing "#ReadVolt" will give u voltage reading)
cicklaus 0:bdcfca60d8a6 495 GSM_GETCHAR();
cicklaus 0:bdcfca60d8a6 496
cicklaus 0:bdcfca60d8a6 497 GSM_CLEAR_SMS(); //Delete 1st Message
cicklaus 0:bdcfca60d8a6 498 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 499
cicklaus 0:bdcfca60d8a6 500 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 501 }
cicklaus 0:bdcfca60d8a6 502 }
cicklaus 0:bdcfca60d8a6 503 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 504
cicklaus 0:bdcfca60d8a6 505 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 506
cicklaus 0:bdcfca60d8a6 507 void GSM_CHECK_MSG() { //Check if msg is OK,Error.
cicklaus 0:bdcfca60d8a6 508 Status = strcmp (Key,buf1);
cicklaus 0:bdcfca60d8a6 509 //pc.printf("%d\n\r", Status); //See the error Number
cicklaus 0:bdcfca60d8a6 510 }
cicklaus 0:bdcfca60d8a6 511 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 512
cicklaus 0:bdcfca60d8a6 513
cicklaus 0:bdcfca60d8a6 514 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 515 void ReceiveMessage() {
cicklaus 0:bdcfca60d8a6 516 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 517 gsm.printf("AT+CMGR=\"1\"\n\r"); //Read Message.
cicklaus 0:bdcfca60d8a6 518 gsm.scanf("%s",buf);
cicklaus 0:bdcfca60d8a6 519 gsm.scanf("%s",buf1);
cicklaus 0:bdcfca60d8a6 520
cicklaus 0:bdcfca60d8a6 521 GSM_CHECK_MSG(); //Check For reply. If Ok, no sms. if error, no sms.
cicklaus 0:bdcfca60d8a6 522 }
cicklaus 0:bdcfca60d8a6 523 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 524
cicklaus 0:bdcfca60d8a6 525 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 526 void rxCallback(MODSERIAL_IRQ_INFO *q) { //Interrupt trigger
cicklaus 0:bdcfca60d8a6 527 MODSERIAL *serial = q->serial;
cicklaus 0:bdcfca60d8a6 528
cicklaus 0:bdcfca60d8a6 529 if ( serial->rxGetLastChar() == '\n') {
cicklaus 0:bdcfca60d8a6 530 newline_detected = true;
cicklaus 0:bdcfca60d8a6 531 Led1= 1;
cicklaus 0:bdcfca60d8a6 532 }
cicklaus 0:bdcfca60d8a6 533 }
cicklaus 0:bdcfca60d8a6 534 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 535
cicklaus 0:bdcfca60d8a6 536 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 537
cicklaus 0:bdcfca60d8a6 538 void TimeMessage1() { //Get character (e.g. Printf the Words from serial)
cicklaus 0:bdcfca60d8a6 539 strcpy (str,&Hi);
cicklaus 0:bdcfca60d8a6 540 do {
cicklaus 0:bdcfca60d8a6 541 c=Computer.getc();
cicklaus 0:bdcfca60d8a6 542 Computer.putc (c);
cicklaus 0:bdcfca60d8a6 543 strcpy (str2,&c);
cicklaus 0:bdcfca60d8a6 544 // printf("The %s.", str2);
cicklaus 0:bdcfca60d8a6 545 strcat (str,&c);
cicklaus 0:bdcfca60d8a6 546 } while (c != ' ');
cicklaus 0:bdcfca60d8a6 547 }
cicklaus 0:bdcfca60d8a6 548
cicklaus 0:bdcfca60d8a6 549 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 550 void GSM_STARTUP() {
cicklaus 0:bdcfca60d8a6 551
cicklaus 0:bdcfca60d8a6 552 gsm.baud(9600);
cicklaus 0:bdcfca60d8a6 553 Computer.baud(9600);
cicklaus 0:bdcfca60d8a6 554 gsm.format(8, Serial::None, 1);
cicklaus 0:bdcfca60d8a6 555
cicklaus 0:bdcfca60d8a6 556 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 557 Computer.printf("\n\rSetting Up GSM\n\r");
cicklaus 0:bdcfca60d8a6 558 Computer.printf("---------------\n\r\n\r");
cicklaus 0:bdcfca60d8a6 559 gsm.printf("AT+CMGF=\"1\"\r\n");
cicklaus 0:bdcfca60d8a6 560 gsm.scanf("%s",buf);
cicklaus 0:bdcfca60d8a6 561 //pc.printf("buf1 is: %s\r\n",buf);
cicklaus 0:bdcfca60d8a6 562 gsm.scanf("%s",buf3); //scanf OK
cicklaus 0:bdcfca60d8a6 563 Computer.printf("%s\r\n",buf3);
cicklaus 0:bdcfca60d8a6 564 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 565 GSM_CLEAR_SMS();
cicklaus 0:bdcfca60d8a6 566 Computer.printf("...GSM Setup Done\n\r\n\r\n\r");
cicklaus 0:bdcfca60d8a6 567 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 568 }
cicklaus 0:bdcfca60d8a6 569 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 570
cicklaus 0:bdcfca60d8a6 571 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 572
cicklaus 0:bdcfca60d8a6 573 void Mainly() { //Getting Data and putting on LED Screen
cicklaus 0:bdcfca60d8a6 574 Computer.baud(9600);
cicklaus 0:bdcfca60d8a6 575 // MasterRequest1();
cicklaus 0:bdcfca60d8a6 576 // SlaveReply1();
cicklaus 0:bdcfca60d8a6 577 wait(5);
cicklaus 0:bdcfca60d8a6 578 MasterRequest2();
cicklaus 0:bdcfca60d8a6 579 SlaveReply2();
cicklaus 0:bdcfca60d8a6 580 count = 0;
cicklaus 0:bdcfca60d8a6 581 count1= 0;
cicklaus 0:bdcfca60d8a6 582 sprintf (buffer, "%d",EnergyGen);
cicklaus 0:bdcfca60d8a6 583 sprintf (buffer1, "%d",Energyused);
cicklaus 0:bdcfca60d8a6 584 wait(1);
cicklaus 0:bdcfca60d8a6 585 Computer.baud(2400);
cicklaus 0:bdcfca60d8a6 586 wait(1);
cicklaus 0:bdcfca60d8a6 587 LEDSerialstart();
cicklaus 0:bdcfca60d8a6 588 LEDScreen.printf("Energy Generated: %s Kwh",buffer);
cicklaus 0:bdcfca60d8a6 589 New_Screen();
cicklaus 0:bdcfca60d8a6 590 LEDScreen.printf("Energy Used: %s Kwh",buffer1);
cicklaus 0:bdcfca60d8a6 591 LEDSerial_end();
cicklaus 0:bdcfca60d8a6 592 wait(0.5);
cicklaus 0:bdcfca60d8a6 593 Computer.baud(9600);
cicklaus 0:bdcfca60d8a6 594 wait(1);
cicklaus 0:bdcfca60d8a6 595
cicklaus 0:bdcfca60d8a6 596 }
cicklaus 0:bdcfca60d8a6 597 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 598 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 599
cicklaus 0:bdcfca60d8a6 600 void Trigger() { // trigger for gathering data
cicklaus 0:bdcfca60d8a6 601 Dam = true;
cicklaus 0:bdcfca60d8a6 602 }
cicklaus 0:bdcfca60d8a6 603 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 604
cicklaus 0:bdcfca60d8a6 605 //------------------------------------------------------------------------------------------------------------------
cicklaus 0:bdcfca60d8a6 606
cicklaus 0:bdcfca60d8a6 607
cicklaus 0:bdcfca60d8a6 608 int main() {
cicklaus 0:bdcfca60d8a6 609 GSM_STARTUP();
cicklaus 0:bdcfca60d8a6 610 gsm.attach(&rxCallback, MODSERIAL::RxIrq);
cicklaus 0:bdcfca60d8a6 611 RS485.baud(9600);
cicklaus 0:bdcfca60d8a6 612 LEDScreen.baud(2400);
cicklaus 0:bdcfca60d8a6 613 flipper.attach(&Trigger, 10.0);
cicklaus 0:bdcfca60d8a6 614
cicklaus 0:bdcfca60d8a6 615
cicklaus 0:bdcfca60d8a6 616 // Wait here until we detect the \n going into the buffer.
cicklaus 0:bdcfca60d8a6 617 while (! newline_detected ) {
cicklaus 0:bdcfca60d8a6 618
cicklaus 0:bdcfca60d8a6 619 Led = !Led;
cicklaus 0:bdcfca60d8a6 620 wait(1);
cicklaus 0:bdcfca60d8a6 621
cicklaus 0:bdcfca60d8a6 622
cicklaus 0:bdcfca60d8a6 623 if (Dam == true) {
cicklaus 0:bdcfca60d8a6 624 Mainly();
cicklaus 0:bdcfca60d8a6 625 Dam =false;
cicklaus 0:bdcfca60d8a6 626 }
cicklaus 0:bdcfca60d8a6 627
cicklaus 0:bdcfca60d8a6 628 if (newline_detected == true) {
cicklaus 0:bdcfca60d8a6 629 printf("%d\n\r",count1);
cicklaus 0:bdcfca60d8a6 630 ReceiveMessage();
cicklaus 0:bdcfca60d8a6 631 Sending();
cicklaus 0:bdcfca60d8a6 632 NumberStat = strcmp (NumberMan,buf4);
cicklaus 0:bdcfca60d8a6 633
cicklaus 0:bdcfca60d8a6 634 switch (NumberStat) {
cicklaus 0:bdcfca60d8a6 635
cicklaus 0:bdcfca60d8a6 636 case 0:
cicklaus 0:bdcfca60d8a6 637 Check_Number();
cicklaus 0:bdcfca60d8a6 638 CheckPassword();
cicklaus 0:bdcfca60d8a6 639 Old_Number();
cicklaus 0:bdcfca60d8a6 640 strcpy (NumberMan,&Hi);
cicklaus 0:bdcfca60d8a6 641 Pass = false;
cicklaus 0:bdcfca60d8a6 642 Computer.printf("Hi\n\r");
cicklaus 0:bdcfca60d8a6 643 newline_detected = false;
cicklaus 0:bdcfca60d8a6 644 Led1= 0;
cicklaus 0:bdcfca60d8a6 645 break;
cicklaus 0:bdcfca60d8a6 646
cicklaus 0:bdcfca60d8a6 647 default:
cicklaus 0:bdcfca60d8a6 648 CheckSMSMSG();
cicklaus 0:bdcfca60d8a6 649 gsm.rxBufferFlush();
cicklaus 0:bdcfca60d8a6 650 Computer.printf("the buffer %d",gsm.rxBufferGetCount());
cicklaus 0:bdcfca60d8a6 651 newline_detected = false;
cicklaus 0:bdcfca60d8a6 652 strcpy (buf4,&Hi);
cicklaus 0:bdcfca60d8a6 653 Led1= 0;
cicklaus 0:bdcfca60d8a6 654
cicklaus 0:bdcfca60d8a6 655 }
cicklaus 0:bdcfca60d8a6 656
cicklaus 0:bdcfca60d8a6 657 }
cicklaus 0:bdcfca60d8a6 658
cicklaus 0:bdcfca60d8a6 659 }
cicklaus 0:bdcfca60d8a6 660
cicklaus 0:bdcfca60d8a6 661
cicklaus 0:bdcfca60d8a6 662 }