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

Dependencies:   mbed mtsas

Committer:
Vanger
Date:
Fri Jul 25 16:52:15 2014 +0000
Revision:
2:99606ba5d1bf
Parent:
1:4c54ec0a3a20
Child:
3:f22ad66e049e
Changed output messages from printf to log

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 0:47bc9ce390cc 6 const char APN[] = "";
Vanger 0:47bc9ce390cc 7
Vanger 0:47bc9ce390cc 8 /** STMicro Nucelo F401RE
Vanger 0:47bc9ce390cc 9 * The supported jumper configurations of the MTSAS do not line up with
Vanger 0:47bc9ce390cc 10 * the pin mapping of the Nucleo F401RE. Therefore, the MTSAS serial TX
Vanger 0:47bc9ce390cc 11 * pin (JP8 Pin 2) must be manually jumped to Serial1 RX (Shield pin D2)
Vanger 0:47bc9ce390cc 12 * and the MTSAS serial RX pin (JP9 Pin 2) pin must be manually jumped to
Vanger 0:47bc9ce390cc 13 * Serial1 TX (Shield pin D8).
Vanger 0:47bc9ce390cc 14 * Uncomment the following line to use the STMicro Nuceleo F401RE
Vanger 0:47bc9ce390cc 15 */
Vanger 0:47bc9ce390cc 16 MTSSerialFlowControl* io = new MTSSerialFlowControl(D8, D2, D3, D6);
Vanger 0:47bc9ce390cc 17
Vanger 0:47bc9ce390cc 18 /** Freescale KL46Z
Vanger 0:47bc9ce390cc 19 * To configure the pins for the Freescale KL46Z board, use configuration B
Vanger 0:47bc9ce390cc 20 * for the SocketModem. The TX pin should be jumped to pin D2 (JP8), and the
Vanger 0:47bc9ce390cc 21 * RX pin should be jumped to pin D9 (JP9).
Vanger 0:47bc9ce390cc 22 * Uncomment te following line to use the Freescale KL46Z board
Vanger 0:47bc9ce390cc 23 */
Vanger 0:47bc9ce390cc 24 //MTSSerialFlowControl* io = new MTSSerialFlowControl(D2, D9, D3, D6);
Vanger 0:47bc9ce390cc 25
Vanger 0:47bc9ce390cc 26 /** Freescale KL64F
Vanger 0:47bc9ce390cc 27 * To configure the pins for the Freescale KL46Z board, use configuration A
Vanger 0:47bc9ce390cc 28 * for the SocketModem. The TX pin should be jumped to pin D1 (JP8), and the
Vanger 0:47bc9ce390cc 29 * RX pin should be jumped to pin D0 (JP9).
Vanger 0:47bc9ce390cc 30 * Uncomment te following line to use the Freescale KL46F board
Vanger 0:47bc9ce390cc 31 */
Vanger 0:47bc9ce390cc 32 //MTSSerialFlowControl* io = new MTSSerialFlowControl(D1, D0, D3, D6);
Vanger 0:47bc9ce390cc 33
Vanger 0:47bc9ce390cc 34 //Sets the baudrate for communicating with the radio
Vanger 1:4c54ec0a3a20 35 io->baud(115200);
Vanger 0:47bc9ce390cc 36
Vanger 0:47bc9ce390cc 37 Cellular* radio = CellularFactory::create(io);
Vanger 1:4c54ec0a3a20 38 for (int i = 0; i < 10; i++) {
Vanger 1:4c54ec0a3a20 39 if (i >= 10) {
Vanger 2:99606ba5d1bf 40 logError("Failed to set APN\n");
Vanger 1:4c54ec0a3a20 41 }
Vanger 1:4c54ec0a3a20 42 if (radio->setApn(APN) == MTS_SUCCESS) {
Vanger 2:99606ba5d1bf 43 logInfo("Successfully set APN\n");
Vanger 1:4c54ec0a3a20 44 break;
Vanger 1:4c54ec0a3a20 45 } else {
Vanger 1:4c54ec0a3a20 46 wait(1);
Vanger 1:4c54ec0a3a20 47 }
Vanger 1:4c54ec0a3a20 48 }
Vanger 0:47bc9ce390cc 49
Vanger 0:47bc9ce390cc 50 //Establish PPP link
Vanger 1:4c54ec0a3a20 51 for (int i = 0; i < 10; i++) {
Vanger 1:4c54ec0a3a20 52 if (i >= 10) {
Vanger 2:99606ba5d1bf 53 logError("Failed to connect to cell network\n");
Vanger 1:4c54ec0a3a20 54 }
Vanger 1:4c54ec0a3a20 55 if (radio->connect() == true) {
Vanger 2:99606ba5d1bf 56 logInfo("Successfully established PPP link\n");
Vanger 1:4c54ec0a3a20 57 break;
Vanger 1:4c54ec0a3a20 58 } else {
Vanger 1:4c54ec0a3a20 59 wait(1);
Vanger 1:4c54ec0a3a20 60 }
Vanger 1:4c54ec0a3a20 61 }
Vanger 0:47bc9ce390cc 62
Vanger 1:4c54ec0a3a20 63 //Ping google.com
Vanger 1:4c54ec0a3a20 64 for (int i = 0; i < 10; i++) {
Vanger 1:4c54ec0a3a20 65 if (i >= 10) {
Vanger 2:99606ba5d1bf 66 logError("Failed to ping google.com\n");
Vanger 1:4c54ec0a3a20 67 }
Vanger 1:4c54ec0a3a20 68 if (radio->ping() == true) {
Vanger 2:99606ba5d1bf 69 logInfo("Successfully pinged google.com\n");
Vanger 1:4c54ec0a3a20 70 break;
Vanger 1:4c54ec0a3a20 71 } else {
Vanger 1:4c54ec0a3a20 72 wait(1);
Vanger 1:4c54ec0a3a20 73 }
Vanger 1:4c54ec0a3a20 74 }
Vanger 0:47bc9ce390cc 75
Vanger 0:47bc9ce390cc 76 //Disconnect ppp link
Vanger 0:47bc9ce390cc 77 radio->disconnect();
Vanger 0:47bc9ce390cc 78
Vanger 2:99606ba5d1bf 79 logInfo("End of example code\n");
Vanger 0:47bc9ce390cc 80 return 0;
Vanger 0:47bc9ce390cc 81 }