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 miao zhicheng

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

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?

UserRevisionLine numberNew 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 }