this is the demo code for Seeed Arch GPRS V2.0

Dependencies:   GPRS USBDevice mbed

Fork of Seeed_Arch_GPRS_V2_HelloWorld by wei zou

Committer:
yihui
Date:
Mon Sep 15 07:14:37 2014 +0000
Revision:
1:6fab8479ce48
Parent:
0:afc1dc411a7b
update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lawliet 0:afc1dc411a7b 1 /*
lawliet 0:afc1dc411a7b 2 main.cpp
lawliet 0:afc1dc411a7b 3 2013 Copyright (c) Seeed Technology Inc. All right reserved.
lawliet 0:afc1dc411a7b 4
lawliet 0:afc1dc411a7b 5 Author:lawliet zou(lawliet.zou@gmail.com)
lawliet 0:afc1dc411a7b 6 2013-7-21
lawliet 0:afc1dc411a7b 7
lawliet 0:afc1dc411a7b 8 This library is free software; you can redistribute it and/or
lawliet 0:afc1dc411a7b 9 modify it under the terms of the GNU Lesser General Public
lawliet 0:afc1dc411a7b 10 License as published by the Free Software Foundation; either
lawliet 0:afc1dc411a7b 11 version 2.1 of the License, or (at your option) any later version.
lawliet 0:afc1dc411a7b 12
lawliet 0:afc1dc411a7b 13 This library is distributed in the hope that it will be useful,
lawliet 0:afc1dc411a7b 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
lawliet 0:afc1dc411a7b 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
lawliet 0:afc1dc411a7b 16 Lesser General Public License for more details.
lawliet 0:afc1dc411a7b 17
lawliet 0:afc1dc411a7b 18 You should have received a copy of the GNU Lesser General Public
lawliet 0:afc1dc411a7b 19 License along with this library; if not, write to the Free Software
lawliet 0:afc1dc411a7b 20 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
lawliet 0:afc1dc411a7b 21 */
lawliet 0:afc1dc411a7b 22 #include "mbed.h"
lawliet 0:afc1dc411a7b 23 #include "string.h"
lawliet 0:afc1dc411a7b 24 #include "gprs.h"
lawliet 0:afc1dc411a7b 25 #include "USBSerial.h"
lawliet 0:afc1dc411a7b 26
lawliet 0:afc1dc411a7b 27 #define SEND_SMS_TEST 0
lawliet 0:afc1dc411a7b 28 #define CALL_UP_TEST 0
lawliet 0:afc1dc411a7b 29 #define ANSWER_TEST 0
lawliet 0:afc1dc411a7b 30 #define READ_SMS_TEST 0
lawliet 0:afc1dc411a7b 31
lawliet 0:afc1dc411a7b 32 #define PHONE_NUMBER "13925257382"
lawliet 0:afc1dc411a7b 33 #define PIN_PWR P1_2 //power up gprs module
lawliet 0:afc1dc411a7b 34 #define PIN_PWR_KEY P1_7
lawliet 0:afc1dc411a7b 35 #define PIN_TX P1_27 //Serial tx pin
lawliet 0:afc1dc411a7b 36 #define PIN_RX P1_26 //Serial rx pin
lawliet 0:afc1dc411a7b 37
lawliet 0:afc1dc411a7b 38 USBSerial pc(0x1f00, 0x2012, 0x0001, false);
lawliet 0:afc1dc411a7b 39 DigitalOut power(PIN_PWR);
lawliet 0:afc1dc411a7b 40 DigitalOut powerKey(PIN_PWR_KEY);
lawliet 0:afc1dc411a7b 41 GPRS gprsTest(PIN_TX, PIN_RX, 115200, PHONE_NUMBER);
lawliet 0:afc1dc411a7b 42
lawliet 0:afc1dc411a7b 43 // Called by ISR
lawliet 0:afc1dc411a7b 44 void settingsChanged(int baud, int bits, int parity, int stop)
lawliet 0:afc1dc411a7b 45 {
lawliet 0:afc1dc411a7b 46 const Serial::Parity parityTable[] = {Serial::None, Serial::Odd, Serial::Even, Serial::Forced0, Serial::Forced1};
lawliet 0:afc1dc411a7b 47
lawliet 0:afc1dc411a7b 48 if (stop != 2) {
lawliet 0:afc1dc411a7b 49 stop = 1; // stop bit(s) = 1 or 1.5
lawliet 0:afc1dc411a7b 50 }
lawliet 0:afc1dc411a7b 51
lawliet 0:afc1dc411a7b 52 gprsTest.gprsSerial.baud(baud);
lawliet 0:afc1dc411a7b 53 gprsTest.gprsSerial.format(bits, parityTable[parity], stop);
lawliet 0:afc1dc411a7b 54 }
lawliet 0:afc1dc411a7b 55
lawliet 0:afc1dc411a7b 56 /* power pin: low enable
lawliet 0:afc1dc411a7b 57 ___
lawliet 0:afc1dc411a7b 58 |___
lawliet 0:afc1dc411a7b 59
lawliet 0:afc1dc411a7b 60 powerKey pin: you can also power up by long press the powerKey.
lawliet 0:afc1dc411a7b 61
lawliet 0:afc1dc411a7b 62 ___
lawliet 0:afc1dc411a7b 63 ___| |___
lawliet 0:afc1dc411a7b 64
lawliet 0:afc1dc411a7b 65 */
lawliet 0:afc1dc411a7b 66 void gprsPowerUp(void)
lawliet 0:afc1dc411a7b 67 {
lawliet 0:afc1dc411a7b 68 power = 1;
lawliet 0:afc1dc411a7b 69 wait(2);
lawliet 0:afc1dc411a7b 70 power = 0;
lawliet 0:afc1dc411a7b 71 wait(2);
lawliet 0:afc1dc411a7b 72
lawliet 0:afc1dc411a7b 73 powerKey = 0;
lawliet 0:afc1dc411a7b 74 wait(1);
lawliet 0:afc1dc411a7b 75 powerKey = 1;
lawliet 0:afc1dc411a7b 76 wait(2);
lawliet 0:afc1dc411a7b 77 powerKey = 0;
lawliet 0:afc1dc411a7b 78 wait(3);
lawliet 0:afc1dc411a7b 79 }
lawliet 0:afc1dc411a7b 80
lawliet 0:afc1dc411a7b 81 void messageHandle(void)
lawliet 0:afc1dc411a7b 82 {
lawliet 0:afc1dc411a7b 83 __disable_irq();
lawliet 0:afc1dc411a7b 84 int messageType = gprsTest.loopHandle();
lawliet 0:afc1dc411a7b 85 if(MESSAGE_RING == messageType) {
lawliet 0:afc1dc411a7b 86 gprsTest.answer();
lawliet 0:afc1dc411a7b 87 } else if(MESSAGE_SMS == messageType) {
lawliet 0:afc1dc411a7b 88 char smsMessage[SMS_MAX_LENGTH];
lawliet 0:afc1dc411a7b 89 gprsTest.getSMS(smsMessage);
lawliet 0:afc1dc411a7b 90 pc.printf("we get SMS:%s",smsMessage);
lawliet 0:afc1dc411a7b 91 }
lawliet 0:afc1dc411a7b 92 __enable_irq();
lawliet 0:afc1dc411a7b 93 }
lawliet 0:afc1dc411a7b 94
lawliet 0:afc1dc411a7b 95 int main(void)
lawliet 0:afc1dc411a7b 96 {
lawliet 0:afc1dc411a7b 97 pc.attach(settingsChanged);
lawliet 0:afc1dc411a7b 98 gprsPowerUp();
lawliet 0:afc1dc411a7b 99 wait(10);
lawliet 0:afc1dc411a7b 100
lawliet 0:afc1dc411a7b 101 while(0 != gprsTest.init()) {
lawliet 0:afc1dc411a7b 102 pc.printf("\ngprs init error\n");
lawliet 0:afc1dc411a7b 103 wait(2);
lawliet 0:afc1dc411a7b 104 }
lawliet 0:afc1dc411a7b 105
lawliet 0:afc1dc411a7b 106 #if SEND_SMS_TEST
lawliet 0:afc1dc411a7b 107 pc.printf("send SMS test\n");
lawliet 0:afc1dc411a7b 108 gprsTest.sendSMS(PHONE_NUMBER,"hello world"); //define phone number and text
lawliet 0:afc1dc411a7b 109 #endif
lawliet 0:afc1dc411a7b 110
lawliet 0:afc1dc411a7b 111 #if CALL_UP_TEST
lawliet 0:afc1dc411a7b 112 pc.printf("call up test\n");
lawliet 0:afc1dc411a7b 113 gprsTest.callUp(PHONE_NUMBER);
lawliet 0:afc1dc411a7b 114 #endif
lawliet 0:afc1dc411a7b 115
lawliet 0:afc1dc411a7b 116 #if ANSWER_TEST || READ_SMS_TEST
lawliet 0:afc1dc411a7b 117 pc.printf("Please give a call or send a message\n");
lawliet 0:afc1dc411a7b 118 gprsTest.gprsSerial.attach(&messageHandle);
lawliet 0:afc1dc411a7b 119 #endif
lawliet 0:afc1dc411a7b 120 while(1) {
lawliet 0:afc1dc411a7b 121 wait(1);
lawliet 0:afc1dc411a7b 122 }
lawliet 0:afc1dc411a7b 123 return 0;
lawliet 0:afc1dc411a7b 124 }