first commit

Dependencies:   C12832_lcd DigiLogger XBeeLib mbed

Fork of XBee802_Receive_Data by Digi International Inc.

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?

UserRevisionLine numberNew 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 }