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