XBee API mode library

Committer:
yamaguch
Date:
Thu Jul 26 10:33:11 2012 +0000
Revision:
0:0232a97b3883
Child:
2:eea7afd6cf08
[mbed] converted /XBeeExamples/XBee

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 0:0232a97b3883 30 class XBeeAddress64 {
yamaguch 0:0232a97b3883 31 public:
yamaguch 0:0232a97b3883 32 XBeeAddress64();
yamaguch 0:0232a97b3883 33 XBeeAddress64(const char *address);
yamaguch 0:0232a97b3883 34 XBeeAddress64(uint64_t address);
yamaguch 0:0232a97b3883 35 XBeeAddress64(uint32_t high, uint32_t low);
yamaguch 0:0232a97b3883 36
yamaguch 0:0232a97b3883 37 operator uint64_t();
yamaguch 0:0232a97b3883 38 bool operator==(XBeeAddress64& address);
yamaguch 0:0232a97b3883 39 bool operator==(const char* address);
yamaguch 0:0232a97b3883 40 bool operator==(uint64_t address);
yamaguch 0:0232a97b3883 41 operator char *();
yamaguch 0:0232a97b3883 42
yamaguch 0:0232a97b3883 43 char operator [](int index) const {
yamaguch 0:0232a97b3883 44 return address64[index];
yamaguch 0:0232a97b3883 45 };
yamaguch 0:0232a97b3883 46
yamaguch 0:0232a97b3883 47 char& operator [](int index) {
yamaguch 0:0232a97b3883 48 return address64[index];
yamaguch 0:0232a97b3883 49 };
yamaguch 0:0232a97b3883 50
yamaguch 0:0232a97b3883 51 friend class XBee;
yamaguch 0:0232a97b3883 52
yamaguch 0:0232a97b3883 53 private:
yamaguch 0:0232a97b3883 54 char address64[8];
yamaguch 0:0232a97b3883 55 char buf[18];
yamaguch 0:0232a97b3883 56
yamaguch 0:0232a97b3883 57 char *raw_address() { return (char *) address64; }
yamaguch 0:0232a97b3883 58 };
yamaguch 0:0232a97b3883 59
yamaguch 0:0232a97b3883 60 const XBeeAddress64 COORDINATOR(0, 0);
yamaguch 0:0232a97b3883 61 const XBeeAddress64 BROADCAST(0, 0xFFFF);
yamaguch 0:0232a97b3883 62
yamaguch 0:0232a97b3883 63 class XBeeAddress16 {
yamaguch 0:0232a97b3883 64 public:
yamaguch 0:0232a97b3883 65 XBeeAddress16();
yamaguch 0:0232a97b3883 66 XBeeAddress16(const char *address);
yamaguch 0:0232a97b3883 67 XBeeAddress16(uint16_t address);
yamaguch 0:0232a97b3883 68 XBeeAddress16(char high, char low);
yamaguch 0:0232a97b3883 69
yamaguch 0:0232a97b3883 70 operator uint16_t();
yamaguch 0:0232a97b3883 71 bool operator==(XBeeAddress16& address);
yamaguch 0:0232a97b3883 72 bool operator==(const char* address);
yamaguch 0:0232a97b3883 73 bool operator==(uint16_t address);
yamaguch 0:0232a97b3883 74 operator char *();
yamaguch 0:0232a97b3883 75
yamaguch 0:0232a97b3883 76 char operator [](int index) const {
yamaguch 0:0232a97b3883 77 return address16[index];
yamaguch 0:0232a97b3883 78 };
yamaguch 0:0232a97b3883 79 char& operator [](int index) {
yamaguch 0:0232a97b3883 80 return address16[index];
yamaguch 0:0232a97b3883 81 };
yamaguch 0:0232a97b3883 82
yamaguch 0:0232a97b3883 83 friend class XBee;
yamaguch 0:0232a97b3883 84
yamaguch 0:0232a97b3883 85 private:
yamaguch 0:0232a97b3883 86 char address16[2];
yamaguch 0:0232a97b3883 87 char buf[5];
yamaguch 0:0232a97b3883 88
yamaguch 0:0232a97b3883 89 char *raw_address() { return (char *) address16; }
yamaguch 0:0232a97b3883 90 };
yamaguch 0:0232a97b3883 91
yamaguch 0:0232a97b3883 92 class XBeeData {
yamaguch 0:0232a97b3883 93 public:
yamaguch 0:0232a97b3883 94 XBeeData(int capacity);
yamaguch 0:0232a97b3883 95 ~XBeeData();
yamaguch 0:0232a97b3883 96
yamaguch 0:0232a97b3883 97 int length() {
yamaguch 0:0232a97b3883 98 return size;
yamaguch 0:0232a97b3883 99 }
yamaguch 0:0232a97b3883 100
yamaguch 0:0232a97b3883 101 operator char *() const {
yamaguch 0:0232a97b3883 102 return data;
yamaguch 0:0232a97b3883 103 }
yamaguch 0:0232a97b3883 104
yamaguch 0:0232a97b3883 105 char operator [](int index) const {
yamaguch 0:0232a97b3883 106 return data[index];
yamaguch 0:0232a97b3883 107 };
yamaguch 0:0232a97b3883 108
yamaguch 0:0232a97b3883 109 char& operator [](int index) {
yamaguch 0:0232a97b3883 110 return data[index];
yamaguch 0:0232a97b3883 111 };
yamaguch 0:0232a97b3883 112
yamaguch 0:0232a97b3883 113 friend class XBee;
yamaguch 0:0232a97b3883 114 friend class XBeeCommandData;
yamaguch 0:0232a97b3883 115 friend class XBeeReceivedData;
yamaguch 0:0232a97b3883 116 friend class XBeeRawData;
yamaguch 0:0232a97b3883 117
yamaguch 0:0232a97b3883 118 private:
yamaguch 0:0232a97b3883 119 char *data;
yamaguch 0:0232a97b3883 120 int capacity;
yamaguch 0:0232a97b3883 121 int size;
yamaguch 0:0232a97b3883 122
yamaguch 0:0232a97b3883 123 char *raw_address() { return (char *) data; }
yamaguch 0:0232a97b3883 124 };
yamaguch 0:0232a97b3883 125
yamaguch 0:0232a97b3883 126 class XBeeCommandData : public XBeeData {
yamaguch 0:0232a97b3883 127 public:
yamaguch 0:0232a97b3883 128 XBeeCommandData(int capacity = 20) : XBeeData(capacity) {}
yamaguch 0:0232a97b3883 129 };
yamaguch 0:0232a97b3883 130
yamaguch 0:0232a97b3883 131 class XBeeReceivedData : public XBeeData {
yamaguch 0:0232a97b3883 132 public:
yamaguch 0:0232a97b3883 133 XBeeReceivedData(int capacity = 128) : XBeeData(capacity) {}
yamaguch 0:0232a97b3883 134 };
yamaguch 0:0232a97b3883 135
yamaguch 0:0232a97b3883 136 class XBeeRawData : public XBeeData {
yamaguch 0:0232a97b3883 137 public:
yamaguch 0:0232a97b3883 138 XBeeRawData(int capacity = 128) : XBeeData(capacity) {}
yamaguch 0:0232a97b3883 139 };
yamaguch 0:0232a97b3883 140
yamaguch 0:0232a97b3883 141 class XBeeATCommand : public XBeeData {
yamaguch 0:0232a97b3883 142 public:
yamaguch 0:0232a97b3883 143 XBeeATCommand() : XBeeData(3) {}
yamaguch 0:0232a97b3883 144 };
yamaguch 0:0232a97b3883 145
yamaguch 0:0232a97b3883 146 class BitArray {
yamaguch 0:0232a97b3883 147 public:
yamaguch 0:0232a97b3883 148 BitArray(int mask, int values);
yamaguch 0:0232a97b3883 149 int operator [](int i) const;
yamaguch 0:0232a97b3883 150
yamaguch 0:0232a97b3883 151 private:
yamaguch 0:0232a97b3883 152 int mask;
yamaguch 0:0232a97b3883 153 int values;
yamaguch 0:0232a97b3883 154
yamaguch 0:0232a97b3883 155 int valueAt(int i) const;
yamaguch 0:0232a97b3883 156 };
yamaguch 0:0232a97b3883 157
yamaguch 0:0232a97b3883 158 class IntArray {
yamaguch 0:0232a97b3883 159 public:
yamaguch 0:0232a97b3883 160 IntArray(int mask, const char *value);
yamaguch 0:0232a97b3883 161 int operator [](int i) const;
yamaguch 0:0232a97b3883 162
yamaguch 0:0232a97b3883 163 private:
yamaguch 0:0232a97b3883 164 int mask;
yamaguch 0:0232a97b3883 165 const char *values;
yamaguch 0:0232a97b3883 166
yamaguch 0:0232a97b3883 167 int valueAt(int i) const;
yamaguch 0:0232a97b3883 168 };
yamaguch 0:0232a97b3883 169
yamaguch 0:0232a97b3883 170 class IOSample {
yamaguch 0:0232a97b3883 171 public:
yamaguch 0:0232a97b3883 172 IOSample(const char *data);
yamaguch 0:0232a97b3883 173
yamaguch 0:0232a97b3883 174 operator char *();
yamaguch 0:0232a97b3883 175
yamaguch 0:0232a97b3883 176 BitArray dio;
yamaguch 0:0232a97b3883 177 IntArray ad;
yamaguch 0:0232a97b3883 178 private:
yamaguch 0:0232a97b3883 179 char buf[128];
yamaguch 0:0232a97b3883 180 };
yamaguch 0:0232a97b3883 181
yamaguch 0:0232a97b3883 182 class XBeeUint8 {
yamaguch 0:0232a97b3883 183 public:
yamaguch 0:0232a97b3883 184 XBeeUint8(char data = 0, char base = 10) {
yamaguch 0:0232a97b3883 185 this->data = data;
yamaguch 0:0232a97b3883 186 }
yamaguch 0:0232a97b3883 187
yamaguch 0:0232a97b3883 188 operator int() {
yamaguch 0:0232a97b3883 189 return data;
yamaguch 0:0232a97b3883 190 }
yamaguch 0:0232a97b3883 191
yamaguch 0:0232a97b3883 192 operator char *() {
yamaguch 0:0232a97b3883 193 sprintf(buf, base == 10 ? "%d" : "%02X", data);
yamaguch 0:0232a97b3883 194 return buf;
yamaguch 0:0232a97b3883 195 }
yamaguch 0:0232a97b3883 196
yamaguch 0:0232a97b3883 197 friend class XBee;
yamaguch 0:0232a97b3883 198 friend class XBeeFrameID;
yamaguch 0:0232a97b3883 199 friend class XBeeRetryCount;
yamaguch 0:0232a97b3883 200 friend class XBeeStatus;
yamaguch 0:0232a97b3883 201 friend class XBeeDeliveryStatus;
yamaguch 0:0232a97b3883 202 friend class XBeeDiscoveryStatus;
yamaguch 0:0232a97b3883 203 friend class XBeeReceiveOptions;
yamaguch 0:0232a97b3883 204
yamaguch 0:0232a97b3883 205 private:
yamaguch 0:0232a97b3883 206 char data;
yamaguch 0:0232a97b3883 207 char base;
yamaguch 0:0232a97b3883 208 char buf[4];
yamaguch 0:0232a97b3883 209
yamaguch 0:0232a97b3883 210 char *raw_address() {
yamaguch 0:0232a97b3883 211 return &data;
yamaguch 0:0232a97b3883 212 }
yamaguch 0:0232a97b3883 213 };
yamaguch 0:0232a97b3883 214
yamaguch 0:0232a97b3883 215 class XBeeFrameID : public XBeeUint8 {
yamaguch 0:0232a97b3883 216 public:
yamaguch 0:0232a97b3883 217 XBeeFrameID(char id = 0) : XBeeUint8(id) {}
yamaguch 0:0232a97b3883 218 };
yamaguch 0:0232a97b3883 219
yamaguch 0:0232a97b3883 220 class XBeeRetryCount : public XBeeUint8 {
yamaguch 0:0232a97b3883 221 public:
yamaguch 0:0232a97b3883 222 XBeeRetryCount(char count = 0) : XBeeUint8(count) {}
yamaguch 0:0232a97b3883 223 };
yamaguch 0:0232a97b3883 224
yamaguch 0:0232a97b3883 225 class XBeeStatus : public XBeeUint8 {
yamaguch 0:0232a97b3883 226 public:
yamaguch 0:0232a97b3883 227 XBeeStatus(char data = 0) : XBeeUint8(data, 16) {}
yamaguch 0:0232a97b3883 228 };
yamaguch 0:0232a97b3883 229
yamaguch 0:0232a97b3883 230 class XBeeDeliveryStatus : public XBeeUint8 {
yamaguch 0:0232a97b3883 231 public:
yamaguch 0:0232a97b3883 232 XBeeDeliveryStatus(char data = 0) : XBeeUint8(data, 16) {}
yamaguch 0:0232a97b3883 233 };
yamaguch 0:0232a97b3883 234
yamaguch 0:0232a97b3883 235 class XBeeDiscoveryStatus : public XBeeUint8 {
yamaguch 0:0232a97b3883 236 public:
yamaguch 0:0232a97b3883 237 XBeeDiscoveryStatus(char data = 0) : XBeeUint8(data, 16) {}
yamaguch 0:0232a97b3883 238 };
yamaguch 0:0232a97b3883 239
yamaguch 0:0232a97b3883 240 class XBeeReceiveOptions : public XBeeUint8 {
yamaguch 0:0232a97b3883 241 public:
yamaguch 0:0232a97b3883 242 XBeeReceiveOptions(char data = 0) : XBeeUint8(data, 16) {}
yamaguch 0:0232a97b3883 243 };
yamaguch 0:0232a97b3883 244
yamaguch 0:0232a97b3883 245 #endif