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