Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of XBeeZB_dio_adc by
main.cpp@0:c87d86778f27, 2015-04-29 (annotated)
- 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?
User | Revision | Line number | New 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 | } |