XBee API mode library
XBeeDataTypes.h@0:0232a97b3883, 2012-07-26 (annotated)
- Committer:
- yamaguch
- Date:
- Thu Jul 26 10:33:11 2012 +0000
- Revision:
- 0:0232a97b3883
- Child:
- 2:eea7afd6cf08
[mbed] converted /XBeeExamples/XBee
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yamaguch | 0:0232a97b3883 | 1 | /* |
yamaguch | 0:0232a97b3883 | 2 | Copyright (c) 2012, Senio Networks, Inc. |
yamaguch | 0:0232a97b3883 | 3 | |
yamaguch | 0:0232a97b3883 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy |
yamaguch | 0:0232a97b3883 | 5 | of this software and associated documentation files (the "Software"), to deal |
yamaguch | 0:0232a97b3883 | 6 | in the Software without restriction, including without limitation the rights |
yamaguch | 0:0232a97b3883 | 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
yamaguch | 0:0232a97b3883 | 8 | copies of the Software, and to permit persons to whom the Software is |
yamaguch | 0:0232a97b3883 | 9 | furnished to do so, subject to the following conditions: |
yamaguch | 0:0232a97b3883 | 10 | |
yamaguch | 0:0232a97b3883 | 11 | The above copyright notice and this permission notice shall be included in |
yamaguch | 0:0232a97b3883 | 12 | all copies or substantial portions of the Software. |
yamaguch | 0:0232a97b3883 | 13 | |
yamaguch | 0:0232a97b3883 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
yamaguch | 0:0232a97b3883 | 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
yamaguch | 0:0232a97b3883 | 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
yamaguch | 0:0232a97b3883 | 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
yamaguch | 0:0232a97b3883 | 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
yamaguch | 0:0232a97b3883 | 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
yamaguch | 0:0232a97b3883 | 20 | THE SOFTWARE. |
yamaguch | 0:0232a97b3883 | 21 | |
yamaguch | 0:0232a97b3883 | 22 | $Id: XBeeDataTypes.h,v 1.2 2012/03/14 06:31:54 yamaguchi Exp yamaguchi $ |
yamaguch | 0:0232a97b3883 | 23 | */ |
yamaguch | 0:0232a97b3883 | 24 | |
yamaguch | 0:0232a97b3883 | 25 | #ifndef XBEE_DATA_TYPES_H |
yamaguch | 0:0232a97b3883 | 26 | #define XBEE_DATA_TYPES_H |
yamaguch | 0:0232a97b3883 | 27 | |
yamaguch | 0:0232a97b3883 | 28 | #include "mbed.h" |
yamaguch | 0:0232a97b3883 | 29 | |
yamaguch | 0:0232a97b3883 | 30 | class XBeeAddress64 { |
yamaguch | 0:0232a97b3883 | 31 | public: |
yamaguch | 0:0232a97b3883 | 32 | XBeeAddress64(); |
yamaguch | 0:0232a97b3883 | 33 | XBeeAddress64(const char *address); |
yamaguch | 0:0232a97b3883 | 34 | XBeeAddress64(uint64_t address); |
yamaguch | 0:0232a97b3883 | 35 | XBeeAddress64(uint32_t high, uint32_t low); |
yamaguch | 0:0232a97b3883 | 36 | |
yamaguch | 0:0232a97b3883 | 37 | operator uint64_t(); |
yamaguch | 0:0232a97b3883 | 38 | bool operator==(XBeeAddress64& address); |
yamaguch | 0:0232a97b3883 | 39 | bool operator==(const char* address); |
yamaguch | 0:0232a97b3883 | 40 | bool operator==(uint64_t address); |
yamaguch | 0:0232a97b3883 | 41 | operator char *(); |
yamaguch | 0:0232a97b3883 | 42 | |
yamaguch | 0:0232a97b3883 | 43 | char operator [](int index) const { |
yamaguch | 0:0232a97b3883 | 44 | return address64[index]; |
yamaguch | 0:0232a97b3883 | 45 | }; |
yamaguch | 0:0232a97b3883 | 46 | |
yamaguch | 0:0232a97b3883 | 47 | char& operator [](int index) { |
yamaguch | 0:0232a97b3883 | 48 | return address64[index]; |
yamaguch | 0:0232a97b3883 | 49 | }; |
yamaguch | 0:0232a97b3883 | 50 | |
yamaguch | 0:0232a97b3883 | 51 | friend class XBee; |
yamaguch | 0:0232a97b3883 | 52 | |
yamaguch | 0:0232a97b3883 | 53 | private: |
yamaguch | 0:0232a97b3883 | 54 | char address64[8]; |
yamaguch | 0:0232a97b3883 | 55 | char buf[18]; |
yamaguch | 0:0232a97b3883 | 56 | |
yamaguch | 0:0232a97b3883 | 57 | char *raw_address() { return (char *) address64; } |
yamaguch | 0:0232a97b3883 | 58 | }; |
yamaguch | 0:0232a97b3883 | 59 | |
yamaguch | 0:0232a97b3883 | 60 | const XBeeAddress64 COORDINATOR(0, 0); |
yamaguch | 0:0232a97b3883 | 61 | const XBeeAddress64 BROADCAST(0, 0xFFFF); |
yamaguch | 0:0232a97b3883 | 62 | |
yamaguch | 0:0232a97b3883 | 63 | class XBeeAddress16 { |
yamaguch | 0:0232a97b3883 | 64 | public: |
yamaguch | 0:0232a97b3883 | 65 | XBeeAddress16(); |
yamaguch | 0:0232a97b3883 | 66 | XBeeAddress16(const char *address); |
yamaguch | 0:0232a97b3883 | 67 | XBeeAddress16(uint16_t address); |
yamaguch | 0:0232a97b3883 | 68 | XBeeAddress16(char high, char low); |
yamaguch | 0:0232a97b3883 | 69 | |
yamaguch | 0:0232a97b3883 | 70 | operator uint16_t(); |
yamaguch | 0:0232a97b3883 | 71 | bool operator==(XBeeAddress16& address); |
yamaguch | 0:0232a97b3883 | 72 | bool operator==(const char* address); |
yamaguch | 0:0232a97b3883 | 73 | bool operator==(uint16_t address); |
yamaguch | 0:0232a97b3883 | 74 | operator char *(); |
yamaguch | 0:0232a97b3883 | 75 | |
yamaguch | 0:0232a97b3883 | 76 | char operator [](int index) const { |
yamaguch | 0:0232a97b3883 | 77 | return address16[index]; |
yamaguch | 0:0232a97b3883 | 78 | }; |
yamaguch | 0:0232a97b3883 | 79 | char& operator [](int index) { |
yamaguch | 0:0232a97b3883 | 80 | return address16[index]; |
yamaguch | 0:0232a97b3883 | 81 | }; |
yamaguch | 0:0232a97b3883 | 82 | |
yamaguch | 0:0232a97b3883 | 83 | friend class XBee; |
yamaguch | 0:0232a97b3883 | 84 | |
yamaguch | 0:0232a97b3883 | 85 | private: |
yamaguch | 0:0232a97b3883 | 86 | char address16[2]; |
yamaguch | 0:0232a97b3883 | 87 | char buf[5]; |
yamaguch | 0:0232a97b3883 | 88 | |
yamaguch | 0:0232a97b3883 | 89 | char *raw_address() { return (char *) address16; } |
yamaguch | 0:0232a97b3883 | 90 | }; |
yamaguch | 0:0232a97b3883 | 91 | |
yamaguch | 0:0232a97b3883 | 92 | class XBeeData { |
yamaguch | 0:0232a97b3883 | 93 | public: |
yamaguch | 0:0232a97b3883 | 94 | XBeeData(int capacity); |
yamaguch | 0:0232a97b3883 | 95 | ~XBeeData(); |
yamaguch | 0:0232a97b3883 | 96 | |
yamaguch | 0:0232a97b3883 | 97 | int length() { |
yamaguch | 0:0232a97b3883 | 98 | return size; |
yamaguch | 0:0232a97b3883 | 99 | } |
yamaguch | 0:0232a97b3883 | 100 | |
yamaguch | 0:0232a97b3883 | 101 | operator char *() const { |
yamaguch | 0:0232a97b3883 | 102 | return data; |
yamaguch | 0:0232a97b3883 | 103 | } |
yamaguch | 0:0232a97b3883 | 104 | |
yamaguch | 0:0232a97b3883 | 105 | char operator [](int index) const { |
yamaguch | 0:0232a97b3883 | 106 | return data[index]; |
yamaguch | 0:0232a97b3883 | 107 | }; |
yamaguch | 0:0232a97b3883 | 108 | |
yamaguch | 0:0232a97b3883 | 109 | char& operator [](int index) { |
yamaguch | 0:0232a97b3883 | 110 | return data[index]; |
yamaguch | 0:0232a97b3883 | 111 | }; |
yamaguch | 0:0232a97b3883 | 112 | |
yamaguch | 0:0232a97b3883 | 113 | friend class XBee; |
yamaguch | 0:0232a97b3883 | 114 | friend class XBeeCommandData; |
yamaguch | 0:0232a97b3883 | 115 | friend class XBeeReceivedData; |
yamaguch | 0:0232a97b3883 | 116 | friend class XBeeRawData; |
yamaguch | 0:0232a97b3883 | 117 | |
yamaguch | 0:0232a97b3883 | 118 | private: |
yamaguch | 0:0232a97b3883 | 119 | char *data; |
yamaguch | 0:0232a97b3883 | 120 | int capacity; |
yamaguch | 0:0232a97b3883 | 121 | int size; |
yamaguch | 0:0232a97b3883 | 122 | |
yamaguch | 0:0232a97b3883 | 123 | char *raw_address() { return (char *) data; } |
yamaguch | 0:0232a97b3883 | 124 | }; |
yamaguch | 0:0232a97b3883 | 125 | |
yamaguch | 0:0232a97b3883 | 126 | class XBeeCommandData : public XBeeData { |
yamaguch | 0:0232a97b3883 | 127 | public: |
yamaguch | 0:0232a97b3883 | 128 | XBeeCommandData(int capacity = 20) : XBeeData(capacity) {} |
yamaguch | 0:0232a97b3883 | 129 | }; |
yamaguch | 0:0232a97b3883 | 130 | |
yamaguch | 0:0232a97b3883 | 131 | class XBeeReceivedData : public XBeeData { |
yamaguch | 0:0232a97b3883 | 132 | public: |
yamaguch | 0:0232a97b3883 | 133 | XBeeReceivedData(int capacity = 128) : XBeeData(capacity) {} |
yamaguch | 0:0232a97b3883 | 134 | }; |
yamaguch | 0:0232a97b3883 | 135 | |
yamaguch | 0:0232a97b3883 | 136 | class XBeeRawData : public XBeeData { |
yamaguch | 0:0232a97b3883 | 137 | public: |
yamaguch | 0:0232a97b3883 | 138 | XBeeRawData(int capacity = 128) : XBeeData(capacity) {} |
yamaguch | 0:0232a97b3883 | 139 | }; |
yamaguch | 0:0232a97b3883 | 140 | |
yamaguch | 0:0232a97b3883 | 141 | class XBeeATCommand : public XBeeData { |
yamaguch | 0:0232a97b3883 | 142 | public: |
yamaguch | 0:0232a97b3883 | 143 | XBeeATCommand() : XBeeData(3) {} |
yamaguch | 0:0232a97b3883 | 144 | }; |
yamaguch | 0:0232a97b3883 | 145 | |
yamaguch | 0:0232a97b3883 | 146 | class BitArray { |
yamaguch | 0:0232a97b3883 | 147 | public: |
yamaguch | 0:0232a97b3883 | 148 | BitArray(int mask, int values); |
yamaguch | 0:0232a97b3883 | 149 | int operator [](int i) const; |
yamaguch | 0:0232a97b3883 | 150 | |
yamaguch | 0:0232a97b3883 | 151 | private: |
yamaguch | 0:0232a97b3883 | 152 | int mask; |
yamaguch | 0:0232a97b3883 | 153 | int values; |
yamaguch | 0:0232a97b3883 | 154 | |
yamaguch | 0:0232a97b3883 | 155 | int valueAt(int i) const; |
yamaguch | 0:0232a97b3883 | 156 | }; |
yamaguch | 0:0232a97b3883 | 157 | |
yamaguch | 0:0232a97b3883 | 158 | class IntArray { |
yamaguch | 0:0232a97b3883 | 159 | public: |
yamaguch | 0:0232a97b3883 | 160 | IntArray(int mask, const char *value); |
yamaguch | 0:0232a97b3883 | 161 | int operator [](int i) const; |
yamaguch | 0:0232a97b3883 | 162 | |
yamaguch | 0:0232a97b3883 | 163 | private: |
yamaguch | 0:0232a97b3883 | 164 | int mask; |
yamaguch | 0:0232a97b3883 | 165 | const char *values; |
yamaguch | 0:0232a97b3883 | 166 | |
yamaguch | 0:0232a97b3883 | 167 | int valueAt(int i) const; |
yamaguch | 0:0232a97b3883 | 168 | }; |
yamaguch | 0:0232a97b3883 | 169 | |
yamaguch | 0:0232a97b3883 | 170 | class IOSample { |
yamaguch | 0:0232a97b3883 | 171 | public: |
yamaguch | 0:0232a97b3883 | 172 | IOSample(const char *data); |
yamaguch | 0:0232a97b3883 | 173 | |
yamaguch | 0:0232a97b3883 | 174 | operator char *(); |
yamaguch | 0:0232a97b3883 | 175 | |
yamaguch | 0:0232a97b3883 | 176 | BitArray dio; |
yamaguch | 0:0232a97b3883 | 177 | IntArray ad; |
yamaguch | 0:0232a97b3883 | 178 | private: |
yamaguch | 0:0232a97b3883 | 179 | char buf[128]; |
yamaguch | 0:0232a97b3883 | 180 | }; |
yamaguch | 0:0232a97b3883 | 181 | |
yamaguch | 0:0232a97b3883 | 182 | class XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 183 | public: |
yamaguch | 0:0232a97b3883 | 184 | XBeeUint8(char data = 0, char base = 10) { |
yamaguch | 0:0232a97b3883 | 185 | this->data = data; |
yamaguch | 0:0232a97b3883 | 186 | } |
yamaguch | 0:0232a97b3883 | 187 | |
yamaguch | 0:0232a97b3883 | 188 | operator int() { |
yamaguch | 0:0232a97b3883 | 189 | return data; |
yamaguch | 0:0232a97b3883 | 190 | } |
yamaguch | 0:0232a97b3883 | 191 | |
yamaguch | 0:0232a97b3883 | 192 | operator char *() { |
yamaguch | 0:0232a97b3883 | 193 | sprintf(buf, base == 10 ? "%d" : "%02X", data); |
yamaguch | 0:0232a97b3883 | 194 | return buf; |
yamaguch | 0:0232a97b3883 | 195 | } |
yamaguch | 0:0232a97b3883 | 196 | |
yamaguch | 0:0232a97b3883 | 197 | friend class XBee; |
yamaguch | 0:0232a97b3883 | 198 | friend class XBeeFrameID; |
yamaguch | 0:0232a97b3883 | 199 | friend class XBeeRetryCount; |
yamaguch | 0:0232a97b3883 | 200 | friend class XBeeStatus; |
yamaguch | 0:0232a97b3883 | 201 | friend class XBeeDeliveryStatus; |
yamaguch | 0:0232a97b3883 | 202 | friend class XBeeDiscoveryStatus; |
yamaguch | 0:0232a97b3883 | 203 | friend class XBeeReceiveOptions; |
yamaguch | 0:0232a97b3883 | 204 | |
yamaguch | 0:0232a97b3883 | 205 | private: |
yamaguch | 0:0232a97b3883 | 206 | char data; |
yamaguch | 0:0232a97b3883 | 207 | char base; |
yamaguch | 0:0232a97b3883 | 208 | char buf[4]; |
yamaguch | 0:0232a97b3883 | 209 | |
yamaguch | 0:0232a97b3883 | 210 | char *raw_address() { |
yamaguch | 0:0232a97b3883 | 211 | return &data; |
yamaguch | 0:0232a97b3883 | 212 | } |
yamaguch | 0:0232a97b3883 | 213 | }; |
yamaguch | 0:0232a97b3883 | 214 | |
yamaguch | 0:0232a97b3883 | 215 | class XBeeFrameID : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 216 | public: |
yamaguch | 0:0232a97b3883 | 217 | XBeeFrameID(char id = 0) : XBeeUint8(id) {} |
yamaguch | 0:0232a97b3883 | 218 | }; |
yamaguch | 0:0232a97b3883 | 219 | |
yamaguch | 0:0232a97b3883 | 220 | class XBeeRetryCount : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 221 | public: |
yamaguch | 0:0232a97b3883 | 222 | XBeeRetryCount(char count = 0) : XBeeUint8(count) {} |
yamaguch | 0:0232a97b3883 | 223 | }; |
yamaguch | 0:0232a97b3883 | 224 | |
yamaguch | 0:0232a97b3883 | 225 | class XBeeStatus : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 226 | public: |
yamaguch | 0:0232a97b3883 | 227 | XBeeStatus(char data = 0) : XBeeUint8(data, 16) {} |
yamaguch | 0:0232a97b3883 | 228 | }; |
yamaguch | 0:0232a97b3883 | 229 | |
yamaguch | 0:0232a97b3883 | 230 | class XBeeDeliveryStatus : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 231 | public: |
yamaguch | 0:0232a97b3883 | 232 | XBeeDeliveryStatus(char data = 0) : XBeeUint8(data, 16) {} |
yamaguch | 0:0232a97b3883 | 233 | }; |
yamaguch | 0:0232a97b3883 | 234 | |
yamaguch | 0:0232a97b3883 | 235 | class XBeeDiscoveryStatus : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 236 | public: |
yamaguch | 0:0232a97b3883 | 237 | XBeeDiscoveryStatus(char data = 0) : XBeeUint8(data, 16) {} |
yamaguch | 0:0232a97b3883 | 238 | }; |
yamaguch | 0:0232a97b3883 | 239 | |
yamaguch | 0:0232a97b3883 | 240 | class XBeeReceiveOptions : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 241 | public: |
yamaguch | 0:0232a97b3883 | 242 | XBeeReceiveOptions(char data = 0) : XBeeUint8(data, 16) {} |
yamaguch | 0:0232a97b3883 | 243 | }; |
yamaguch | 0:0232a97b3883 | 244 | |
yamaguch | 0:0232a97b3883 | 245 | #endif |