Start project of The Things Network workshop with the MultiTech mDot

Dependencies:   libmDot mbed-rtos mbed

Fork of mDot_LoRa_Connect_Example_APP_EUI_KEY by MultiTech

Revision:
13:6ce90b84a3fe
Parent:
12:343229a12653
--- a/main.cpp	Tue Apr 05 16:48:13 2016 +0000
+++ b/main.cpp	Wed Apr 06 00:10:30 2016 +0000
@@ -5,8 +5,9 @@
 #include <vector>
 #include <algorithm>
 
-static uint8_t config_app_eui[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
-static uint8_t config_app_key[] = { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x45 };
+static uint8_t config_network_addr[] = { 0x01, 0x02, 0x03, 0x04 };
+static uint8_t config_network_nskey[] = {0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C};
+static uint8_t config_network_dskey[] = {0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C};
 static uint8_t config_frequency_sub_band = 7;
 
 mDot* dot;
@@ -58,6 +59,8 @@
     
     dot->setLogLevel(mts::MTSLog::INFO_LEVEL);
 
+    dot->setJoinMode(mDot::MANUAL);
+
     // set up the mDot with our network information: frequency sub band, network name, and network password
     // these can all be saved in NVM so they don't need to be set every time - see mDot::saveConfig()
     
@@ -69,27 +72,37 @@
     
     std::vector<uint8_t> temp;
     
-    for (int i = 0; i < 8; i++) {
-        temp.push_back(config_app_eui[i]);    
-    }
-    
     if ((ret = dot->setPublicNetwork(true)) != mDot::MDOT_OK) {
         logError("Failed to enable public network %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
     }
-        
-    logInfo("Setting app eui");
-    if ((ret = dot->setNetworkId(temp)) != mDot::MDOT_OK) {
-        logError("Failed to set app eui %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
+    
+    for (int i = 0; i < 4; i++) {
+        temp.push_back(config_network_addr[i]);    
+    }
+
+    logInfo("setting network addr");
+    if ((ret = dot->setNetworkAddress(temp)) != mDot::MDOT_OK) {
+        logError("failed to set network name %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
     }
     
     temp.clear();
     for (int i = 0; i < 16; i++) {
-        temp.push_back(config_app_key[i]);    
+        temp.push_back(config_network_nskey[i]);    
+    }
+    
+    logInfo("setting network password");
+    if ((ret = dot->setNetworkSessionKey(temp)) != mDot::MDOT_OK) {
+        logError("failed to set network password %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
     }
     
-    logInfo("Setting app key");
-    if ((ret = dot->setNetworkKey(temp)) != mDot::MDOT_OK) {
-        logError("Failed to set app key %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
+    temp.clear();
+    for (int i = 0; i < 16; i++) {
+        temp.push_back(config_network_dskey[i]);    
+    }
+    
+    logInfo("setting network password");
+    if ((ret = dot->setDataSessionKey(temp)) != mDot::MDOT_OK) {
+        logError("failed to set network password %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
     }
     
     // a higher spreading factor allows for longer range but lower throughput
@@ -101,8 +114,8 @@
     }
     
     // request receive confirmation of packets from the gateway
-    logInfo("Enabling ACKs");
-    if ((ret = dot->setAck(1)) != mDot::MDOT_OK) {
+    logInfo("Disabling ACKs");
+    if ((ret = dot->setAck(0)) != mDot::MDOT_OK) {
         logError("Failed to enable ACKs %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
     }
     
@@ -113,10 +126,10 @@
     }
 
     // attempt to join the network
-    logInfo("Joining network");
-    while ((ret = dot->joinNetwork()) != mDot::MDOT_OK) {
-        logError("Failed to join network %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
-        // in the 868 (EU) frequency band, we need to wait until another channel is available before transmitting again
-        osDelay(std::max((uint32_t)1000, (uint32_t)dot->getNextTxMs()));
-    }
+    //logInfo("Joining network");
+//    while ((ret = dot->joinNetwork()) != mDot::MDOT_OK) {
+//        logError("Failed to join network %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
+//        // in the 868 (EU) frequency band, we need to wait until another channel is available before transmitting again
+//        osDelay(std::max((uint32_t)1000, (uint32_t)dot->getNextTxMs()));
+//    }
 }
\ No newline at end of file