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@0:b32fa0c757d7, 2017-05-09 (annotated)
- Committer:
- miaotwilio
- Date:
- Tue May 09 13:16:48 2017 +0000
- Revision:
- 0:b32fa0c757d7
- Child:
- 1:5a896191c3c4
working prototype without CA validation
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 | |
miaotwilio | 0:b32fa0c757d7 | 3 | MTSCellularManager::MTSCellularManager(const char* apn_) : apn(apn_), io(NULL), radio(NULL) { |
miaotwilio | 0:b32fa0c757d7 | 4 | } |
miaotwilio | 0:b32fa0c757d7 | 5 | |
miaotwilio | 0:b32fa0c757d7 | 6 | MTSCellularManager::~MTSCellularManager() { |
miaotwilio | 0:b32fa0c757d7 | 7 | delete radio; |
miaotwilio | 0:b32fa0c757d7 | 8 | delete io; |
miaotwilio | 0:b32fa0c757d7 | 9 | } |
miaotwilio | 0:b32fa0c757d7 | 10 | |
miaotwilio | 0:b32fa0c757d7 | 11 | bool MTSCellularManager::init() { |
miaotwilio | 0:b32fa0c757d7 | 12 | logInfo("initializing cellular radio"); |
miaotwilio | 0:b32fa0c757d7 | 13 | |
miaotwilio | 0:b32fa0c757d7 | 14 | io = new mts::MTSSerialFlowControl(RADIO_TX, RADIO_RX, RADIO_RTS, RADIO_CTS); |
miaotwilio | 0:b32fa0c757d7 | 15 | // radio default baud rate is 115200 |
miaotwilio | 0:b32fa0c757d7 | 16 | io->baud(115200); |
miaotwilio | 0:b32fa0c757d7 | 17 | if (! io) |
miaotwilio | 0:b32fa0c757d7 | 18 | return false; |
miaotwilio | 0:b32fa0c757d7 | 19 | |
miaotwilio | 0:b32fa0c757d7 | 20 | radio = mts::CellularFactory::create(io); |
miaotwilio | 0:b32fa0c757d7 | 21 | if (! radio) |
miaotwilio | 0:b32fa0c757d7 | 22 | return false; |
miaotwilio | 0:b32fa0c757d7 | 23 | |
miaotwilio | 0:b32fa0c757d7 | 24 | // Transport must be set properly before any TCPSocketConnection or UDPSocket objects are created |
miaotwilio | 0:b32fa0c757d7 | 25 | Transport::setTransport(radio); |
miaotwilio | 0:b32fa0c757d7 | 26 | |
miaotwilio | 0:b32fa0c757d7 | 27 | logInfo("setting APN"); |
miaotwilio | 0:b32fa0c757d7 | 28 | if (radio->setApn(apn) != MTS_SUCCESS) { |
miaotwilio | 0:b32fa0c757d7 | 29 | logError("failed to set APN to \"%s\"", apn); |
miaotwilio | 0:b32fa0c757d7 | 30 | return false; |
miaotwilio | 0:b32fa0c757d7 | 31 | } |
miaotwilio | 0:b32fa0c757d7 | 32 | |
miaotwilio | 0:b32fa0c757d7 | 33 | logInfo("bringing up the link"); |
miaotwilio | 0:b32fa0c757d7 | 34 | if (! radio->connect()) { |
miaotwilio | 0:b32fa0c757d7 | 35 | logError("failed to bring up the link"); |
miaotwilio | 0:b32fa0c757d7 | 36 | return false; |
miaotwilio | 0:b32fa0c757d7 | 37 | } else { |
miaotwilio | 0:b32fa0c757d7 | 38 | return true; |
miaotwilio | 0:b32fa0c757d7 | 39 | } |
miaotwilio | 0:b32fa0c757d7 | 40 | } |
miaotwilio | 0:b32fa0c757d7 | 41 | |
miaotwilio | 0:b32fa0c757d7 | 42 | void MTSCellularManager::uninit() { |
miaotwilio | 0:b32fa0c757d7 | 43 | logInfo("finished - bringing down link"); |
miaotwilio | 0:b32fa0c757d7 | 44 | radio->disconnect(); |
miaotwilio | 0:b32fa0c757d7 | 45 | delete radio; |
miaotwilio | 0:b32fa0c757d7 | 46 | delete io; |
miaotwilio | 0:b32fa0c757d7 | 47 | } |