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.

Dependencies:   BufferedArray

Dependents:   MBEDminiproject

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?

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