
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.
main.cpp@0:cd3db55e6652, 2014-06-13 (annotated)
- 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?
User | Revision | Line number | New 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 | } |