Library to easily communicate with XBee modules.

Fork of XBeeLib by Digi International Inc.

Committer:
basvuyk
Date:
Tue Mar 27 14:13:12 2018 +0000
Revision:
10:273032d9299a
Parent:
6:06522f3a6642
Slave V1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
spastor 0:fcaad0dfa051 1 /**
spastor 0:fcaad0dfa051 2 * Copyright (c) 2015 Digi International Inc.,
spastor 0:fcaad0dfa051 3 * All rights not expressly granted are reserved.
spastor 0:fcaad0dfa051 4 *
spastor 0:fcaad0dfa051 5 * This Source Code Form is subject to the terms of the Mozilla Public
spastor 0:fcaad0dfa051 6 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
spastor 0:fcaad0dfa051 7 * You can obtain one at http://mozilla.org/MPL/2.0/.
spastor 0:fcaad0dfa051 8 *
spastor 0:fcaad0dfa051 9 * Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
spastor 0:fcaad0dfa051 10 * =======================================================================
spastor 0:fcaad0dfa051 11 */
spastor 0:fcaad0dfa051 12
spastor 0:fcaad0dfa051 13 #if !defined(__XBEE_REMOTE_H_)
spastor 0:fcaad0dfa051 14 #define __XBEE_REMOTE_H_
spastor 0:fcaad0dfa051 15
spastor 0:fcaad0dfa051 16 #include "XBee/Addresses.h"
spastor 0:fcaad0dfa051 17
spastor 0:fcaad0dfa051 18 namespace XBeeLib {
spastor 4:629712865107 19
spastor 0:fcaad0dfa051 20 /** Class for Remote XBee modules. Not to be used directly. */
spastor 0:fcaad0dfa051 21 class RemoteXBee
spastor 0:fcaad0dfa051 22 {
spastor 0:fcaad0dfa051 23 public:
spastor 0:fcaad0dfa051 24
spastor 0:fcaad0dfa051 25 /** Default Class constructor for a remote device (connected wirelessly). No address set.
spastor 0:fcaad0dfa051 26 */
spastor 0:fcaad0dfa051 27 RemoteXBee();
spastor 0:fcaad0dfa051 28
spastor 0:fcaad0dfa051 29 /** Class constructor for a remote device (connected wirelessly) using 64bit addressing
spastor 0:fcaad0dfa051 30 * @param remote64 the 64-bit address (ATSH and ATSL parameters) of the remote XBee module
spastor 0:fcaad0dfa051 31 */
spastor 0:fcaad0dfa051 32 RemoteXBee(uint64_t remote64);
spastor 0:fcaad0dfa051 33
spastor 0:fcaad0dfa051 34 /** Class destructor */
spastor 0:fcaad0dfa051 35 ~RemoteXBee();
spastor 0:fcaad0dfa051 36
spastor 0:fcaad0dfa051 37 /** get_addr64 - returns the 64bit address of the remote device
spastor 0:fcaad0dfa051 38 *
spastor 0:fcaad0dfa051 39 * @returns the 64bit address of the remote device
spastor 0:fcaad0dfa051 40 */
spastor 0:fcaad0dfa051 41 uint64_t get_addr64() const;
spastor 0:fcaad0dfa051 42
spastor 0:fcaad0dfa051 43 /** get_addr16 - returns the 16bit address of the remote device
spastor 0:fcaad0dfa051 44 *
spastor 0:fcaad0dfa051 45 * @returns the 16bit address of the remote device
spastor 0:fcaad0dfa051 46 */
spastor 0:fcaad0dfa051 47 uint16_t get_addr16() const;
spastor 0:fcaad0dfa051 48
spastor 0:fcaad0dfa051 49 /** operator == overload so the object can be compared to equal */
spastor 0:fcaad0dfa051 50 inline bool operator == (const RemoteXBee &b) const
spastor 0:fcaad0dfa051 51 {
spastor 0:fcaad0dfa051 52 return ((b._dev_addr16 == _dev_addr16) &&
spastor 0:fcaad0dfa051 53 (b._dev_addr64 == _dev_addr64));
spastor 0:fcaad0dfa051 54 }
spastor 0:fcaad0dfa051 55
spastor 0:fcaad0dfa051 56 /** operator != overload so the object can be compared to not equal */
spastor 0:fcaad0dfa051 57 inline bool operator != (const RemoteXBee &b) const
spastor 0:fcaad0dfa051 58 {
spastor 0:fcaad0dfa051 59 return !(this == &b);
spastor 0:fcaad0dfa051 60 }
spastor 0:fcaad0dfa051 61
spastor 0:fcaad0dfa051 62 /** is_valid_addr16b - checks if the RemoteXBee object has a valid 16b address
spastor 0:fcaad0dfa051 63 * @returns true if valid, false otherwise
spastor 0:fcaad0dfa051 64 */
spastor 0:fcaad0dfa051 65 inline bool is_valid_addr16b() const
spastor 0:fcaad0dfa051 66 {
spastor 0:fcaad0dfa051 67 return (_dev_addr16 != ADDR16_UNKNOWN);
spastor 0:fcaad0dfa051 68 }
spastor 0:fcaad0dfa051 69
spastor 0:fcaad0dfa051 70 /** is_valid_addr64b - checks if the RemoteXBee object has a valid 64b address
spastor 0:fcaad0dfa051 71 * @returns true if valid, false otherwise
spastor 0:fcaad0dfa051 72 */
spastor 0:fcaad0dfa051 73 inline bool is_valid_addr64b() const
spastor 0:fcaad0dfa051 74 {
spastor 0:fcaad0dfa051 75 return !(_dev_addr64 == ADDR64_UNASSIGNED);
spastor 0:fcaad0dfa051 76 }
spastor 0:fcaad0dfa051 77
spastor 0:fcaad0dfa051 78
spastor 0:fcaad0dfa051 79 protected:
spastor 0:fcaad0dfa051 80 /** Remote Device 64 bit address */
spastor 0:fcaad0dfa051 81 uint64_t _dev_addr64;
spastor 0:fcaad0dfa051 82
spastor 4:629712865107 83 /** Remote Device 16 bit address */
spastor 0:fcaad0dfa051 84 uint16_t _dev_addr16;
spastor 0:fcaad0dfa051 85 };
spastor 0:fcaad0dfa051 86
spastor 0:fcaad0dfa051 87 class FH_NodeDiscovery802;
spastor 0:fcaad0dfa051 88 /** Class for 802.15.4 Remote XBee modules */
spastor 0:fcaad0dfa051 89 class RemoteXBee802 : public RemoteXBee
spastor 0:fcaad0dfa051 90 {
spastor 0:fcaad0dfa051 91 public:
spastor 0:fcaad0dfa051 92
spastor 0:fcaad0dfa051 93 /** Default Class constructor for a 802.15.4 remote device (connected wirelessly). No address set.
spastor 0:fcaad0dfa051 94 */
spastor 0:fcaad0dfa051 95 RemoteXBee802();
spastor 0:fcaad0dfa051 96
spastor 0:fcaad0dfa051 97 /** Class constructor for a 802.15.4 remote device (connected wirelessly) using 64bit addressing
spastor 0:fcaad0dfa051 98 * @param remote64 the 64-bit address (ATSH and ATSL parameters) of the remote XBee module
spastor 0:fcaad0dfa051 99 */
spastor 0:fcaad0dfa051 100 RemoteXBee802(uint64_t remote64);
spastor 4:629712865107 101
spastor 0:fcaad0dfa051 102 /** Class constructor for a 802.15.4 remote device (connected wirelessly) using 16bit addressing
spastor 0:fcaad0dfa051 103 * @param remote16 the 16-bit address (ATMY parameter) of the remote XBee module
spastor 0:fcaad0dfa051 104 */
spastor 0:fcaad0dfa051 105 RemoteXBee802(uint16_t remote16);
spastor 0:fcaad0dfa051 106
spastor 0:fcaad0dfa051 107 /** Class destructor */
spastor 0:fcaad0dfa051 108 ~RemoteXBee802();
spastor 0:fcaad0dfa051 109
spastor 0:fcaad0dfa051 110 inline bool is_valid(void)
spastor 0:fcaad0dfa051 111 {
spastor 0:fcaad0dfa051 112 return is_valid_addr64b() || is_valid_addr16b();
spastor 0:fcaad0dfa051 113 }
spastor 0:fcaad0dfa051 114
spastor 0:fcaad0dfa051 115 protected:
spastor 0:fcaad0dfa051 116
spastor 0:fcaad0dfa051 117 friend FH_NodeDiscovery802;
hbujanda 2:2ee1b6d51df2 118 friend class XBee802;
spastor 0:fcaad0dfa051 119
spastor 0:fcaad0dfa051 120 /** Class constructor for a 802.15.4 remote device (connected wirelessly) for which both the 64-bit and 16-bit addresses are known.
spastor 0:fcaad0dfa051 121 * This constructor is only used by FH_NodeDiscovery802 class.
spastor 0:fcaad0dfa051 122 * @param remote64 the 64-bit address (ATSH and ATSL parameters) of the remote XBee module
spastor 0:fcaad0dfa051 123 * @param remote16 the 16-bit address (ATMY parameter) of the remote XBee module
spastor 0:fcaad0dfa051 124 */
spastor 0:fcaad0dfa051 125 RemoteXBee802(uint64_t remote64, uint16_t remote16);
spastor 0:fcaad0dfa051 126 };
spastor 0:fcaad0dfa051 127
spastor 0:fcaad0dfa051 128 /** Class for ZigBee Remote XBee modules */
spastor 0:fcaad0dfa051 129 class RemoteXBeeZB : public RemoteXBee
spastor 0:fcaad0dfa051 130 {
spastor 0:fcaad0dfa051 131 public:
spastor 0:fcaad0dfa051 132
spastor 0:fcaad0dfa051 133 /** Default Class constructor for a ZigBee remote device (connected wirelessly). No address set.
spastor 0:fcaad0dfa051 134 */
spastor 0:fcaad0dfa051 135 RemoteXBeeZB();
spastor 0:fcaad0dfa051 136
spastor 0:fcaad0dfa051 137 /** Class constructor for a ZigBee remote device (connected wirelessly) using 64bit addressing
spastor 0:fcaad0dfa051 138 * @param remote64 the 64-bit address (ATSH and ATSL parameters) of the remote XBee module
spastor 0:fcaad0dfa051 139 */
spastor 0:fcaad0dfa051 140 RemoteXBeeZB(uint64_t remote64);
spastor 0:fcaad0dfa051 141
spastor 0:fcaad0dfa051 142 /** Class constructor for a ZigBee remote device (connected wirelessly) using 64bit and 16b addressing
spastor 0:fcaad0dfa051 143 * @param remote64 the 64-bit address (ATSH and ATSL parameters) of the remote XBee module
spastor 0:fcaad0dfa051 144 * @param remote16 the 16-bit address (ATMY parameter) of the remote XBee module
spastor 0:fcaad0dfa051 145 */
spastor 0:fcaad0dfa051 146 RemoteXBeeZB(uint64_t remote64, uint16_t remote16);
spastor 4:629712865107 147
spastor 0:fcaad0dfa051 148 /** Class destructor */
spastor 0:fcaad0dfa051 149 ~RemoteXBeeZB();
spastor 0:fcaad0dfa051 150
spastor 0:fcaad0dfa051 151 inline bool is_valid(void)
spastor 0:fcaad0dfa051 152 {
spastor 0:fcaad0dfa051 153 return is_valid_addr64b();
spastor 0:fcaad0dfa051 154 }
spastor 0:fcaad0dfa051 155 };
spastor 0:fcaad0dfa051 156
hbujanda 6:06522f3a6642 157 /** Class for DigiMesh Remote XBee modules */
hbujanda 6:06522f3a6642 158 class RemoteXBeeDM : public RemoteXBee
hbujanda 6:06522f3a6642 159 {
hbujanda 6:06522f3a6642 160 public:
hbujanda 6:06522f3a6642 161
hbujanda 6:06522f3a6642 162 /** Default Class constructor for a DigiMesh remote device (connected wirelessly). No address set.
hbujanda 6:06522f3a6642 163 */
hbujanda 6:06522f3a6642 164 RemoteXBeeDM();
hbujanda 6:06522f3a6642 165
hbujanda 6:06522f3a6642 166 /** Class constructor for a DigiMesh remote device (connected wirelessly) using 64bit addressing
hbujanda 6:06522f3a6642 167 * @param remote64 the 64-bit address (ATSH and ATSL parameters) of the remote XBee module
hbujanda 6:06522f3a6642 168 */
hbujanda 6:06522f3a6642 169 RemoteXBeeDM(uint64_t remote64);
hbujanda 6:06522f3a6642 170
hbujanda 6:06522f3a6642 171 /** Class destructor */
hbujanda 6:06522f3a6642 172 ~RemoteXBeeDM();
hbujanda 6:06522f3a6642 173
hbujanda 6:06522f3a6642 174 inline bool is_valid(void)
hbujanda 6:06522f3a6642 175 {
hbujanda 6:06522f3a6642 176 return is_valid_addr64b();
hbujanda 6:06522f3a6642 177 }
hbujanda 6:06522f3a6642 178 };
hbujanda 6:06522f3a6642 179
spastor 0:fcaad0dfa051 180 } /* namespace XBeeLib */
spastor 0:fcaad0dfa051 181
spastor 0:fcaad0dfa051 182 #endif /* defined(__XBEE_REMOTE_H_) */