class c
Dependencies: libmDot-mbed5 picojson ISL29011
Revision 34:42343999ecc1, committed 2019-02-28
- 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