GSM example program for the SeeedStudio GPRS Shield V2.0, based on UART serial port connectivity (D0/D1 pins). This program uses a GSM library to dial a number, send SMS, read SMS or answer a call.

Dependencies:   GSM mbed

Committer:
screamer
Date:
Fri Jun 13 22:17:41 2014 +0000
Revision:
0:cd3db55e6652
Child:
1:b22685c4503c
Initial revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:cd3db55e6652 1 #include "mbed.h"
screamer 0:cd3db55e6652 2 #include "GSM.h"
screamer 0:cd3db55e6652 3
screamer 0:cd3db55e6652 4 #define PHONE_NUMBER "00xxxxxxxxxxxx"
screamer 0:cd3db55e6652 5
screamer 0:cd3db55e6652 6 #define SEND_SMS_TEST 0
screamer 0:cd3db55e6652 7 #define CALL_UP_TEST 1
screamer 0:cd3db55e6652 8 #define ANSWER_TEST 0
screamer 0:cd3db55e6652 9 #define READ_SMS_TEST 0
screamer 0:cd3db55e6652 10
screamer 0:cd3db55e6652 11 /** On many platforms USBTX/USBRX overlap with serial on D1/D0 pins and enabling the below will interrupt the communication.
screamer 0:cd3db55e6652 12 * You can use an LCD display to print the values or store them on an SD card etc.
screamer 0:cd3db55e6652 13 */
screamer 0:cd3db55e6652 14 Serial pc(USBTX, USBRX);
screamer 0:cd3db55e6652 15
screamer 0:cd3db55e6652 16 /**
screamer 0:cd3db55e6652 17 * D1 - TX pin (RX on the GSM module side)
screamer 0:cd3db55e6652 18 * D0 - RX pin (TX on the GSM module side)
screamer 0:cd3db55e6652 19 * 19200 - GSM baud rate
screamer 0:cd3db55e6652 20 */
screamer 0:cd3db55e6652 21 GSM gsm(D1, D0, 19200, PHONE_NUMBER);
screamer 0:cd3db55e6652 22
screamer 0:cd3db55e6652 23 void messageHandle(void)
screamer 0:cd3db55e6652 24 {
screamer 0:cd3db55e6652 25 __disable_irq();
screamer 0:cd3db55e6652 26 int messageType = gsm.loopHandle();
screamer 0:cd3db55e6652 27 if(MESSAGE_RING == messageType) {
screamer 0:cd3db55e6652 28 gsm.answer();
screamer 0:cd3db55e6652 29 } else if(MESSAGE_SMS == messageType) {
screamer 0:cd3db55e6652 30 char smsMessage[SMS_MAX_LENGTH];
screamer 0:cd3db55e6652 31 gsm.getSMS(smsMessage);
screamer 0:cd3db55e6652 32 }
screamer 0:cd3db55e6652 33 __enable_irq();
screamer 0:cd3db55e6652 34 }
screamer 0:cd3db55e6652 35
screamer 0:cd3db55e6652 36 int main(void)
screamer 0:cd3db55e6652 37 {
screamer 0:cd3db55e6652 38 while(0 != gsm.init()) {
screamer 0:cd3db55e6652 39 wait(2);
screamer 0:cd3db55e6652 40 }
screamer 0:cd3db55e6652 41
screamer 0:cd3db55e6652 42 #if SEND_SMS_TEST
screamer 0:cd3db55e6652 43 gsm.sendSMS(PHONE_NUMBER, "Hello from my GPRS shield");
screamer 0:cd3db55e6652 44 #endif
screamer 0:cd3db55e6652 45
screamer 0:cd3db55e6652 46 #if CALL_UP_TEST
screamer 0:cd3db55e6652 47 gsm.callUp(PHONE_NUMBER);
screamer 0:cd3db55e6652 48 #endif
screamer 0:cd3db55e6652 49
screamer 0:cd3db55e6652 50 #if ANSWER_TEST || READ_SMS_TEST
screamer 0:cd3db55e6652 51 gsm.gsmSerial.attach(&messageHandle);
screamer 0:cd3db55e6652 52 #endif
screamer 0:cd3db55e6652 53
screamer 0:cd3db55e6652 54 while(1) {
screamer 0:cd3db55e6652 55 wait(1);
screamer 0:cd3db55e6652 56 }
screamer 0:cd3db55e6652 57 }