class c

Dependencies:   libmDot-mbed5 picojson ISL29011

Files at this revision

API Documentation at this revision

Comitter:
tesla_xudong
Date:
Thu Feb 28 00:24:08 2019 +0000
Parent:
33:ff681aa203f3
Commit message:
fdd

Changed in this revision

examples/src/class_c_example_copy.cpp Show annotated file Show diff for this revision Revisions of this file
picojson.lib Show annotated file Show diff for this revision Revisions of this file
--- a/examples/src/class_c_example_copy.cpp	Wed Feb 20 04:52:14 2019 +0000
+++ b/examples/src/class_c_example_copy.cpp	Thu Feb 28 00:24:08 2019 +0000
@@ -1,8 +1,9 @@
 #include "dot_util.h"
 #include "RadioEvent.h"
-#include <string.h>
+#include <string>
+#include <MTSText.h>
 #if ACTIVE_EXAMPLE == CLASS_C_EXAMPLE
-
+#include <stdlib.h>  
 /////////////////////////////////////////////////////////////////////////////
 // -------------------- DOT LIBRARY REQUIRED ------------------------------//
 // * Because these example programs can be used for both mDot and xDot     //
@@ -26,17 +27,39 @@
 static std::string network_passphrase = "11223344";
 //static uint8_t network_id[] = { 0x6C, 0x4E, 0xEF, 0x66, 0xF4, 0x79, 0x86, 0xA6 };
 //static uint8_t network_key[] = { 0x1F, 0x33, 0xA1, 0x70, 0xA5, 0xF1, 0xFD, 0xA0, 0xAB, 0x69, 0x7A, 0xAE, 0x2B, 0x95, 0x91, 0x6B };
+
+
+static uint8_t network_address[] = {0x0a,0x00,0x00,0x1e};
+//static uint8_t network_session_key[] = { 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04 };
+//static uint8_t data_session_key[] = { 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04 };
+
+static uint8_t network_session_key[] = {0x11, 0x22, 0x33, 0x44,0x55,0x66,0x77,0x80 };
+static uint8_t data_session_key[] = { 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x44, 0x44, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x44, 0x40 };
+
+
+
+
 static uint8_t frequency_sub_band = 4;
 static lora::NetworkType network_type = lora::PUBLIC_LORAWAN;
 static uint8_t join_delay = 6;
-static uint8_t ack = 0;
+static uint8_t ack = 1;
 static bool adr = true;
 
 mDot* dot = NULL;
 lora::ChannelPlan* plan = NULL;
 
 Serial pc(USBTX, USBRX);
+Serial pi(PA_2,PA_3);
 
+PwmOut pwm_L(PA_7);
+PwmOut pwm_R(PB_0);
+PwmOut pwm_G(PA_5);
+PwmOut pwm_B(PA_1);
+
+        
+        
+        
+        
 #if defined(TARGET_XDOT_L151CC)
 I2C i2c(I2C_SDA, I2C_SCL);
 ISL29011 lux(i2c);
@@ -142,31 +165,57 @@
     }
     
     }
+
        
 std::string get_buffer;
 
-void Uart_interrupt(){
+//void Uart_interrupt(){
+//    
+//    char get_char;
+//    while(!pc.readable());
+//    
+//    get_char=pc.getc();
+//    if (get_char!='-')
+//    {
+//        get_buffer=get_buffer+get_char;
+//        }
+//    else
+//    {
+//        //send_string(get_buffer,dot);
+//        pi.printf("%s",get_buffer.c_str());
+//        pc.printf("Mdot received from PC: %s",get_buffer.c_str());
+//        send_string(get_buffer.c_str(),dot);
+//        get_buffer.clear();
+//    }
+//    
+//    }
+    
+
+void Uart_interrupt_pi(){
     
     char get_char;
-    while(!pc.readable());
+    while(!pi.readable());
     
-    get_char=pc.getc();
-    if (get_char!='-')
-    {
-        get_buffer=get_buffer+get_char;
-        }
-    else
-    {
-        send_string(get_buffer,dot);
-        get_buffer.clear();
+    get_char=pi.getc();
+    pc.putc(get_char);
+   // send_char(get_char,dot);
     }
-    
-    }
+        
+
 
 int main() {
 
-    pc.baud(115200);
-    pc.attach(&Uart_interrupt, SerialBase::RxIrq);
+    
+pwm_L.period_ms(1);
+pwm_R.period_ms(1);
+pwm_G.period_ms(1);
+pwm_B.period_ms(1);
+
+    pc.baud(9600);
+    //pc.attach(&Uart_interrupt, SerialBase::RxIrq);
+    
+    pi.baud(9600);
+    pi.attach(&Uart_interrupt_pi, SerialBase::RxIrq);
    // pc.attach(&Uart_send_interrupt, SerialBase::TxIrq);
 #if defined(TARGET_XDOT_L151CC)
     i2c.frequency(400000);
@@ -223,7 +272,23 @@
     // network KEY = cmac(network passphrase)
     update_ota_config_name_phrase(network_name, network_passphrase, frequency_sub_band, network_type, ack);
     //update_ota_config_id_key(network_id, network_key, frequency_sub_band, network_type, ack);
-
+    
+    }
+        // in MANUAL join mode there is no join request/response transaction
+        // as long as the Dot is configured correctly and provisioned correctly on the gateway, it should be able to communicate
+        // network address - 4 bytes (00000001 - FFFFFFFE)
+        // network session key - 16 bytes
+        // data session key - 16 bytes
+        // to provision your Dot with a Conduit gateway, follow the following steps
+        //   * ssh into the Conduit
+        //   * provision the Dot using the lora-query application: http://www.multitech.net/developer/software/lora/lora-network-server/
+        //      lora-query -a 01020304 A 0102030401020304 <your Dot's device ID> 01020304010203040102030401020304 01020304010203040102030401020304
+        //   * if you change the network address, network session key, or data session key, make sure you update them on the gateway
+        // to provision your Dot with a 3rd party gateway, see the gateway or network provider documentation
+   
+    //update_manual_config(network_address, network_session_key, data_session_key, frequency_sub_band, network_type, ack);
+    
+    
     // configure the Dot for class C operation
     // the Dot must also be configured on the gateway for class C
     // use the lora-query application to do this on a Conduit: http://www.multitech.net/developer/software/lora/lora-network-server/
@@ -257,6 +322,7 @@
             join_network();
         }
         send_string("start!",dot);
+
     while (true) {
 
         // join network if not joined
@@ -270,11 +336,32 @@
             Last_RX.clear();
       
             pc.printf("%s",tx_str.c_str());
+            //pi.printf("%s",tx_str.c_str());
+            //const char *t_json=tx_str.c_str();
+            //std::vector<std::string> t_json=split(tx_str,",");
+            
             send_string(tx_str.c_str(),dot);
+            string tem;
+            tem.assign(tx_str,1,2);
+            double l=atoi(tem.c_str());
+            tem.assign(tx_str,3,2);
+            double r=atoi(tem.c_str());
+            tem.assign(tx_str,5,2);
+            double g=atoi(tem.c_str());
+            tem.assign(tx_str,7,2);
+            double b=atoi(tem.c_str());
+
+            pwm_L=1-(l/100.0);
+            pwm_R=r/100.0;
+            pwm_G=g/100.0;
+            pwm_B=b/100.0;
+            pc.printf("%f,%f,%f,%f",l,r,g,b);
+            
             } 
             
    
         }
+
 }
 
 #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/picojson.lib	Thu Feb 28 00:24:08 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/tesla_xudong/code/picojson/#60535e1b4660