XBee API mode library

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?

UserRevisionLine numberNew 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