XBee API operation library for mbed
SmartLabXBeeCore/Device/Address.cpp@8:4da2ac03e35e, 2016-03-30 (annotated)
- Committer:
- yangcq88517
- Date:
- Wed Mar 30 19:58:48 2016 +0000
- Revision:
- 8:4da2ac03e35e
- Child:
- 9:6e4ef3c302b4
put every thing together and documentation bug fix
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yangcq88517 | 8:4da2ac03e35e | 1 | #include "Address.h" |
yangcq88517 | 8:4da2ac03e35e | 2 | |
yangcq88517 | 8:4da2ac03e35e | 3 | Address * BROADCAST_ZIGBEE = new Address(0x00000000, 0x0000FFFF, 0xFFFE); |
yangcq88517 | 8:4da2ac03e35e | 4 | Address * BROADCAST_XBEE = new Address(0x00000000, 0x00000000, 0xFFFF); |
yangcq88517 | 8:4da2ac03e35e | 5 | |
yangcq88517 | 8:4da2ac03e35e | 6 | Address::Address() {} |
yangcq88517 | 8:4da2ac03e35e | 7 | |
yangcq88517 | 8:4da2ac03e35e | 8 | Address::Address(const unsigned char * address64, const unsigned char * NET16) |
yangcq88517 | 8:4da2ac03e35e | 9 | { |
yangcq88517 | 8:4da2ac03e35e | 10 | if (address64 != NULL) |
yangcq88517 | 8:4da2ac03e35e | 11 | memcpy(value,address64,8); |
yangcq88517 | 8:4da2ac03e35e | 12 | |
yangcq88517 | 8:4da2ac03e35e | 13 | if (NET16 != NULL) { |
yangcq88517 | 8:4da2ac03e35e | 14 | value[8] = NET16[0]; |
yangcq88517 | 8:4da2ac03e35e | 15 | value[9] = NET16[1]; |
yangcq88517 | 8:4da2ac03e35e | 16 | } |
yangcq88517 | 8:4da2ac03e35e | 17 | } |
yangcq88517 | 8:4da2ac03e35e | 18 | |
yangcq88517 | 8:4da2ac03e35e | 19 | Address::Address(const unsigned char * addr) |
yangcq88517 | 8:4da2ac03e35e | 20 | { |
yangcq88517 | 8:4da2ac03e35e | 21 | if (addr != NULL) |
yangcq88517 | 8:4da2ac03e35e | 22 | memcpy(value,addr,10); |
yangcq88517 | 8:4da2ac03e35e | 23 | } |
yangcq88517 | 8:4da2ac03e35e | 24 | |
yangcq88517 | 8:4da2ac03e35e | 25 | Address::Address(long serialNumberHigh, long serialNumberLow, int networkAddress) |
yangcq88517 | 8:4da2ac03e35e | 26 | { |
yangcq88517 | 8:4da2ac03e35e | 27 | setSerialNumberHigh(serialNumberHigh); |
yangcq88517 | 8:4da2ac03e35e | 28 | setSerialNumberLow(serialNumberLow); |
yangcq88517 | 8:4da2ac03e35e | 29 | setNetworkAddress(networkAddress); |
yangcq88517 | 8:4da2ac03e35e | 30 | } |
yangcq88517 | 8:4da2ac03e35e | 31 | |
yangcq88517 | 8:4da2ac03e35e | 32 | unsigned long Address::getSerialNumberHigh() |
yangcq88517 | 8:4da2ac03e35e | 33 | { |
yangcq88517 | 8:4da2ac03e35e | 34 | return (value[0] << 24) | (value[1] << 16) | (value[2] << 8) | value[3]; |
yangcq88517 | 8:4da2ac03e35e | 35 | } |
yangcq88517 | 8:4da2ac03e35e | 36 | |
yangcq88517 | 8:4da2ac03e35e | 37 | unsigned long Address::getSerialNumberLow() |
yangcq88517 | 8:4da2ac03e35e | 38 | { |
yangcq88517 | 8:4da2ac03e35e | 39 | return (value[4] << 24) | (value[5] << 16) | (value[6] << 8) | value[7]; |
yangcq88517 | 8:4da2ac03e35e | 40 | } |
yangcq88517 | 8:4da2ac03e35e | 41 | |
yangcq88517 | 8:4da2ac03e35e | 42 | unsigned int Address::getNetworkAddress() |
yangcq88517 | 8:4da2ac03e35e | 43 | { |
yangcq88517 | 8:4da2ac03e35e | 44 | return (value[8] << 8) | value[9]; |
yangcq88517 | 8:4da2ac03e35e | 45 | } |
yangcq88517 | 8:4da2ac03e35e | 46 | |
yangcq88517 | 8:4da2ac03e35e | 47 | void Address::setSerialNumberHigh(long serialNumberHigh) |
yangcq88517 | 8:4da2ac03e35e | 48 | { |
yangcq88517 | 8:4da2ac03e35e | 49 | value[0] = serialNumberHigh >> 24; |
yangcq88517 | 8:4da2ac03e35e | 50 | value[1] = serialNumberHigh >> 16; |
yangcq88517 | 8:4da2ac03e35e | 51 | value[2] = serialNumberHigh >> 8; |
yangcq88517 | 8:4da2ac03e35e | 52 | value[3] = serialNumberHigh; |
yangcq88517 | 8:4da2ac03e35e | 53 | } |
yangcq88517 | 8:4da2ac03e35e | 54 | |
yangcq88517 | 8:4da2ac03e35e | 55 | void Address::setSerialNumberLow(long serialNumberLow) |
yangcq88517 | 8:4da2ac03e35e | 56 | { |
yangcq88517 | 8:4da2ac03e35e | 57 | value[4] = serialNumberLow >> 24; |
yangcq88517 | 8:4da2ac03e35e | 58 | value[5] = serialNumberLow >> 16; |
yangcq88517 | 8:4da2ac03e35e | 59 | value[6] = serialNumberLow >> 8; |
yangcq88517 | 8:4da2ac03e35e | 60 | value[7] = serialNumberLow; |
yangcq88517 | 8:4da2ac03e35e | 61 | } |
yangcq88517 | 8:4da2ac03e35e | 62 | |
yangcq88517 | 8:4da2ac03e35e | 63 | void Address::setNetworkAddress(int networkAddress) |
yangcq88517 | 8:4da2ac03e35e | 64 | { |
yangcq88517 | 8:4da2ac03e35e | 65 | value[8] = networkAddress >> 8; |
yangcq88517 | 8:4da2ac03e35e | 66 | value[9] = networkAddress; |
yangcq88517 | 8:4da2ac03e35e | 67 | } |
yangcq88517 | 8:4da2ac03e35e | 68 | |
yangcq88517 | 8:4da2ac03e35e | 69 | const unsigned char * Address::getAddressValue() |
yangcq88517 | 8:4da2ac03e35e | 70 | { |
yangcq88517 | 8:4da2ac03e35e | 71 | return value; |
yangcq88517 | 8:4da2ac03e35e | 72 | } |
yangcq88517 | 8:4da2ac03e35e | 73 | |
yangcq88517 | 8:4da2ac03e35e | 74 | bool operator ==(const Address &a,const Address &b) |
yangcq88517 | 8:4da2ac03e35e | 75 | { |
yangcq88517 | 8:4da2ac03e35e | 76 | for (uint8_t i = 0; i < 8; i++) |
yangcq88517 | 8:4da2ac03e35e | 77 | if (a.value[i] != b.value[i]) |
yangcq88517 | 8:4da2ac03e35e | 78 | return false; |
yangcq88517 | 8:4da2ac03e35e | 79 | return true; |
yangcq88517 | 8:4da2ac03e35e | 80 | } |
yangcq88517 | 8:4da2ac03e35e | 81 | |
yangcq88517 | 8:4da2ac03e35e | 82 | bool operator !=(const Address &a,const Address &b) |
yangcq88517 | 8:4da2ac03e35e | 83 | { |
yangcq88517 | 8:4da2ac03e35e | 84 | return !(a==b); |
yangcq88517 | 8:4da2ac03e35e | 85 | } |