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:
pkamp
Date:
Tue Sep 19 21:45:19 2017 +0000
Revision:
10:e9abab84df23
Parent:
9:2d119fbe7482
Adding publishing

Who changed what in which revision?

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