Simple example program to demonstrate and test cellular connection using the MTSAS library (over PPP protocol)

Dependencies:   mbed mtsas

Committer:
Vanger
Date:
Mon Mar 16 18:28:58 2015 +0000
Revision:
16:8d511ce1bec8
Parent:
15:ae7bfcdf9e6a
Child:
17:e2102f58f3c9
Updated MTSAS_Cellular_Connect_Example program to include pin settings for the Dragonfly board.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Vanger 0:47bc9ce390cc 1 #include "mbed.h"
Vanger 0:47bc9ce390cc 2 #include "mtsas.h"
Vanger 0:47bc9ce390cc 3
Vanger 0:47bc9ce390cc 4 int main(){
Vanger 0:47bc9ce390cc 5 //Modify to match your apn if you are using an HSPA radio with a SIM card
Vanger 4:8b02a6b67f4d 6 const char APN[] = "";
mfiore 15:ae7bfcdf9e6a 7 PinName reset_pin;
Vanger 4:8b02a6b67f4d 8
Vanger 9:0ed53023033b 9 //Sets the log level to INFO, higher log levels produce more log output.
Vanger 9:0ed53023033b 10 //Possible levels: NONE, FATAL, ERROR, WARNING, INFO, DEBUG, TRACE
Vanger 4:8b02a6b67f4d 11 MTSLog::setLogLevel(MTSLog::INFO_LEVEL);
Vanger 0:47bc9ce390cc 12
Vanger 0:47bc9ce390cc 13 /** STMicro Nucelo F401RE
Vanger 0:47bc9ce390cc 14 * The supported jumper configurations of the MTSAS do not line up with
Vanger 0:47bc9ce390cc 15 * the pin mapping of the Nucleo F401RE. Therefore, the MTSAS serial TX
Vanger 0:47bc9ce390cc 16 * pin (JP8 Pin 2) must be manually jumped to Serial1 RX (Shield pin D2)
Vanger 0:47bc9ce390cc 17 * and the MTSAS serial RX pin (JP9 Pin 2) pin must be manually jumped to
Vanger 0:47bc9ce390cc 18 * Serial1 TX (Shield pin D8).
mfiore 15:ae7bfcdf9e6a 19 * Uncomment the following lines to use the STMicro Nuceleo F401RE
Vanger 0:47bc9ce390cc 20 */
mfiore 15:ae7bfcdf9e6a 21 //MTSSerialFlowControl* io = new MTSSerialFlowControl(D8, D2, D3, D6);
mfiore 15:ae7bfcdf9e6a 22 //reset_pin = RESET;
Vanger 0:47bc9ce390cc 23
Vanger 16:8d511ce1bec8 24 /** Dragonfly
Vanger 16:8d511ce1bec8 25 * To configure the serial pins for the Dragonfly board, use:
Vanger 16:8d511ce1bec8 26 * RADIO_TX = pin PC_7, RADIO_RX = pin PC_6
Vanger 16:8d511ce1bec8 27 * RADIO_RTS = pin PB_10,RADIO_CTS = pin PB_12
Vanger 16:8d511ce1bec8 28 * Uncomment the following lines to use the Dragonfly board
Vanger 16:8d511ce1bec8 29 */
Vanger 16:8d511ce1bec8 30 //MTSSerialFlowControl* io = new MTSSerialFlowControl(PC_7, PC_6, PB_10, PB_12);
Vanger 16:8d511ce1bec8 31 //reset_pin = NC;
Vanger 16:8d511ce1bec8 32
Vanger 0:47bc9ce390cc 33 /** Freescale KL46Z
Vanger 12:23c052e020a9 34 * To configure the serial pins for the Freescale KL46Z board, use MTSAS jumper
mfiore 15:ae7bfcdf9e6a 35 * configuration B. Uncomment the following lines to use the Freescale KL46Z board
Vanger 0:47bc9ce390cc 36 */
Vanger 0:47bc9ce390cc 37 //MTSSerialFlowControl* io = new MTSSerialFlowControl(D2, D9, D3, D6);
mfiore 15:ae7bfcdf9e6a 38 //reset_pin = PTA_20;
Vanger 0:47bc9ce390cc 39
Vanger 9:0ed53023033b 40 /** Freescale K64F
Vanger 12:23c052e020a9 41 * To configure the serial pins for the Freescale K64F board, use MTSAS jumper
mfiore 15:ae7bfcdf9e6a 42 * configuration A. Uncomment the following lines to use the Freescale K64F board
Vanger 0:47bc9ce390cc 43 */
mfiore 15:ae7bfcdf9e6a 44 MTSSerialFlowControl* io = new MTSSerialFlowControl(D1, D0, D3, D6);
mfiore 15:ae7bfcdf9e6a 45 reset_pin = NC;
Vanger 0:47bc9ce390cc 46
Vanger 9:0ed53023033b 47 //Sets the baud rate for communicating with the radio
Vanger 1:4c54ec0a3a20 48 io->baud(115200);
Vanger 0:47bc9ce390cc 49
Vanger 8:95c226a1dca7 50 //Create radio object
Vanger 0:47bc9ce390cc 51 Cellular* radio = CellularFactory::create(io);
Vanger 8:95c226a1dca7 52
Vanger 9:0ed53023033b 53 if (! radio) {
Vanger 9:0ed53023033b 54 logFatal("Failed to initialize radio");
Vanger 9:0ed53023033b 55 return 1;
Vanger 9:0ed53023033b 56 }
Vanger 13:699045e9cce9 57 Transport::setTransport(radio);
mfiore 15:ae7bfcdf9e6a 58 radio->configureSignals(D4,D7,reset_pin);
Vanger 9:0ed53023033b 59
Vanger 8:95c226a1dca7 60 //Set radio APN
Vanger 1:4c54ec0a3a20 61 for (int i = 0; i < 10; i++) {
Vanger 1:4c54ec0a3a20 62 if (i >= 10) {
mfiore 5:46e66c649006 63 logError("Failed to set APN to %s", APN);
Vanger 1:4c54ec0a3a20 64 }
Vanger 1:4c54ec0a3a20 65 if (radio->setApn(APN) == MTS_SUCCESS) {
mfiore 5:46e66c649006 66 logInfo("Successfully set APN to %s", APN);
Vanger 1:4c54ec0a3a20 67 break;
Vanger 1:4c54ec0a3a20 68 } else {
Vanger 1:4c54ec0a3a20 69 wait(1);
Vanger 1:4c54ec0a3a20 70 }
Vanger 1:4c54ec0a3a20 71 }
Vanger 0:47bc9ce390cc 72
Vanger 0:47bc9ce390cc 73 //Establish PPP link
Vanger 1:4c54ec0a3a20 74 for (int i = 0; i < 10; i++) {
Vanger 1:4c54ec0a3a20 75 if (i >= 10) {
mfiore 5:46e66c649006 76 logError("Failed to establish PPP link");
Vanger 1:4c54ec0a3a20 77 }
Vanger 1:4c54ec0a3a20 78 if (radio->connect() == true) {
Vanger 3:f22ad66e049e 79 logInfo("Successfully established PPP link");
Vanger 1:4c54ec0a3a20 80 break;
Vanger 1:4c54ec0a3a20 81 } else {
Vanger 1:4c54ec0a3a20 82 wait(1);
Vanger 1:4c54ec0a3a20 83 }
Vanger 1:4c54ec0a3a20 84 }
Vanger 0:47bc9ce390cc 85
Vanger 1:4c54ec0a3a20 86 //Ping google.com
Vanger 1:4c54ec0a3a20 87 for (int i = 0; i < 10; i++) {
Vanger 1:4c54ec0a3a20 88 if (i >= 10) {
mfiore 5:46e66c649006 89 logError("Failed to ping www.google.com");
Vanger 1:4c54ec0a3a20 90 }
Vanger 3:f22ad66e049e 91 if (radio->ping("www.google.com") == true) {
Vanger 4:8b02a6b67f4d 92 logInfo("Successfully pinged www.google.com");
Vanger 1:4c54ec0a3a20 93 break;
Vanger 1:4c54ec0a3a20 94 } else {
Vanger 1:4c54ec0a3a20 95 wait(1);
Vanger 1:4c54ec0a3a20 96 }
Vanger 1:4c54ec0a3a20 97 }
Vanger 0:47bc9ce390cc 98
Vanger 0:47bc9ce390cc 99 //Disconnect ppp link
Vanger 0:47bc9ce390cc 100 radio->disconnect();
Vanger 0:47bc9ce390cc 101
Vanger 3:f22ad66e049e 102 logInfo("End of example code");
Vanger 0:47bc9ce390cc 103 return 0;
Vanger 8:95c226a1dca7 104 }