Dependencies:   mbed

Committer:
ConfigArray
Date:
Thu Apr 18 10:52:47 2019 +0000
Revision:
0:8a18ec6374e5
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ConfigArray 0:8a18ec6374e5 1 #include "mbed.h"
ConfigArray 0:8a18ec6374e5 2
ConfigArray 0:8a18ec6374e5 3 Serial pc(USBTX, USBRX);
ConfigArray 0:8a18ec6374e5 4 Serial SIM(p13, p14);
ConfigArray 0:8a18ec6374e5 5
ConfigArray 0:8a18ec6374e5 6 DigitalOut myled(LED1);
ConfigArray 0:8a18ec6374e5 7 void GSMSetUp(void);
ConfigArray 0:8a18ec6374e5 8
ConfigArray 0:8a18ec6374e5 9 int main()
ConfigArray 0:8a18ec6374e5 10 {
ConfigArray 0:8a18ec6374e5 11 int i = 0;
ConfigArray 0:8a18ec6374e5 12 int CRCounter = 0;
ConfigArray 0:8a18ec6374e5 13 int IncomingCounter = 0;
ConfigArray 0:8a18ec6374e5 14 int NewMessage = 0;
ConfigArray 0:8a18ec6374e5 15 char IncomingChar = 0;
ConfigArray 0:8a18ec6374e5 16 char IncomingString1 [200] = {};
ConfigArray 0:8a18ec6374e5 17 char Number [200] = {};
ConfigArray 0:8a18ec6374e5 18 char Date [200] = {};
ConfigArray 0:8a18ec6374e5 19 char Message [200] = {};
ConfigArray 0:8a18ec6374e5 20
ConfigArray 0:8a18ec6374e5 21 SIM.baud(115200);
ConfigArray 0:8a18ec6374e5 22 pc.baud (115200);
ConfigArray 0:8a18ec6374e5 23 while(1)
ConfigArray 0:8a18ec6374e5 24 {
ConfigArray 0:8a18ec6374e5 25 if(SIM.readable() ) //if incoming char from Sim card
ConfigArray 0:8a18ec6374e5 26 {
ConfigArray 0:8a18ec6374e5 27 IncomingChar = SIM.getc(); //collect the char
ConfigArray 0:8a18ec6374e5 28 IncomingString1[IncomingCounter] = IncomingChar; //store char in an array
ConfigArray 0:8a18ec6374e5 29 // pc.putc(IncomingString1[IncomingCounter] ); //print char to screen, goo for debug
ConfigArray 0:8a18ec6374e5 30 IncomingCounter ++; //increment the char counter
ConfigArray 0:8a18ec6374e5 31
ConfigArray 0:8a18ec6374e5 32 if(IncomingChar == 0x0D) //if a carrage return has been detected, then count then up
ConfigArray 0:8a18ec6374e5 33 {
ConfigArray 0:8a18ec6374e5 34 CRCounter++; //increment CR counter
ConfigArray 0:8a18ec6374e5 35
ConfigArray 0:8a18ec6374e5 36 if(CRCounter == 3) //after 3rd CR, the message has ended
ConfigArray 0:8a18ec6374e5 37 {
ConfigArray 0:8a18ec6374e5 38 pc.printf("\n\r message buffer: %s",IncomingString1); //print the whole buffer to screen - debug
ConfigArray 0:8a18ec6374e5 39
ConfigArray 0:8a18ec6374e5 40
ConfigArray 0:8a18ec6374e5 41 for(i = 9; i<22 ; i++) //parse the array - always has this number/date format
ConfigArray 0:8a18ec6374e5 42 {
ConfigArray 0:8a18ec6374e5 43 Number[i-9] = IncomingString1[i];
ConfigArray 0:8a18ec6374e5 44 }
ConfigArray 0:8a18ec6374e5 45
ConfigArray 0:8a18ec6374e5 46 Number[13] = NULL;
ConfigArray 0:8a18ec6374e5 47 pc.printf("\n\r%s",Number);
ConfigArray 0:8a18ec6374e5 48
ConfigArray 0:8a18ec6374e5 49 for(i = 28; i<45; i++) //parse data
ConfigArray 0:8a18ec6374e5 50 {
ConfigArray 0:8a18ec6374e5 51 Date[i-28] = IncomingString1[i];
ConfigArray 0:8a18ec6374e5 52 }
ConfigArray 0:8a18ec6374e5 53
ConfigArray 0:8a18ec6374e5 54 pc.printf("\n\r%s",Date);
ConfigArray 0:8a18ec6374e5 55 Date[i-28] = NULL;
ConfigArray 0:8a18ec6374e5 56
ConfigArray 0:8a18ec6374e5 57
ConfigArray 0:8a18ec6374e5 58
ConfigArray 0:8a18ec6374e5 59 for(i = 51; i<IncomingCounter; i++) //parse the message
ConfigArray 0:8a18ec6374e5 60 {
ConfigArray 0:8a18ec6374e5 61 Message[i-51] = IncomingString1[i];
ConfigArray 0:8a18ec6374e5 62 }
ConfigArray 0:8a18ec6374e5 63 Message[i-52] = NULL;
ConfigArray 0:8a18ec6374e5 64 pc.printf("\n\r%s",Message);
ConfigArray 0:8a18ec6374e5 65
ConfigArray 0:8a18ec6374e5 66
ConfigArray 0:8a18ec6374e5 67 IncomingChar = SIM.getc();
ConfigArray 0:8a18ec6374e5 68 NewMessage = 1; //rasie flag that a new message has been recieved
ConfigArray 0:8a18ec6374e5 69 CRCounter = 0; //end of message processing, reset all counters etc
ConfigArray 0:8a18ec6374e5 70 IncomingCounter = 0;
ConfigArray 0:8a18ec6374e5 71 i = 0;
ConfigArray 0:8a18ec6374e5 72 }//if CR
ConfigArray 0:8a18ec6374e5 73 }//if incoming
ConfigArray 0:8a18ec6374e5 74 }//if sim
ConfigArray 0:8a18ec6374e5 75
ConfigArray 0:8a18ec6374e5 76 if(NewMessage == 1)
ConfigArray 0:8a18ec6374e5 77 {
ConfigArray 0:8a18ec6374e5 78 if((!(strcmp(Number,"+447568396622"))) || (!(strcmp(Number,"+447447293026"))))
ConfigArray 0:8a18ec6374e5 79 {
ConfigArray 0:8a18ec6374e5 80 pc.printf("\n\right number");
ConfigArray 0:8a18ec6374e5 81 }
ConfigArray 0:8a18ec6374e5 82 else
ConfigArray 0:8a18ec6374e5 83 {
ConfigArray 0:8a18ec6374e5 84 pc.printf("\n\rUnknown Number");
ConfigArray 0:8a18ec6374e5 85 }
ConfigArray 0:8a18ec6374e5 86
ConfigArray 0:8a18ec6374e5 87 if(!(strcmp(Message,"Open")))
ConfigArray 0:8a18ec6374e5 88 {
ConfigArray 0:8a18ec6374e5 89 pc.printf("\n\rOpening");
ConfigArray 0:8a18ec6374e5 90 }
ConfigArray 0:8a18ec6374e5 91 else if(!(strcmp(Message,"Close")))
ConfigArray 0:8a18ec6374e5 92 {
ConfigArray 0:8a18ec6374e5 93 pc.printf("\n\rClosing");
ConfigArray 0:8a18ec6374e5 94 }
ConfigArray 0:8a18ec6374e5 95 else if(!(strcmp(Message,"Report")))
ConfigArray 0:8a18ec6374e5 96 {
ConfigArray 0:8a18ec6374e5 97 pc.printf("\n\rReporting");
ConfigArray 0:8a18ec6374e5 98 }
ConfigArray 0:8a18ec6374e5 99 else if(!(strcmp(Message,"OK")))
ConfigArray 0:8a18ec6374e5 100 {
ConfigArray 0:8a18ec6374e5 101 pc.printf("\n\rOKing");
ConfigArray 0:8a18ec6374e5 102 }
ConfigArray 0:8a18ec6374e5 103 else
ConfigArray 0:8a18ec6374e5 104 {
ConfigArray 0:8a18ec6374e5 105 pc.printf("\n\rUnknown Command");
ConfigArray 0:8a18ec6374e5 106 }
ConfigArray 0:8a18ec6374e5 107
ConfigArray 0:8a18ec6374e5 108 NewMessage = 0;
ConfigArray 0:8a18ec6374e5 109 }//if NewMessage
ConfigArray 0:8a18ec6374e5 110
ConfigArray 0:8a18ec6374e5 111
ConfigArray 0:8a18ec6374e5 112 if(pc.readable())
ConfigArray 0:8a18ec6374e5 113 {
ConfigArray 0:8a18ec6374e5 114 // SIM.putc(pc.getc());
ConfigArray 0:8a18ec6374e5 115 switch(pc.getc())
ConfigArray 0:8a18ec6374e5 116 {
ConfigArray 0:8a18ec6374e5 117 case 'a':SIM.printf("AT+CMGF=1\r\n"); break;
ConfigArray 0:8a18ec6374e5 118 case 'b':SIM.printf("AT+CSCS=\"GSM\"\r\n"); break;
ConfigArray 0:8a18ec6374e5 119 case 'c':SIM.printf("AT+CMGS=\"+447568396622\"\r\n"); break;
ConfigArray 0:8a18ec6374e5 120 case 'd':SIM.printf("WHATS UP MF?"); break;
ConfigArray 0:8a18ec6374e5 121 case 'e':SIM.putc((char)26); break;
ConfigArray 0:8a18ec6374e5 122 case 'f':SIM.printf("AT+CNMI=1,2,0,0,0\r\n"); break;
ConfigArray 0:8a18ec6374e5 123 case 'g':SIM.printf("AT+CMGL \"REC UNREAD\" 0\r\n"); break;
ConfigArray 0:8a18ec6374e5 124 }//switch
ConfigArray 0:8a18ec6374e5 125 }//if
ConfigArray 0:8a18ec6374e5 126
ConfigArray 0:8a18ec6374e5 127 }//while1
ConfigArray 0:8a18ec6374e5 128
ConfigArray 0:8a18ec6374e5 129 }//main