XBee and XBee-PRO ZigBee RF modules provide cost-effective wireless connectivity to electronic devices. They are interoperable with other ZigBee PRO feature set devices, including devices from other vendors.
Device/Address.cpp@6:5f31ddc17239, 2015-11-14 (annotated)
- Committer:
- yangcq88517
- Date:
- Sat Nov 14 16:42:36 2015 +0000
- Revision:
- 6:5f31ddc17239
- Parent:
- 0:837e6c48e90d
change to unsigned char array
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yangcq88517 | 0:837e6c48e90d | 1 | #include "Address.h" |
yangcq88517 | 0:837e6c48e90d | 2 | |
yangcq88517 | 0:837e6c48e90d | 3 | Address * BROADCAST_ZIGBEE = new Address(0x00000000, 0x0000FFFF, 0xFFFE); |
yangcq88517 | 0:837e6c48e90d | 4 | Address * BROADCAST_XBEE = new Address(0x00000000, 0x00000000, 0xFFFF); |
yangcq88517 | 0:837e6c48e90d | 5 | |
yangcq88517 | 0:837e6c48e90d | 6 | Address::Address() {} |
yangcq88517 | 0:837e6c48e90d | 7 | |
yangcq88517 | 6:5f31ddc17239 | 8 | Address::Address(const unsigned char * address64, const unsigned char * NET16) |
yangcq88517 | 0:837e6c48e90d | 9 | { |
yangcq88517 | 0:837e6c48e90d | 10 | if (address64 != NULL) |
yangcq88517 | 0:837e6c48e90d | 11 | memcpy(value,address64,8); |
yangcq88517 | 0:837e6c48e90d | 12 | |
yangcq88517 | 0:837e6c48e90d | 13 | if (NET16 != NULL) { |
yangcq88517 | 0:837e6c48e90d | 14 | value[8] = NET16[0]; |
yangcq88517 | 0:837e6c48e90d | 15 | value[9] = NET16[1]; |
yangcq88517 | 0:837e6c48e90d | 16 | } |
yangcq88517 | 0:837e6c48e90d | 17 | } |
yangcq88517 | 0:837e6c48e90d | 18 | |
yangcq88517 | 6:5f31ddc17239 | 19 | Address::Address(const unsigned char * addr) |
yangcq88517 | 0:837e6c48e90d | 20 | { |
yangcq88517 | 0:837e6c48e90d | 21 | if (addr != NULL) |
yangcq88517 | 0:837e6c48e90d | 22 | memcpy(value,addr,10); |
yangcq88517 | 0:837e6c48e90d | 23 | } |
yangcq88517 | 0:837e6c48e90d | 24 | |
yangcq88517 | 0:837e6c48e90d | 25 | Address::Address(long serialNumberHigh, long serialNumberLow, int networkAddress) |
yangcq88517 | 0:837e6c48e90d | 26 | { |
yangcq88517 | 0:837e6c48e90d | 27 | setSerialNumberHigh(serialNumberHigh); |
yangcq88517 | 0:837e6c48e90d | 28 | setSerialNumberLow(serialNumberLow); |
yangcq88517 | 0:837e6c48e90d | 29 | setNetworkAddress(networkAddress); |
yangcq88517 | 0:837e6c48e90d | 30 | } |
yangcq88517 | 0:837e6c48e90d | 31 | |
yangcq88517 | 6:5f31ddc17239 | 32 | unsigned long Address::getSerialNumberHigh() |
yangcq88517 | 0:837e6c48e90d | 33 | { |
yangcq88517 | 0:837e6c48e90d | 34 | return (value[0] << 24) | (value[1] << 16) | (value[2] << 8) | value[3]; |
yangcq88517 | 0:837e6c48e90d | 35 | } |
yangcq88517 | 0:837e6c48e90d | 36 | |
yangcq88517 | 6:5f31ddc17239 | 37 | unsigned long Address::getSerialNumberLow() |
yangcq88517 | 0:837e6c48e90d | 38 | { |
yangcq88517 | 0:837e6c48e90d | 39 | return (value[4] << 24) | (value[5] << 16) | (value[6] << 8) | value[7]; |
yangcq88517 | 0:837e6c48e90d | 40 | } |
yangcq88517 | 0:837e6c48e90d | 41 | |
yangcq88517 | 6:5f31ddc17239 | 42 | unsigned int Address::getNetworkAddress() |
yangcq88517 | 0:837e6c48e90d | 43 | { |
yangcq88517 | 0:837e6c48e90d | 44 | return (value[8] << 8) | value[9]; |
yangcq88517 | 0:837e6c48e90d | 45 | } |
yangcq88517 | 0:837e6c48e90d | 46 | |
yangcq88517 | 0:837e6c48e90d | 47 | void Address::setSerialNumberHigh(long serialNumberHigh) |
yangcq88517 | 0:837e6c48e90d | 48 | { |
yangcq88517 | 0:837e6c48e90d | 49 | value[0] = serialNumberHigh >> 24; |
yangcq88517 | 0:837e6c48e90d | 50 | value[1] = serialNumberHigh >> 16; |
yangcq88517 | 0:837e6c48e90d | 51 | value[2] = serialNumberHigh >> 8; |
yangcq88517 | 0:837e6c48e90d | 52 | value[3] = serialNumberHigh; |
yangcq88517 | 0:837e6c48e90d | 53 | } |
yangcq88517 | 0:837e6c48e90d | 54 | |
yangcq88517 | 0:837e6c48e90d | 55 | void Address::setSerialNumberLow(long serialNumberLow) |
yangcq88517 | 0:837e6c48e90d | 56 | { |
yangcq88517 | 0:837e6c48e90d | 57 | value[4] = serialNumberLow >> 24; |
yangcq88517 | 0:837e6c48e90d | 58 | value[5] = serialNumberLow >> 16; |
yangcq88517 | 0:837e6c48e90d | 59 | value[6] = serialNumberLow >> 8; |
yangcq88517 | 0:837e6c48e90d | 60 | value[7] = serialNumberLow; |
yangcq88517 | 0:837e6c48e90d | 61 | } |
yangcq88517 | 0:837e6c48e90d | 62 | |
yangcq88517 | 0:837e6c48e90d | 63 | void Address::setNetworkAddress(int networkAddress) |
yangcq88517 | 0:837e6c48e90d | 64 | { |
yangcq88517 | 0:837e6c48e90d | 65 | value[8] = networkAddress >> 8; |
yangcq88517 | 0:837e6c48e90d | 66 | value[9] = networkAddress; |
yangcq88517 | 0:837e6c48e90d | 67 | } |
yangcq88517 | 0:837e6c48e90d | 68 | |
yangcq88517 | 6:5f31ddc17239 | 69 | const unsigned char * Address::getAddressValue() |
yangcq88517 | 0:837e6c48e90d | 70 | { |
yangcq88517 | 0:837e6c48e90d | 71 | return value; |
yangcq88517 | 0:837e6c48e90d | 72 | } |
yangcq88517 | 0:837e6c48e90d | 73 | |
yangcq88517 | 0:837e6c48e90d | 74 | bool operator ==(const Address &a,const Address &b) |
yangcq88517 | 0:837e6c48e90d | 75 | { |
yangcq88517 | 0:837e6c48e90d | 76 | for (uint8_t i = 0; i < 8; i++) |
yangcq88517 | 0:837e6c48e90d | 77 | if (a.value[i] != b.value[i]) |
yangcq88517 | 0:837e6c48e90d | 78 | return false; |
yangcq88517 | 0:837e6c48e90d | 79 | return true; |
yangcq88517 | 0:837e6c48e90d | 80 | } |
yangcq88517 | 0:837e6c48e90d | 81 | |
yangcq88517 | 0:837e6c48e90d | 82 | bool operator !=(const Address &a,const Address &b) |
yangcq88517 | 0:837e6c48e90d | 83 | { |
yangcq88517 | 0:837e6c48e90d | 84 | return !(a==b); |
yangcq88517 | 0:837e6c48e90d | 85 | } |