PIR still blocked by the XBee reading. Audio sensor not configured yet.
Dependencies: BME280 SI1145 mbed
Diff: main.cpp
- Revision:
- 4:7335cd74f3bc
- Parent:
- 3:07fd499e96b4
- Child:
- 5:0e4d19f6ba45
diff -r 07fd499e96b4 -r 7335cd74f3bc main.cpp --- a/main.cpp Tue Jul 18 22:26:52 2017 +0000 +++ b/main.cpp Tue Jul 18 23:23:52 2017 +0000 @@ -23,8 +23,11 @@ Timer t; const char nodeID = '1'; + +// RX declarations uint8_t rx_buffer[64]; bool rx_flag = false; +int rx_index = 0; // I/O Delarations @@ -81,8 +84,23 @@ } void rx_read_callback(){ - rx_flag = true; - pc.printf("%c", xb.getc()); + char c = xb.getc(); + + if(c == '\n'){ + rx_index++; + rx_flag = true; + rx_index = 0; + pc.printf(" EOM \r\n"); + } else { + pc.printf("%c", c); + rx_buffer[rx_index] = c; + rx_index++; + } + + if(rx_index > 63){ + rx_index = 0; + } + } int main() { @@ -108,11 +126,7 @@ int noise = 8; t.reset(); - int wait_times[32]; - bool send_enable = false; - - char read_char; while(true){ //pc.printf("top of loop \r\n"); @@ -124,15 +138,34 @@ if(xb.writeable()){xb.printf("%c", pc_data);} } + /* Handle the received data + * Execute only when the full message has been received. + * + * + * + */ if(rx_flag){ - pc.printf("hello"); + pc.printf("IND: 0123456789ABCDEF\r\n"); // Show indices + pc.printf("RECV: %s\r\n", rx_buffer); // Show received message + rx_flag = false; - if(xb.readable()){ - pc.printf("%c",xb.getc()); + if(rx_buffer[3] == nodeID){ + send_enable = true; + } else { + pc.printf("Target: NODE %c\r\n", rx_buffer[3]); } - pc.printf("goodbye"); - rx_flag = false; + if(rx_buffer[5] == 'm' && rx_buffer[6] == 's'){ + send_enable = false; + if(rx_buffer[8] == '1'){ + pir_enable = true; + pc.printf("PIR enabled\r\n"); + } else { + pir_enable = false; + pc.printf("PIR disabled\r\n"); + } + } + memset(rx_buffer, '\0', sizeof(rx_buffer)); }