XBee API operation library for mbed
Embed:
(wiki syntax)
Show/hide line numbers
Address.cpp
00001 #include "Address.h" 00002 00003 Address * Address::BROADCAST_ZIGBEE = new Address(0x00000000, 0x0000FFFF, 0xFFFE); 00004 Address * 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 }
Generated on Tue Jul 12 2022 11:17:04 by 1.7.2