this is the demo code for Seeed Arch GPRS V2.0
Dependencies: GPRS USBDevice mbed
Fork of Seeed_Arch_GPRS_V2_HelloWorld by
main.cpp@1:6fab8479ce48, 2014-09-15 (annotated)
- Committer:
- yihui
- Date:
- Mon Sep 15 07:14:37 2014 +0000
- Revision:
- 1:6fab8479ce48
- Parent:
- 0:afc1dc411a7b
update
Who changed what in which revision?
User | Revision | Line number | New 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 | } |