Connecting to gateway, sending packets with a MultiTech mDot and entering deepsleep mode between transmissions.

Dependencies:   libmDot mbed-rtos mbed

Fork of libmDot_sleep by MultiTech

Files at this revision

API Documentation at this revision

Comitter:
mfiore
Date:
Wed Aug 19 17:03:30 2015 +0000
Child:
1:f2e840f754c8
Commit message:
initial commit

Changed in this revision

libmDot.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libmDot.lib	Wed Aug 19 17:03:30 2015 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/teams/MultiTech/code/libmDot/#57978a837b2d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Aug 19 17:03:30 2015 +0000
@@ -0,0 +1,77 @@
+#include "mbed.h"
+#include "mDot.h"
+#include <string>
+#include <vector>
+#include "MTSLog.h"
+
+// these options must match the settings on your Conduit
+static std::string config_network_name = "<lora network id>";
+static std::string config_network_pass = "<lora network key>";
+static uint8_t config_frequency_sub_band = 1;
+
+int main() {
+    int32_t ret;
+    mDot* dot;
+    std::vector<uint8_t> data;
+    std::string data_str = "hello world!";
+
+    // get a mDot handle
+    dot = mDot::getInstance();
+
+    // reset to default config so we know what state we're in
+    dot->resetConfig();
+
+    dot->setLogLevel(mts::MTSLog::TRACE_LEVEL);
+    
+    // print library version information
+    logInfo("version: %s", dot->getId().c_str());
+
+    // set up the mDot with our network information
+    if ((ret = dot->setFrequencySubBand(config_frequency_sub_band)) != mDot::MDOT_OK) {
+        logError("failed to set frequency sub band %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+    if ((ret = dot->setNetworkName(config_network_name)) != mDot::MDOT_OK) {
+        logError("failed to set network name %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+    if ((ret = dot->setNetworkPassphrase(config_network_pass)) != mDot::MDOT_OK) {
+        logError("failed to set network password %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+    if ((ret = dot->setJoinMode(mDot::AUTO_OTA)) != mDot::MDOT_OK) {
+        logError("failed to set network join mode %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+
+    // attempt to join the network
+    if ((ret = dot->joinNetwork()) != mDot::MDOT_OK) {
+        logError("failed to join network %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+
+    // format data for sending to the gateway
+    for (std::string::iterator it = data_str.begin(); it != data_str.end(); it++)
+        data.push_back((uint8_t) *it);
+
+    if (!dot->getNetworkJoinStatus()) {
+        if ((ret = dot->joinNetwork()) != mDot::MDOT_OK) {
+            logError("failed to join network %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
+        }
+    }
+    if (dot->getNetworkJoinStatus()) {
+        // send the data
+        // ACKs are enabled by default, so we're expecting to get one back
+        if ((ret = dot->send(data)) != mDot::MDOT_OK) {
+            logError("failed to send %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
+        } else {
+            logInfo("successfully sent data to gateway");
+        }
+    }
+
+    uint32_t sleep_time = (dot->getNextTxMs() / 1000) + 10;
+    logInfo("going to sleep...");
+
+    // go to sleep and wake up automatically sleep_time seconds later
+    dot->sleep(sleep_time, mDot::RTC_ALARM, false);
+
+    // go to sleep and wake up on rising edge of WKUP pin (PA0/XBEE_CTS/XBEE_DIO7)
+    // dot->sleep(0, mDot::INTERRUPT, false);
+
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Wed Aug 19 17:03:30 2015 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/mbed_official/code/mbed-rtos/#21b438192b0f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Aug 19 17:03:30 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/8ed44a420e5c
\ No newline at end of file