clean

Dependencies:   GroveGPS libmDot-mbed5 ISL29011

Revision:
40:6dea2ced2c87
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/src/main.cpp	Mon Jan 06 04:48:55 2020 +0000
@@ -0,0 +1,165 @@
+#include "dot_util.h"
+#include "RadioEvent.h"
+#include "DS3231.h"
+#include <string>
+#include <vector>
+#include <algorithm>
+#include <iostream>
+#include <sstream> 
+#include <time.h>
+#include "GroveGPS.h"
+void read_gps();
+using namespace std;
+static uint8_t config_app_eui[] = {0x86,0xe4,0xef,0xc7,0x10,0x4f,0x68,0x29 };
+static uint8_t config_app_key[] = { 0xa3,0x46,0xb6,0xfa,0xef,0x2b,0xd3,0x3c,0x16,0xfe,0x9b,0x1d,0x8d,0x47,0xa1,0x1d};
+//USER ADD
+char clock_str[80] = {0};
+GroveGPS gps(PA_2,PA_3);
+char latBuffer[16], lonBuffer[16];
+rtl hrtl = {0};
+// use the same subband as gateway that gateway can listen to you
+static uint8_t config_frequency_sub_band = 1;
+mDot *dot; 
+lora::ChannelPlan* plan = NULL;
+void Json_string(stringstream *s,char *lon,char *lat,char *clock);
+#if ACTIVE_EXAMPLE == OTA_EXAMPLE
+void config(mDot *dot,lora::ChannelPlan *plan)
+{
+    uint8_t ret;
+    //  reset to default config so we know what state we're in  
+    dot->resetConfig();
+    //  set how many log info will be show 
+    dot->setLogLevel(mts::MTSLog::INFO_LEVEL);
+    // set subband frequency the same as gateway so gateway can listen to you 
+    logInfo("setting frequency sub band\r\n");
+    if ((ret = dot->setFrequencySubBand(config_frequency_sub_band)) != mDot::MDOT_OK) {
+        logError("failed to set frequency sub band %d:%s\r\n", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+    // lora has private network and public network here we use public network
+    logInfo("setting public network mode");    
+    if ((ret = dot->setPublicNetwork(true)) != mDot::MDOT_OK) {
+        logError("failed to public network mode");
+    }
+    std::vector<uint8_t> temp;
+    
+    for (int i = 0; i < 8; i++) {
+        temp.push_back(config_app_eui[i]);
+    }
+    // set network id 
+    logInfo("setting app eui\r\n");
+    if ((ret = dot->setNetworkId(temp)) != mDot::MDOT_OK) {
+        logError("failed to set app eui %d:%s\r\n", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+    temp.clear();
+    for (int i = 0; i < 16; i++) {
+        temp.push_back(config_app_key[i]);
+    }
+    // set network key
+    logInfo("setting app key\r\n");
+    if ((ret = dot->setNetworkKey(temp)) != mDot::MDOT_OK) {
+        logError("failed to set app key %d:%s\r\n", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+    // a higher spreading factor allows for longer range but lower throughput
+    // in the 915 (US) frequency band, spreading factors 7 - 10 are available
+    logInfo("setting TX spreading factor\r\n");
+    if ((ret = dot->setTxDataRate(mDot::DR4)) != mDot::MDOT_OK) {
+        logError("failed to set TX datarate %d:%s\r\n", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+    // request receive confirmation of packets from the gateway
+    logInfo("enabling ACKs\r\n");
+    if ((ret = dot->setAck(1)) != mDot::MDOT_OK) {
+        logError("failed to enable ACKs %d:%s\r\n", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+    // Set Tx Power
+    logInfo("enabling Tx Power\r\n");
+    if ((ret = dot->setTxPower(20)) != mDot::MDOT_OK) {
+        logError("failed to enable Tx Power %d:%s\r\n", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+    // request receive confirmation of packets from the gateway
+    logInfo("enabling Tx Data Rate\r\n");
+    if ((ret = dot->setTxDataRate(3)) != mDot::MDOT_OK) {
+        logError("failed to enable Tx Data Rate %d:%s\r\n", ret, mDot::getReturnCodeString(ret).c_str());
+    }
+    // save this configuration to the mDot's NVM
+    logInfo("saving config\r\n");
+    if (! dot->saveConfig()) {
+        logError("failed to save configuration\r\n");
+    }
+    logInfo("joining network\r\n");
+    while ((ret = dot->joinNetwork()) != mDot::MDOT_OK) {
+        logError("failed to join network %d:%s\r\n", ret, mDot::getReturnCodeString(ret).c_str());
+        osDelay(std::max((uint32_t)1000, (uint32_t)dot->getNextTxMs()));
+    }
+    return;
+}
+int main()
+{
+    plan= new lora::ChannelPlan_AS923();
+    
+    dot = mDot::getInstance(plan);
+    
+    // set network
+    config(dot,plan);    
+
+    while (true) {
+        int ret;
+        std::vector<uint8_t> data;
+        stringstream ss;
+        std::string data_str ;
+        DS3231_get(&hrtl);
+        struct tm clock_t;
+        clock_t.tm_sec = hrtl.sec;
+        clock_t.tm_min = hrtl.min;
+        clock_t.tm_hour = hrtl.hour;
+        clock_t.tm_mon = hrtl.mon-1;
+        clock_t.tm_mday = hrtl.day;
+        clock_t.tm_year = (hrtl.year)+100;
+//      printf("%d/%d/%d %d:%d:%d\r\n",hrtl.year,hrtl.mon,hrtl.day,hrtl.hour,hrtl.min,hrtl.sec);
+        strftime(clock_str,80,"%m/%d/%Y,%H:%M:%S",&clock_t);
+        read_gps();
+        Json_string(&ss,lonBuffer,latBuffer,clock_str);
+        ss >> data_str;
+        for (std::string::iterator it = data_str.begin(); it != data_str.end(); it++)
+            data.push_back((uint8_t) *it);
+        
+        // send the data to the gateway
+        if ((ret = dot->send(data)) != mDot::MDOT_OK) {
+            logError("failed to send\r\n", ret, mDot::getReturnCodeString(ret).c_str());
+        } else {
+            logInfo("successfully sent data to gateway\r\n");
+        }
+        osDelay((uint32_t)30000);
+    }
+
+    return 0;
+
+}
+
+void read_gps() {
+    gps.getLatitude(latBuffer);
+    gps.getLongitude(lonBuffer);
+
+    // Utilize latitude and longitude values here
+    printf("\r\nLatitude: %s\r\nLongitude: %s\r\n", latBuffer, lonBuffer);
+}
+
+void Json_string(stringstream *s,char *lon,char *lat,char *clock){
+        *s << "{\"lat\":";
+        *s << "\"";
+        *s << lat;
+        *s << "\"";
+        *s << ",";
+        *s << "\"lon\":";
+        *s << "\"";
+        *s << lon;
+        *s << "\"";
+        *s << ",";
+        *s << "\"timetag\":";
+        *s << "\"";
+        *s << clock;
+        *s << "\"";
+        *s << "}";
+    }
+
+#endif
+