Digi International Inc. / Mbed 2 deprecated XBeeDM_dio_adc_pwm

Dependencies:   XBeeLib mbed

Fork of XBeeZB_dio_adc by Digi International Inc.

Committer:
hbujanda
Date:
Wed Apr 29 17:58:45 2015 +0200
Revision:
0:c87d86778f27
Child:
1:adeb9c8818ab
Automatic upload

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hbujanda 0:c87d86778f27 1 /**
hbujanda 0:c87d86778f27 2 * Copyright (c) 2015 Digi International Inc.,
hbujanda 0:c87d86778f27 3 * All rights not expressly granted are reserved.
hbujanda 0:c87d86778f27 4 *
hbujanda 0:c87d86778f27 5 * This Source Code Form is subject to the terms of the Mozilla Public
hbujanda 0:c87d86778f27 6 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
hbujanda 0:c87d86778f27 7 * You can obtain one at http://mozilla.org/MPL/2.0/.
hbujanda 0:c87d86778f27 8 *
hbujanda 0:c87d86778f27 9 * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
hbujanda 0:c87d86778f27 10 * =======================================================================
hbujanda 0:c87d86778f27 11 */
hbujanda 0:c87d86778f27 12
hbujanda 0:c87d86778f27 13 #include "mbed.h"
hbujanda 0:c87d86778f27 14 #include "XBeeLib.h"
hbujanda 0:c87d86778f27 15 #if defined(ENABLE_LOGGING)
hbujanda 0:c87d86778f27 16 #include "DigiLoggerMbedSerial.h"
hbujanda 0:c87d86778f27 17 using namespace DigiLog;
hbujanda 0:c87d86778f27 18 #endif
hbujanda 0:c87d86778f27 19
hbujanda 0:c87d86778f27 20 // TODO Replace with the MSB of the remote module's 64-bit address (SH parameter)
hbujanda 0:c87d86778f27 21 #define REMOTE_NODE_ADDR64_MSB ((uint32_t)0x0013A200)
hbujanda 0:c87d86778f27 22 // TODO Replace with the LSB of the remote module's 64-bit address (SL parameter)
hbujanda 0:c87d86778f27 23 #define REMOTE_NODE_ADDR64_LSB ((uint32_t)0x40D2B03E)
hbujanda 0:c87d86778f27 24
hbujanda 0:c87d86778f27 25 using namespace XBeeLib;
hbujanda 0:c87d86778f27 26
hbujanda 0:c87d86778f27 27 Serial *log_serial;
hbujanda 0:c87d86778f27 28
hbujanda 0:c87d86778f27 29 int main()
hbujanda 0:c87d86778f27 30 {
hbujanda 0:c87d86778f27 31 log_serial = new Serial(DEBUG_TX, DEBUG_RX);
hbujanda 0:c87d86778f27 32 log_serial->baud(9600);
hbujanda 0:c87d86778f27 33 log_serial->printf("Sample application to demo how to handle remote XBeeZB devices DIOs and ADCs\r\n\r\n");
hbujanda 0:c87d86778f27 34 log_serial->printf(XB_LIB_BANNER);
hbujanda 0:c87d86778f27 35
hbujanda 0:c87d86778f27 36 #if defined(ENABLE_LOGGING)
hbujanda 0:c87d86778f27 37 new DigiLoggerMbedSerial(log_serial, LogLevelInfo);
hbujanda 0:c87d86778f27 38 #endif
hbujanda 0:c87d86778f27 39
hbujanda 0:c87d86778f27 40 XBeeZB xbee = XBeeZB(RADIO_TX, RADIO_RX, RADIO_RESET, NC, NC, 9600);
hbujanda 0:c87d86778f27 41
hbujanda 0:c87d86778f27 42 RadioStatus radioStatus = xbee.init();
hbujanda 0:c87d86778f27 43 MBED_ASSERT(radioStatus == Success);
hbujanda 0:c87d86778f27 44
hbujanda 0:c87d86778f27 45 /* Wait until the device has joined the network */
hbujanda 0:c87d86778f27 46 log_serial->printf("Waiting for device to join the network: ");
hbujanda 0:c87d86778f27 47 while (!xbee.is_joined()) {
hbujanda 0:c87d86778f27 48 wait_ms(1000);
hbujanda 0:c87d86778f27 49 log_serial->printf(".");
hbujanda 0:c87d86778f27 50 }
hbujanda 0:c87d86778f27 51 log_serial->printf("OK\r\n");
hbujanda 0:c87d86778f27 52
hbujanda 0:c87d86778f27 53 const RemoteXBeeZB remoteDevice = RemoteXBeeZB(Addr64(REMOTE_NODE_ADDR64_MSB, REMOTE_NODE_ADDR64_LSB));
hbujanda 0:c87d86778f27 54
hbujanda 0:c87d86778f27 55 radioStatus = xbee.set_pin_config(remoteDevice, XBeeZB::DIO3_AD3, DigitalInput);
hbujanda 0:c87d86778f27 56 MBED_ASSERT(radioStatus == Success);
hbujanda 0:c87d86778f27 57
hbujanda 0:c87d86778f27 58 radioStatus = xbee.set_pin_config(remoteDevice, XBeeZB::DIO4, DigitalOutHigh);
hbujanda 0:c87d86778f27 59 MBED_ASSERT(radioStatus == Success);
hbujanda 0:c87d86778f27 60
hbujanda 0:c87d86778f27 61 radioStatus = xbee.set_pin_config(remoteDevice, XBeeZB::DIO2_AD2, Adc);
hbujanda 0:c87d86778f27 62 MBED_ASSERT(radioStatus == Success);
hbujanda 0:c87d86778f27 63
hbujanda 0:c87d86778f27 64 //#define TEST_SUPPLY_VOLTAGE
hbujanda 0:c87d86778f27 65
hbujanda 0:c87d86778f27 66 #ifdef TEST_SUPPLY_VOLTAGE
hbujanda 0:c87d86778f27 67 /* Set a high V+ value so radio sends Supply Voltage information */
hbujanda 0:c87d86778f27 68 uint16_t v_value = 0x0C00;
hbujanda 0:c87d86778f27 69 log_serial->printf("\r\nSetting remote device V+ parameter to 0x%04x:\r\n", v_value);
hbujanda 0:c87d86778f27 70 AtCmdFrame::AtCmdResp cmdresp = xbee.set_param(remoteDevice, "V+", v_value);
hbujanda 0:c87d86778f27 71
hbujanda 0:c87d86778f27 72 if (cmdresp == AtCmdFrame::AtCmdRespOk)
hbujanda 0:c87d86778f27 73 log_serial->printf("OK\r\n");
hbujanda 0:c87d86778f27 74 else
hbujanda 0:c87d86778f27 75 log_serial->printf("FAILED with %d\r\n", (int) cmdresp);
hbujanda 0:c87d86778f27 76 #endif
hbujanda 0:c87d86778f27 77
hbujanda 0:c87d86778f27 78 while(true) {
hbujanda 0:c87d86778f27 79 /* Read DIO3_AD3 value */
hbujanda 0:c87d86778f27 80 DioVal dio3_val;
hbujanda 0:c87d86778f27 81 radioStatus = xbee.get_dio(remoteDevice, XBeeZB::DIO3_AD3, &dio3_val);
hbujanda 0:c87d86778f27 82 MBED_ASSERT(radioStatus == Success);
hbujanda 0:c87d86778f27 83 log_serial->printf("DIO3 value = %d\r\n", dio3_val);
hbujanda 0:c87d86778f27 84
hbujanda 0:c87d86778f27 85 /* Toggle XBIB board DS4 led */
hbujanda 0:c87d86778f27 86 static bool led_on = false;
hbujanda 0:c87d86778f27 87 if (!led_on)
hbujanda 0:c87d86778f27 88 radioStatus = xbee.set_dio(remoteDevice, XBeeZB::DIO4, Low);
hbujanda 0:c87d86778f27 89 else
hbujanda 0:c87d86778f27 90 radioStatus = xbee.set_dio(remoteDevice, XBeeZB::DIO4, High);
hbujanda 0:c87d86778f27 91 MBED_ASSERT(radioStatus == Success);
hbujanda 0:c87d86778f27 92 led_on = !led_on;
hbujanda 0:c87d86778f27 93
hbujanda 0:c87d86778f27 94 /* Read DIO2_AD2 analog value */
hbujanda 0:c87d86778f27 95 uint16_t adc2_val;
hbujanda 0:c87d86778f27 96 radioStatus = xbee.get_adc(remoteDevice, XBeeZB::DIO2_AD2, &adc2_val);
hbujanda 0:c87d86778f27 97 MBED_ASSERT(radioStatus == Success);
hbujanda 0:c87d86778f27 98 log_serial->printf("ADC2 value = 0x%04x\r\n", adc2_val);
hbujanda 0:c87d86778f27 99
hbujanda 0:c87d86778f27 100 #ifdef TEST_SUPPLY_VOLTAGE
hbujanda 0:c87d86778f27 101 uint16_t voltaje_val;
hbujanda 0:c87d86778f27 102 radioStatus = xbee.get_adc(remoteDevice, XBeeZB::SUPPLY_VOLTAGE, &voltaje_val);
hbujanda 0:c87d86778f27 103 if (radioStatus == Success)
hbujanda 0:c87d86778f27 104 log_serial->printf("Remote module Supply Voltage = 0x%04x\r\n", voltaje_val);
hbujanda 0:c87d86778f27 105 #endif
hbujanda 0:c87d86778f27 106
hbujanda 0:c87d86778f27 107 log_serial->printf("\r\n");
hbujanda 0:c87d86778f27 108
hbujanda 0:c87d86778f27 109 wait(5);
hbujanda 0:c87d86778f27 110 }
hbujanda 0:c87d86778f27 111
hbujanda 0:c87d86778f27 112 delete(log_serial);
hbujanda 0:c87d86778f27 113 }