Connecting a Multi-Tech Systems Dragonfly™ to Twilio's Sync for IoT Quickstart. Blink a dev board LED.
Dependencies: MQTT MbedJSONValue mbed mtsas
Fork of DragonflyMQTT by
Code to connect a Multi-Tech® MultiConnect® Dragonfly™ to Twilio's Sync for IoT: https://www.twilio.com/docs/api/devices
Uses MQTT over TLS and subscribes to a topic where you can control an LED. See also our Quickstart using this code, here: https://www.twilio.com/docs/quickstart/sync-iot/mqtt-multi-tech-multiconnect-dragonfly-sync-iot
MTSCellularManager.cpp@9:2d119fbe7482, 2017-09-15 (annotated)
- Committer:
- pkamp
- Date:
- Fri Sep 15 22:41:22 2017 +0000
- Revision:
- 9:2d119fbe7482
- Parent:
- 6:4a25f3b9caef
Initial commit, blink an LED
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
miaotwilio | 0:b32fa0c757d7 | 1 | #include "MTSCellularManager.hpp" |
miaotwilio | 0:b32fa0c757d7 | 2 | |
pkamp | 9:2d119fbe7482 | 3 | MTSCellularManager::MTSCellularManager( |
pkamp | 9:2d119fbe7482 | 4 | const char* apn_ |
pkamp | 9:2d119fbe7482 | 5 | ) : apn(apn_), |
pkamp | 9:2d119fbe7482 | 6 | io(NULL), |
pkamp | 9:2d119fbe7482 | 7 | radio(NULL) |
pkamp | 9:2d119fbe7482 | 8 | {} |
pkamp | 9:2d119fbe7482 | 9 | |
miaotwilio | 0:b32fa0c757d7 | 10 | |
miaotwilio | 0:b32fa0c757d7 | 11 | MTSCellularManager::~MTSCellularManager() { |
miaotwilio | 0:b32fa0c757d7 | 12 | delete radio; |
miaotwilio | 0:b32fa0c757d7 | 13 | delete io; |
miaotwilio | 0:b32fa0c757d7 | 14 | } |
miaotwilio | 0:b32fa0c757d7 | 15 | |
miaotwilio | 0:b32fa0c757d7 | 16 | bool MTSCellularManager::init() { |
pkamp | 9:2d119fbe7482 | 17 | logInfo("Initializing Cellular Radio"); |
miaotwilio | 0:b32fa0c757d7 | 18 | |
pkamp | 9:2d119fbe7482 | 19 | io = new mts::MTSSerialFlowControl( |
pkamp | 9:2d119fbe7482 | 20 | RADIO_TX, |
pkamp | 9:2d119fbe7482 | 21 | RADIO_RX, |
pkamp | 9:2d119fbe7482 | 22 | RADIO_RTS, |
pkamp | 9:2d119fbe7482 | 23 | RADIO_CTS |
pkamp | 9:2d119fbe7482 | 24 | ); |
pkamp | 9:2d119fbe7482 | 25 | |
pkamp | 9:2d119fbe7482 | 26 | /* Radio default baud rate is 115200 */ |
miaotwilio | 0:b32fa0c757d7 | 27 | io->baud(115200); |
miaotwilio | 0:b32fa0c757d7 | 28 | if (! io) |
miaotwilio | 0:b32fa0c757d7 | 29 | return false; |
miaotwilio | 0:b32fa0c757d7 | 30 | |
miaotwilio | 0:b32fa0c757d7 | 31 | radio = mts::CellularFactory::create(io); |
miaotwilio | 4:f4e8f0fca631 | 32 | radio2 = mts::CellularFactory::create(io); |
miaotwilio | 0:b32fa0c757d7 | 33 | if (! radio) |
miaotwilio | 0:b32fa0c757d7 | 34 | return false; |
miaotwilio | 0:b32fa0c757d7 | 35 | |
pkamp | 9:2d119fbe7482 | 36 | /* |
pkamp | 9:2d119fbe7482 | 37 | * Transport must be set properly before any TCPSocketConnection or |
pkamp | 9:2d119fbe7482 | 38 | * UDPSocket objects are created |
pkamp | 9:2d119fbe7482 | 39 | */ |
miaotwilio | 0:b32fa0c757d7 | 40 | Transport::setTransport(radio); |
miaotwilio | 0:b32fa0c757d7 | 41 | |
miaotwilio | 0:b32fa0c757d7 | 42 | logInfo("setting APN"); |
miaotwilio | 0:b32fa0c757d7 | 43 | if (radio->setApn(apn) != MTS_SUCCESS) { |
miaotwilio | 0:b32fa0c757d7 | 44 | logError("failed to set APN to \"%s\"", apn); |
miaotwilio | 0:b32fa0c757d7 | 45 | return false; |
miaotwilio | 0:b32fa0c757d7 | 46 | } |
miaotwilio | 0:b32fa0c757d7 | 47 | |
miaotwilio | 0:b32fa0c757d7 | 48 | logInfo("bringing up the link"); |
miaotwilio | 0:b32fa0c757d7 | 49 | if (! radio->connect()) { |
miaotwilio | 0:b32fa0c757d7 | 50 | logError("failed to bring up the link"); |
miaotwilio | 0:b32fa0c757d7 | 51 | return false; |
miaotwilio | 0:b32fa0c757d7 | 52 | } else { |
miaotwilio | 0:b32fa0c757d7 | 53 | return true; |
miaotwilio | 0:b32fa0c757d7 | 54 | } |
miaotwilio | 0:b32fa0c757d7 | 55 | } |
miaotwilio | 0:b32fa0c757d7 | 56 | |
miaotwilio | 0:b32fa0c757d7 | 57 | void MTSCellularManager::uninit() { |
miaotwilio | 0:b32fa0c757d7 | 58 | logInfo("finished - bringing down link"); |
miaotwilio | 0:b32fa0c757d7 | 59 | radio->disconnect(); |
miaotwilio | 0:b32fa0c757d7 | 60 | delete radio; |
miaotwilio | 0:b32fa0c757d7 | 61 | delete io; |
pkamp | 9:2d119fbe7482 | 62 | } |