A library for talking to Multi-Tech's Cellular SocketModem Devices.
Dependents: M2X_dev axeda_wrapper_dev MTS_M2x_Example1 MTS_Cellular_Connect_Example ... more
tests/blinky_ping_test.h@105:1977b7154940, 2013-12-31 (annotated)
- Committer:
- mfiore
- Date:
- Tue Dec 31 15:11:04 2013 +0000
- Revision:
- 105:1977b7154940
- Parent:
- 39:6e94520a3217
- Child:
- 115:b26176f23e89
fixed ping test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mfiore | 26:f3e06d63967f | 1 | #include "mbed.h" |
mfiore | 26:f3e06d63967f | 2 | #include "include_me.h" |
mfiore | 26:f3e06d63967f | 3 | |
mfiore | 105:1977b7154940 | 4 | using namespace mts; |
mfiore | 105:1977b7154940 | 5 | |
mfiore | 26:f3e06d63967f | 6 | #define MAX_TRIES 5 |
mfiore | 31:31b95ea90f80 | 7 | #define MAX_REGISTRATION_TRIES 10 |
mfiore | 26:f3e06d63967f | 8 | |
mfiore | 26:f3e06d63967f | 9 | bool ping_test(const std::string& apn, const std::string& server); |
mfiore | 26:f3e06d63967f | 10 | void blinkLed(DigitalOut led); |
mfiore | 26:f3e06d63967f | 11 | |
mfiore | 26:f3e06d63967f | 12 | void blinkyPingTest() { |
mfiore | 26:f3e06d63967f | 13 | DigitalOut ledG(LED1); |
mfiore | 26:f3e06d63967f | 14 | DigitalOut ledR(LED2); |
mfiore | 26:f3e06d63967f | 15 | std::string apn = "wap.cingular"; |
mfiore | 26:f3e06d63967f | 16 | std::string server = "8.8.8.8"; |
mfiore | 26:f3e06d63967f | 17 | |
mfiore | 26:f3e06d63967f | 18 | ledG = 1; |
mfiore | 26:f3e06d63967f | 19 | ledR = 1; |
mfiore | 26:f3e06d63967f | 20 | |
mfiore | 26:f3e06d63967f | 21 | if (ping_test(apn, server)) { |
mfiore | 26:f3e06d63967f | 22 | printf("success!\n\r"); |
mfiore | 26:f3e06d63967f | 23 | blinkLed(ledG); |
mfiore | 26:f3e06d63967f | 24 | } else { |
mfiore | 26:f3e06d63967f | 25 | printf("failure!\n\r"); |
mfiore | 26:f3e06d63967f | 26 | blinkLed(ledR); |
mfiore | 26:f3e06d63967f | 27 | } |
mfiore | 26:f3e06d63967f | 28 | } |
mfiore | 26:f3e06d63967f | 29 | |
mfiore | 26:f3e06d63967f | 30 | bool ping_test(const std::string& apn, const std::string& server) { |
mfiore | 26:f3e06d63967f | 31 | int i; |
mfiore | 26:f3e06d63967f | 32 | |
mfiore | 26:f3e06d63967f | 33 | MTSSerialFlowControl* serial = new MTSSerialFlowControl(PTD3, PTD2, PTA12, PTC8); |
mfiore | 26:f3e06d63967f | 34 | serial->baud(115200); |
mfiore | 105:1977b7154940 | 35 | Cellular* cell = Cellular::getInstance(); |
mfiore | 105:1977b7154940 | 36 | cell->init(serial); |
mfiore | 26:f3e06d63967f | 37 | |
mfiore | 31:31b95ea90f80 | 38 | printf("waiting for radio to come up\n\r"); |
mfiore | 26:f3e06d63967f | 39 | wait(30); |
mfiore | 31:31b95ea90f80 | 40 | |
mfiore | 31:31b95ea90f80 | 41 | i = 0; |
mfiore | 31:31b95ea90f80 | 42 | while (i++ < MAX_REGISTRATION_TRIES) { |
mfiore | 31:31b95ea90f80 | 43 | if (cell->getRegistration() == Cellular::REGISTERED) { |
mfiore | 31:31b95ea90f80 | 44 | printf("registered with tower\n\r"); |
mfiore | 31:31b95ea90f80 | 45 | break; |
mfiore | 31:31b95ea90f80 | 46 | } else if (i >= MAX_REGISTRATION_TRIES) { |
mfiore | 31:31b95ea90f80 | 47 | printf("failed to register with tower\n\r"); |
mfiore | 31:31b95ea90f80 | 48 | return false; |
mfiore | 31:31b95ea90f80 | 49 | } |
mfiore | 31:31b95ea90f80 | 50 | wait(3); |
mfiore | 31:31b95ea90f80 | 51 | } |
mfiore | 31:31b95ea90f80 | 52 | |
mfiore | 31:31b95ea90f80 | 53 | printf("signal strength: %d\n\r", cell->getSignalStrength()); |
mfiore | 26:f3e06d63967f | 54 | |
mfiore | 26:f3e06d63967f | 55 | i = 0; |
mfiore | 26:f3e06d63967f | 56 | printf("setting APN to %s\n\r", apn.c_str()); |
mfiore | 26:f3e06d63967f | 57 | while (i++ < MAX_TRIES) { |
mfiore | 105:1977b7154940 | 58 | if (cell->setApn(apn) == SUCCESS) { |
mfiore | 26:f3e06d63967f | 59 | printf("successfully set APN\n\r"); |
mfiore | 26:f3e06d63967f | 60 | break; |
mfiore | 31:31b95ea90f80 | 61 | } else if (i >= MAX_TRIES) { |
mfiore | 26:f3e06d63967f | 62 | printf("failed to set APN\n\r"); |
mfiore | 26:f3e06d63967f | 63 | return false; |
mfiore | 26:f3e06d63967f | 64 | } |
mfiore | 26:f3e06d63967f | 65 | wait(1); |
mfiore | 26:f3e06d63967f | 66 | } |
mfiore | 26:f3e06d63967f | 67 | |
mfiore | 26:f3e06d63967f | 68 | i = 0; |
mfiore | 26:f3e06d63967f | 69 | printf("bringing up PPP link\n\r"); |
mfiore | 26:f3e06d63967f | 70 | while (i++ < MAX_TRIES) { |
mfiore | 26:f3e06d63967f | 71 | if (cell->connect()) { |
mfiore | 26:f3e06d63967f | 72 | printf("PPP link is up\n\r"); |
mfiore | 26:f3e06d63967f | 73 | break; |
mfiore | 31:31b95ea90f80 | 74 | } else if (i >= MAX_TRIES) { |
mfiore | 26:f3e06d63967f | 75 | printf("failed to bring PPP link up\n\r"); |
mfiore | 26:f3e06d63967f | 76 | return false; |
mfiore | 26:f3e06d63967f | 77 | } |
mfiore | 26:f3e06d63967f | 78 | wait(1); |
mfiore | 26:f3e06d63967f | 79 | } |
mfiore | 26:f3e06d63967f | 80 | |
mfiore | 26:f3e06d63967f | 81 | printf("pinging %s\n\r", server.c_str()); |
mfiore | 26:f3e06d63967f | 82 | return cell->ping(server); |
mfiore | 26:f3e06d63967f | 83 | } |
mfiore | 26:f3e06d63967f | 84 | |
mfiore | 26:f3e06d63967f | 85 | void blinkLed(DigitalOut led) { |
mfiore | 26:f3e06d63967f | 86 | led = 0; |
mfiore | 26:f3e06d63967f | 87 | |
mfiore | 26:f3e06d63967f | 88 | while (true) { |
mfiore | 26:f3e06d63967f | 89 | wait(0.25); |
mfiore | 26:f3e06d63967f | 90 | led = !led; |
mfiore | 26:f3e06d63967f | 91 | } |
mfiore | 26:f3e06d63967f | 92 | } |