XBee API mode library 1.0

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?

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