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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Address.cpp Source File

Address.cpp

00001 #include "Address.h"
00002 
00003 Address * BROADCAST_ZIGBEE = new Address(0x00000000, 0x0000FFFF, 0xFFFE);
00004 Address * BROADCAST_XBEE = new Address(0x00000000, 0x00000000, 0xFFFF);
00005 
00006 Address::Address() {}
00007 
00008 Address::Address(const unsigned  char * address64, const unsigned  char * NET16)
00009 {
00010     if (address64 != NULL)
00011         memcpy(value,address64,8);
00012 
00013     if (NET16 != NULL) {
00014         value[8] = NET16[0];
00015         value[9] = NET16[1];
00016     }
00017 }
00018 
00019 Address::Address(const unsigned  char * addr)
00020 {
00021     if (addr != NULL)
00022         memcpy(value,addr,10);
00023 }
00024 
00025 Address::Address(long serialNumberHigh, long serialNumberLow, int networkAddress)
00026 {
00027     setSerialNumberHigh(serialNumberHigh);
00028     setSerialNumberLow(serialNumberLow);
00029     setNetworkAddress(networkAddress);
00030 }
00031 
00032 unsigned long Address::getSerialNumberHigh()
00033 {
00034     return (value[0] << 24) | (value[1] << 16) | (value[2] << 8) | value[3];
00035 }
00036 
00037 unsigned long Address::getSerialNumberLow()
00038 {
00039     return (value[4] << 24) | (value[5] << 16) | (value[6] << 8) | value[7];
00040 }
00041 
00042 unsigned int Address::getNetworkAddress()
00043 {
00044     return (value[8] << 8) | value[9];
00045 }
00046 
00047 void Address::setSerialNumberHigh(long serialNumberHigh)
00048 {
00049     value[0] = serialNumberHigh >> 24;
00050     value[1] = serialNumberHigh >> 16;
00051     value[2] = serialNumberHigh >> 8;
00052     value[3] = serialNumberHigh;
00053 }
00054 
00055 void Address::setSerialNumberLow(long serialNumberLow)
00056 {
00057     value[4] = serialNumberLow >> 24;
00058     value[5] = serialNumberLow >> 16;
00059     value[6] = serialNumberLow >> 8;
00060     value[7] = serialNumberLow;
00061 }
00062 
00063 void Address::setNetworkAddress(int networkAddress)
00064 {
00065     value[8] = networkAddress >> 8;
00066     value[9] = networkAddress;
00067 }
00068 
00069 const unsigned  char * Address::getAddressValue()
00070 {
00071     return value;
00072 }
00073 
00074 bool operator ==(const Address &a,const Address &b)
00075 {
00076     for (uint8_t i = 0; i < 8; i++)
00077         if (a.value[i] != b.value[i])
00078             return false;
00079     return true;
00080 }
00081 
00082 bool operator !=(const Address &a,const Address &b)
00083 {
00084     return !(a==b);
00085 }