first commit
Dependencies: C12832_lcd DigiLogger XBeeLib mbed
Fork of XBee802_Receive_Data by
main.cpp@11:733adf81a578, 2016-12-16 (annotated)
- Committer:
- kingkingyyk
- Date:
- Fri Dec 16 02:58:01 2016 +0000
- Revision:
- 11:733adf81a578
- Parent:
- 7:2e6ea668bc9e
first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hbujanda | 5:b4cf3c26e2ec | 1 | /** |
hbujanda | 5:b4cf3c26e2ec | 2 | * Copyright (c) 2015 Digi International Inc., |
hbujanda | 5:b4cf3c26e2ec | 3 | * All rights not expressly granted are reserved. |
hbujanda | 5:b4cf3c26e2ec | 4 | * |
hbujanda | 5:b4cf3c26e2ec | 5 | * This Source Code Form is subject to the terms of the Mozilla Public |
hbujanda | 5:b4cf3c26e2ec | 6 | * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
hbujanda | 5:b4cf3c26e2ec | 7 | * You can obtain one at http://mozilla.org/MPL/2.0/. |
hbujanda | 5:b4cf3c26e2ec | 8 | * |
hbujanda | 5:b4cf3c26e2ec | 9 | * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343 |
hbujanda | 5:b4cf3c26e2ec | 10 | * ======================================================================= |
hbujanda | 5:b4cf3c26e2ec | 11 | */ |
hbujanda | 5:b4cf3c26e2ec | 12 | |
hbujanda | 5:b4cf3c26e2ec | 13 | #include "mbed.h" |
kingkingyyk | 11:733adf81a578 | 14 | #include "string" |
hbujanda | 5:b4cf3c26e2ec | 15 | #include "XBeeLib.h" |
kingkingyyk | 11:733adf81a578 | 16 | #include "C12832_lcd.h" |
hbujanda | 5:b4cf3c26e2ec | 17 | |
hbujanda | 5:b4cf3c26e2ec | 18 | using namespace XBeeLib; |
hbujanda | 5:b4cf3c26e2ec | 19 | |
kingkingyyk | 11:733adf81a578 | 20 | #define END_NODE ((uint16_t)0x0) |
kingkingyyk | 11:733adf81a578 | 21 | const char *field_delimiter=";"; |
kingkingyyk | 11:733adf81a578 | 22 | const char *controller_name="Toilet_Control"; |
kingkingyyk | 11:733adf81a578 | 23 | const char *procCommand_ON="ON"; |
kingkingyyk | 11:733adf81a578 | 24 | const char *procCommand_OFF="OFF"; |
kingkingyyk | 11:733adf81a578 | 25 | XBee802 xbee = XBee802(RADIO_TX, RADIO_RX, RADIO_RESET, NC, NC, 9600); |
kingkingyyk | 11:733adf81a578 | 26 | DigitalOut led[]={(LED1),(LED2),(LED3)}; |
kingkingyyk | 11:733adf81a578 | 27 | DigitalOut fan(p13); |
kingkingyyk | 11:733adf81a578 | 28 | char send_data [98]; |
kingkingyyk | 11:733adf81a578 | 29 | C12832_LCD lcd; |
kingkingyyk | 11:733adf81a578 | 30 | |
kingkingyyk | 11:733adf81a578 | 31 | const RemoteXBee802 remoteDevice16b = RemoteXBee802(END_NODE); |
kingkingyyk | 11:733adf81a578 | 32 | |
kingkingyyk | 11:733adf81a578 | 33 | void clear_send_data() { |
kingkingyyk | 11:733adf81a578 | 34 | for (int i=0;i<98;i++) send_data[i]=0; |
kingkingyyk | 11:733adf81a578 | 35 | } |
kingkingyyk | 11:733adf81a578 | 36 | |
kingkingyyk | 11:733adf81a578 | 37 | int calculate_send_data_size() { |
kingkingyyk | 11:733adf81a578 | 38 | for (int i=0;i<98;i++) if (send_data[i]==0) return i; |
kingkingyyk | 11:733adf81a578 | 39 | return 98; |
kingkingyyk | 11:733adf81a578 | 40 | } |
kingkingyyk | 11:733adf81a578 | 41 | |
kingkingyyk | 11:733adf81a578 | 42 | const char fan_status_format []="2;Toilet_Control;ToiletWater;%s"; |
kingkingyyk | 11:733adf81a578 | 43 | void send_fan_status (const RemoteXBee802& remote, const char* value) { |
kingkingyyk | 11:733adf81a578 | 44 | snprintf(send_data,98,fan_status_format,value); |
kingkingyyk | 11:733adf81a578 | 45 | |
kingkingyyk | 11:733adf81a578 | 46 | xbee.send_data(remote,(const uint8_t *)send_data,calculate_send_data_size()); |
kingkingyyk | 11:733adf81a578 | 47 | clear_send_data(); |
kingkingyyk | 11:733adf81a578 | 48 | } |
hbujanda | 5:b4cf3c26e2ec | 49 | |
hbujanda | 5:b4cf3c26e2ec | 50 | static void receive_cb(const RemoteXBee802& remote, bool broadcast, const uint8_t *const data, uint16_t len) |
kingkingyyk | 11:733adf81a578 | 51 | { |
kingkingyyk | 11:733adf81a578 | 52 | led[1]=1; |
kingkingyyk | 11:733adf81a578 | 53 | char* read_data = new char [len]; |
kingkingyyk | 11:733adf81a578 | 54 | for (int i = 0; i < len; i++) |
kingkingyyk | 11:733adf81a578 | 55 | read_data[i]=data[i]; |
kingkingyyk | 11:733adf81a578 | 56 | lcd.cls(); |
kingkingyyk | 11:733adf81a578 | 57 | lcd.printf("%s",read_data); |
kingkingyyk | 11:733adf81a578 | 58 | |
kingkingyyk | 11:733adf81a578 | 59 | string tempCmd (strtok(read_data,field_delimiter)); |
kingkingyyk | 11:733adf81a578 | 60 | string commandId = tempCmd.substr(tempCmd.length()-1,tempCmd.length()); |
kingkingyyk | 11:733adf81a578 | 61 | string ctrl (strtok(NULL,field_delimiter)); |
kingkingyyk | 11:733adf81a578 | 62 | string act (strtok(NULL,field_delimiter)); |
kingkingyyk | 11:733adf81a578 | 63 | string status (strtok(NULL,field_delimiter)); |
kingkingyyk | 11:733adf81a578 | 64 | |
kingkingyyk | 11:733adf81a578 | 65 | if (!ctrl.find(controller_name)) { |
kingkingyyk | 11:733adf81a578 | 66 | if (!commandId.compare("1")) { |
kingkingyyk | 11:733adf81a578 | 67 | if (!act.compare("ToiletWater")) { |
kingkingyyk | 11:733adf81a578 | 68 | int statusInt=(status.find(procCommand_ON) != std::string::npos); |
kingkingyyk | 11:733adf81a578 | 69 | fan=statusInt; |
kingkingyyk | 11:733adf81a578 | 70 | led[2]=statusInt; |
kingkingyyk | 11:733adf81a578 | 71 | |
kingkingyyk | 11:733adf81a578 | 72 | if (statusInt) send_fan_status(remote,procCommand_ON); |
kingkingyyk | 11:733adf81a578 | 73 | else send_fan_status(remote,procCommand_OFF); |
kingkingyyk | 11:733adf81a578 | 74 | } |
kingkingyyk | 11:733adf81a578 | 75 | } |
hbujanda | 5:b4cf3c26e2ec | 76 | } |
kingkingyyk | 11:733adf81a578 | 77 | |
kingkingyyk | 11:733adf81a578 | 78 | led[1]=0; |
hbujanda | 5:b4cf3c26e2ec | 79 | } |
hbujanda | 5:b4cf3c26e2ec | 80 | |
spastor | 7:2e6ea668bc9e | 81 | int main() |
hbujanda | 5:b4cf3c26e2ec | 82 | { |
kingkingyyk | 11:733adf81a578 | 83 | send_fan_status(remoteDevice16b,"ON"); |
hbujanda | 5:b4cf3c26e2ec | 84 | xbee.register_receive_cb(&receive_cb); |
hbujanda | 5:b4cf3c26e2ec | 85 | |
hbujanda | 5:b4cf3c26e2ec | 86 | RadioStatus const radioStatus = xbee.init(); |
hbujanda | 5:b4cf3c26e2ec | 87 | MBED_ASSERT(radioStatus == Success); |
kingkingyyk | 11:733adf81a578 | 88 | |
kingkingyyk | 11:733adf81a578 | 89 | led[0]=1; |
kingkingyyk | 11:733adf81a578 | 90 | lcd.printf("Ready"); |
kingkingyyk | 11:733adf81a578 | 91 | |
kingkingyyk | 11:733adf81a578 | 92 | fan=1; |
kingkingyyk | 11:733adf81a578 | 93 | led[2]=1; |
hbujanda | 5:b4cf3c26e2ec | 94 | while (true) { |
hbujanda | 5:b4cf3c26e2ec | 95 | xbee.process_rx_frames(); |
hbujanda | 5:b4cf3c26e2ec | 96 | wait_ms(100); |
hbujanda | 5:b4cf3c26e2ec | 97 | } |
hbujanda | 5:b4cf3c26e2ec | 98 | } |