XBee API mode library
XBeeDataTypes.h@2:eea7afd6cf08, 2012-09-20 (annotated)
- Committer:
- yamaguch
- Date:
- Thu Sep 20 02:44:49 2012 +0000
- Revision:
- 2:eea7afd6cf08
- Parent:
- 0:0232a97b3883
- Child:
- 3:8453df14bd30
added doc comment
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 | 2:eea7afd6cf08 | 30 | /** |
yamaguch | 2:eea7afd6cf08 | 31 | * class for XBee 64-bit address data type |
yamaguch | 2:eea7afd6cf08 | 32 | */ |
yamaguch | 0:0232a97b3883 | 33 | class XBeeAddress64 { |
yamaguch | 0:0232a97b3883 | 34 | public: |
yamaguch | 0:0232a97b3883 | 35 | XBeeAddress64(); |
yamaguch | 0:0232a97b3883 | 36 | XBeeAddress64(const char *address); |
yamaguch | 0:0232a97b3883 | 37 | XBeeAddress64(uint64_t address); |
yamaguch | 0:0232a97b3883 | 38 | XBeeAddress64(uint32_t high, uint32_t low); |
yamaguch | 0:0232a97b3883 | 39 | |
yamaguch | 0:0232a97b3883 | 40 | operator uint64_t(); |
yamaguch | 2:eea7afd6cf08 | 41 | bool operator ==(XBeeAddress64& address); |
yamaguch | 2:eea7afd6cf08 | 42 | bool operator ==(const char* address); |
yamaguch | 2:eea7afd6cf08 | 43 | bool operator ==(uint64_t address); |
yamaguch | 0:0232a97b3883 | 44 | operator char *(); |
yamaguch | 0:0232a97b3883 | 45 | |
yamaguch | 0:0232a97b3883 | 46 | char operator [](int index) const { |
yamaguch | 0:0232a97b3883 | 47 | return address64[index]; |
yamaguch | 0:0232a97b3883 | 48 | }; |
yamaguch | 0:0232a97b3883 | 49 | |
yamaguch | 0:0232a97b3883 | 50 | char& operator [](int index) { |
yamaguch | 0:0232a97b3883 | 51 | return address64[index]; |
yamaguch | 0:0232a97b3883 | 52 | }; |
yamaguch | 0:0232a97b3883 | 53 | |
yamaguch | 0:0232a97b3883 | 54 | friend class XBee; |
yamaguch | 0:0232a97b3883 | 55 | |
yamaguch | 0:0232a97b3883 | 56 | private: |
yamaguch | 0:0232a97b3883 | 57 | char address64[8]; |
yamaguch | 0:0232a97b3883 | 58 | char buf[18]; |
yamaguch | 0:0232a97b3883 | 59 | |
yamaguch | 0:0232a97b3883 | 60 | char *raw_address() { return (char *) address64; } |
yamaguch | 0:0232a97b3883 | 61 | }; |
yamaguch | 0:0232a97b3883 | 62 | |
yamaguch | 0:0232a97b3883 | 63 | const XBeeAddress64 COORDINATOR(0, 0); |
yamaguch | 0:0232a97b3883 | 64 | const XBeeAddress64 BROADCAST(0, 0xFFFF); |
yamaguch | 0:0232a97b3883 | 65 | |
yamaguch | 2:eea7afd6cf08 | 66 | /** |
yamaguch | 2:eea7afd6cf08 | 67 | * class for XBee 16-bit address data type |
yamaguch | 2:eea7afd6cf08 | 68 | */ |
yamaguch | 0:0232a97b3883 | 69 | class XBeeAddress16 { |
yamaguch | 0:0232a97b3883 | 70 | public: |
yamaguch | 0:0232a97b3883 | 71 | XBeeAddress16(); |
yamaguch | 0:0232a97b3883 | 72 | XBeeAddress16(const char *address); |
yamaguch | 0:0232a97b3883 | 73 | XBeeAddress16(uint16_t address); |
yamaguch | 0:0232a97b3883 | 74 | XBeeAddress16(char high, char low); |
yamaguch | 0:0232a97b3883 | 75 | |
yamaguch | 0:0232a97b3883 | 76 | operator uint16_t(); |
yamaguch | 2:eea7afd6cf08 | 77 | bool operator ==(XBeeAddress16& address); |
yamaguch | 2:eea7afd6cf08 | 78 | bool operator ==(const char* address); |
yamaguch | 2:eea7afd6cf08 | 79 | bool operator ==(uint16_t address); |
yamaguch | 0:0232a97b3883 | 80 | operator char *(); |
yamaguch | 0:0232a97b3883 | 81 | |
yamaguch | 0:0232a97b3883 | 82 | char operator [](int index) const { |
yamaguch | 0:0232a97b3883 | 83 | return address16[index]; |
yamaguch | 0:0232a97b3883 | 84 | }; |
yamaguch | 0:0232a97b3883 | 85 | char& operator [](int index) { |
yamaguch | 0:0232a97b3883 | 86 | return address16[index]; |
yamaguch | 0:0232a97b3883 | 87 | }; |
yamaguch | 0:0232a97b3883 | 88 | |
yamaguch | 0:0232a97b3883 | 89 | friend class XBee; |
yamaguch | 0:0232a97b3883 | 90 | |
yamaguch | 0:0232a97b3883 | 91 | private: |
yamaguch | 0:0232a97b3883 | 92 | char address16[2]; |
yamaguch | 0:0232a97b3883 | 93 | char buf[5]; |
yamaguch | 0:0232a97b3883 | 94 | |
yamaguch | 0:0232a97b3883 | 95 | char *raw_address() { return (char *) address16; } |
yamaguch | 0:0232a97b3883 | 96 | }; |
yamaguch | 0:0232a97b3883 | 97 | |
yamaguch | 2:eea7afd6cf08 | 98 | /** |
yamaguch | 2:eea7afd6cf08 | 99 | * class for XBee data type |
yamaguch | 2:eea7afd6cf08 | 100 | */ |
yamaguch | 0:0232a97b3883 | 101 | class XBeeData { |
yamaguch | 0:0232a97b3883 | 102 | public: |
yamaguch | 0:0232a97b3883 | 103 | XBeeData(int capacity); |
yamaguch | 0:0232a97b3883 | 104 | ~XBeeData(); |
yamaguch | 0:0232a97b3883 | 105 | |
yamaguch | 0:0232a97b3883 | 106 | int length() { |
yamaguch | 0:0232a97b3883 | 107 | return size; |
yamaguch | 0:0232a97b3883 | 108 | } |
yamaguch | 0:0232a97b3883 | 109 | |
yamaguch | 0:0232a97b3883 | 110 | operator char *() const { |
yamaguch | 0:0232a97b3883 | 111 | return data; |
yamaguch | 0:0232a97b3883 | 112 | } |
yamaguch | 0:0232a97b3883 | 113 | |
yamaguch | 0:0232a97b3883 | 114 | char operator [](int index) const { |
yamaguch | 0:0232a97b3883 | 115 | return data[index]; |
yamaguch | 0:0232a97b3883 | 116 | }; |
yamaguch | 0:0232a97b3883 | 117 | |
yamaguch | 0:0232a97b3883 | 118 | char& operator [](int index) { |
yamaguch | 0:0232a97b3883 | 119 | return data[index]; |
yamaguch | 0:0232a97b3883 | 120 | }; |
yamaguch | 0:0232a97b3883 | 121 | |
yamaguch | 0:0232a97b3883 | 122 | friend class XBee; |
yamaguch | 0:0232a97b3883 | 123 | friend class XBeeCommandData; |
yamaguch | 0:0232a97b3883 | 124 | friend class XBeeReceivedData; |
yamaguch | 0:0232a97b3883 | 125 | friend class XBeeRawData; |
yamaguch | 0:0232a97b3883 | 126 | |
yamaguch | 0:0232a97b3883 | 127 | private: |
yamaguch | 0:0232a97b3883 | 128 | char *data; |
yamaguch | 0:0232a97b3883 | 129 | int capacity; |
yamaguch | 0:0232a97b3883 | 130 | int size; |
yamaguch | 0:0232a97b3883 | 131 | |
yamaguch | 0:0232a97b3883 | 132 | char *raw_address() { return (char *) data; } |
yamaguch | 0:0232a97b3883 | 133 | }; |
yamaguch | 0:0232a97b3883 | 134 | |
yamaguch | 2:eea7afd6cf08 | 135 | /** |
yamaguch | 2:eea7afd6cf08 | 136 | * class for XBee command data type |
yamaguch | 2:eea7afd6cf08 | 137 | */ |
yamaguch | 0:0232a97b3883 | 138 | class XBeeCommandData : public XBeeData { |
yamaguch | 0:0232a97b3883 | 139 | public: |
yamaguch | 0:0232a97b3883 | 140 | XBeeCommandData(int capacity = 20) : XBeeData(capacity) {} |
yamaguch | 0:0232a97b3883 | 141 | }; |
yamaguch | 0:0232a97b3883 | 142 | |
yamaguch | 2:eea7afd6cf08 | 143 | /** |
yamaguch | 2:eea7afd6cf08 | 144 | * class for XBee received data type |
yamaguch | 2:eea7afd6cf08 | 145 | */ |
yamaguch | 0:0232a97b3883 | 146 | class XBeeReceivedData : public XBeeData { |
yamaguch | 0:0232a97b3883 | 147 | public: |
yamaguch | 0:0232a97b3883 | 148 | XBeeReceivedData(int capacity = 128) : XBeeData(capacity) {} |
yamaguch | 0:0232a97b3883 | 149 | }; |
yamaguch | 0:0232a97b3883 | 150 | |
yamaguch | 2:eea7afd6cf08 | 151 | /** |
yamaguch | 2:eea7afd6cf08 | 152 | * class for XBee raw data type |
yamaguch | 2:eea7afd6cf08 | 153 | */ |
yamaguch | 0:0232a97b3883 | 154 | class XBeeRawData : public XBeeData { |
yamaguch | 0:0232a97b3883 | 155 | public: |
yamaguch | 0:0232a97b3883 | 156 | XBeeRawData(int capacity = 128) : XBeeData(capacity) {} |
yamaguch | 0:0232a97b3883 | 157 | }; |
yamaguch | 0:0232a97b3883 | 158 | |
yamaguch | 2:eea7afd6cf08 | 159 | /** |
yamaguch | 2:eea7afd6cf08 | 160 | * class for XBee AT command data type |
yamaguch | 2:eea7afd6cf08 | 161 | */ |
yamaguch | 0:0232a97b3883 | 162 | class XBeeATCommand : public XBeeData { |
yamaguch | 0:0232a97b3883 | 163 | public: |
yamaguch | 0:0232a97b3883 | 164 | XBeeATCommand() : XBeeData(3) {} |
yamaguch | 0:0232a97b3883 | 165 | }; |
yamaguch | 0:0232a97b3883 | 166 | |
yamaguch | 2:eea7afd6cf08 | 167 | /** |
yamaguch | 2:eea7afd6cf08 | 168 | * class for bit array data type |
yamaguch | 2:eea7afd6cf08 | 169 | */ |
yamaguch | 0:0232a97b3883 | 170 | class BitArray { |
yamaguch | 0:0232a97b3883 | 171 | public: |
yamaguch | 0:0232a97b3883 | 172 | BitArray(int mask, int values); |
yamaguch | 0:0232a97b3883 | 173 | int operator [](int i) const; |
yamaguch | 0:0232a97b3883 | 174 | |
yamaguch | 0:0232a97b3883 | 175 | private: |
yamaguch | 0:0232a97b3883 | 176 | int mask; |
yamaguch | 0:0232a97b3883 | 177 | int values; |
yamaguch | 0:0232a97b3883 | 178 | |
yamaguch | 0:0232a97b3883 | 179 | int valueAt(int i) const; |
yamaguch | 0:0232a97b3883 | 180 | }; |
yamaguch | 0:0232a97b3883 | 181 | |
yamaguch | 2:eea7afd6cf08 | 182 | /** |
yamaguch | 2:eea7afd6cf08 | 183 | * class for int array data type |
yamaguch | 2:eea7afd6cf08 | 184 | */ |
yamaguch | 0:0232a97b3883 | 185 | class IntArray { |
yamaguch | 0:0232a97b3883 | 186 | public: |
yamaguch | 0:0232a97b3883 | 187 | IntArray(int mask, const char *value); |
yamaguch | 0:0232a97b3883 | 188 | int operator [](int i) const; |
yamaguch | 0:0232a97b3883 | 189 | |
yamaguch | 0:0232a97b3883 | 190 | private: |
yamaguch | 0:0232a97b3883 | 191 | int mask; |
yamaguch | 0:0232a97b3883 | 192 | const char *values; |
yamaguch | 0:0232a97b3883 | 193 | |
yamaguch | 0:0232a97b3883 | 194 | int valueAt(int i) const; |
yamaguch | 0:0232a97b3883 | 195 | }; |
yamaguch | 0:0232a97b3883 | 196 | |
yamaguch | 2:eea7afd6cf08 | 197 | /** |
yamaguch | 2:eea7afd6cf08 | 198 | * class for IOSample data type |
yamaguch | 2:eea7afd6cf08 | 199 | */ |
yamaguch | 0:0232a97b3883 | 200 | class IOSample { |
yamaguch | 0:0232a97b3883 | 201 | public: |
yamaguch | 0:0232a97b3883 | 202 | IOSample(const char *data); |
yamaguch | 0:0232a97b3883 | 203 | |
yamaguch | 0:0232a97b3883 | 204 | operator char *(); |
yamaguch | 0:0232a97b3883 | 205 | |
yamaguch | 0:0232a97b3883 | 206 | BitArray dio; |
yamaguch | 0:0232a97b3883 | 207 | IntArray ad; |
yamaguch | 0:0232a97b3883 | 208 | private: |
yamaguch | 0:0232a97b3883 | 209 | char buf[128]; |
yamaguch | 0:0232a97b3883 | 210 | }; |
yamaguch | 0:0232a97b3883 | 211 | |
yamaguch | 2:eea7afd6cf08 | 212 | /** |
yamaguch | 2:eea7afd6cf08 | 213 | * class for uint8 data type |
yamaguch | 2:eea7afd6cf08 | 214 | */ |
yamaguch | 0:0232a97b3883 | 215 | class XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 216 | public: |
yamaguch | 0:0232a97b3883 | 217 | XBeeUint8(char data = 0, char base = 10) { |
yamaguch | 0:0232a97b3883 | 218 | this->data = data; |
yamaguch | 0:0232a97b3883 | 219 | } |
yamaguch | 0:0232a97b3883 | 220 | |
yamaguch | 0:0232a97b3883 | 221 | operator int() { |
yamaguch | 0:0232a97b3883 | 222 | return data; |
yamaguch | 0:0232a97b3883 | 223 | } |
yamaguch | 0:0232a97b3883 | 224 | |
yamaguch | 0:0232a97b3883 | 225 | operator char *() { |
yamaguch | 0:0232a97b3883 | 226 | sprintf(buf, base == 10 ? "%d" : "%02X", data); |
yamaguch | 0:0232a97b3883 | 227 | return buf; |
yamaguch | 0:0232a97b3883 | 228 | } |
yamaguch | 0:0232a97b3883 | 229 | |
yamaguch | 0:0232a97b3883 | 230 | friend class XBee; |
yamaguch | 0:0232a97b3883 | 231 | friend class XBeeFrameID; |
yamaguch | 0:0232a97b3883 | 232 | friend class XBeeRetryCount; |
yamaguch | 0:0232a97b3883 | 233 | friend class XBeeStatus; |
yamaguch | 0:0232a97b3883 | 234 | friend class XBeeDeliveryStatus; |
yamaguch | 0:0232a97b3883 | 235 | friend class XBeeDiscoveryStatus; |
yamaguch | 0:0232a97b3883 | 236 | friend class XBeeReceiveOptions; |
yamaguch | 0:0232a97b3883 | 237 | |
yamaguch | 0:0232a97b3883 | 238 | private: |
yamaguch | 0:0232a97b3883 | 239 | char data; |
yamaguch | 0:0232a97b3883 | 240 | char base; |
yamaguch | 0:0232a97b3883 | 241 | char buf[4]; |
yamaguch | 0:0232a97b3883 | 242 | |
yamaguch | 0:0232a97b3883 | 243 | char *raw_address() { |
yamaguch | 0:0232a97b3883 | 244 | return &data; |
yamaguch | 0:0232a97b3883 | 245 | } |
yamaguch | 0:0232a97b3883 | 246 | }; |
yamaguch | 0:0232a97b3883 | 247 | |
yamaguch | 2:eea7afd6cf08 | 248 | /** |
yamaguch | 2:eea7afd6cf08 | 249 | * class for XBee frame ID data type |
yamaguch | 2:eea7afd6cf08 | 250 | */ |
yamaguch | 0:0232a97b3883 | 251 | class XBeeFrameID : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 252 | public: |
yamaguch | 0:0232a97b3883 | 253 | XBeeFrameID(char id = 0) : XBeeUint8(id) {} |
yamaguch | 0:0232a97b3883 | 254 | }; |
yamaguch | 0:0232a97b3883 | 255 | |
yamaguch | 2:eea7afd6cf08 | 256 | /** |
yamaguch | 2:eea7afd6cf08 | 257 | * class for XBee retry count data type |
yamaguch | 2:eea7afd6cf08 | 258 | */ |
yamaguch | 0:0232a97b3883 | 259 | class XBeeRetryCount : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 260 | public: |
yamaguch | 0:0232a97b3883 | 261 | XBeeRetryCount(char count = 0) : XBeeUint8(count) {} |
yamaguch | 0:0232a97b3883 | 262 | }; |
yamaguch | 0:0232a97b3883 | 263 | |
yamaguch | 2:eea7afd6cf08 | 264 | /** |
yamaguch | 2:eea7afd6cf08 | 265 | * class for XBee status data type |
yamaguch | 2:eea7afd6cf08 | 266 | */ |
yamaguch | 0:0232a97b3883 | 267 | class XBeeStatus : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 268 | public: |
yamaguch | 0:0232a97b3883 | 269 | XBeeStatus(char data = 0) : XBeeUint8(data, 16) {} |
yamaguch | 0:0232a97b3883 | 270 | }; |
yamaguch | 0:0232a97b3883 | 271 | |
yamaguch | 2:eea7afd6cf08 | 272 | /** |
yamaguch | 2:eea7afd6cf08 | 273 | * class for XBee delivery status data type |
yamaguch | 2:eea7afd6cf08 | 274 | */ |
yamaguch | 0:0232a97b3883 | 275 | class XBeeDeliveryStatus : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 276 | public: |
yamaguch | 0:0232a97b3883 | 277 | XBeeDeliveryStatus(char data = 0) : XBeeUint8(data, 16) {} |
yamaguch | 0:0232a97b3883 | 278 | }; |
yamaguch | 0:0232a97b3883 | 279 | |
yamaguch | 2:eea7afd6cf08 | 280 | /** |
yamaguch | 2:eea7afd6cf08 | 281 | * class for XBee discovery status data type |
yamaguch | 2:eea7afd6cf08 | 282 | */ |
yamaguch | 0:0232a97b3883 | 283 | class XBeeDiscoveryStatus : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 284 | public: |
yamaguch | 0:0232a97b3883 | 285 | XBeeDiscoveryStatus(char data = 0) : XBeeUint8(data, 16) {} |
yamaguch | 0:0232a97b3883 | 286 | }; |
yamaguch | 0:0232a97b3883 | 287 | |
yamaguch | 2:eea7afd6cf08 | 288 | /** |
yamaguch | 2:eea7afd6cf08 | 289 | * class for XBee receive status data type |
yamaguch | 2:eea7afd6cf08 | 290 | */ |
yamaguch | 0:0232a97b3883 | 291 | class XBeeReceiveOptions : public XBeeUint8 { |
yamaguch | 0:0232a97b3883 | 292 | public: |
yamaguch | 0:0232a97b3883 | 293 | XBeeReceiveOptions(char data = 0) : XBeeUint8(data, 16) {} |
yamaguch | 0:0232a97b3883 | 294 | }; |
yamaguch | 0:0232a97b3883 | 295 | |
yamaguch | 0:0232a97b3883 | 296 | #endif |