test
XBee.h@19:c7a9d77d9617, 2011-11-16 (annotated)
- Committer:
- yamaguch
- Date:
- Wed Nov 16 03:28:00 2011 +0000
- Revision:
- 19:c7a9d77d9617
- Parent:
- 18:265de0e55068
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yamaguch | 9:48a9f99e2cfd | 1 | /* |
yamaguch | 9:48a9f99e2cfd | 2 | Copyright (c) 2011, Senio Networks, Inc. |
yamaguch | 9:48a9f99e2cfd | 3 | |
yamaguch | 9:48a9f99e2cfd | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy |
yamaguch | 9:48a9f99e2cfd | 5 | of this software and associated documentation files (the "Software"), to deal |
yamaguch | 9:48a9f99e2cfd | 6 | in the Software without restriction, including without limitation the rights |
yamaguch | 9:48a9f99e2cfd | 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
yamaguch | 9:48a9f99e2cfd | 8 | copies of the Software, and to permit persons to whom the Software is |
yamaguch | 9:48a9f99e2cfd | 9 | furnished to do so, subject to the following conditions: |
yamaguch | 9:48a9f99e2cfd | 10 | |
yamaguch | 9:48a9f99e2cfd | 11 | The above copyright notice and this permission notice shall be included in |
yamaguch | 9:48a9f99e2cfd | 12 | all copies or substantial portions of the Software. |
yamaguch | 9:48a9f99e2cfd | 13 | |
yamaguch | 9:48a9f99e2cfd | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
yamaguch | 9:48a9f99e2cfd | 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
yamaguch | 9:48a9f99e2cfd | 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
yamaguch | 9:48a9f99e2cfd | 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
yamaguch | 9:48a9f99e2cfd | 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
yamaguch | 9:48a9f99e2cfd | 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
yamaguch | 9:48a9f99e2cfd | 20 | THE SOFTWARE. |
yamaguch | 9:48a9f99e2cfd | 21 | */ |
yamaguch | 9:48a9f99e2cfd | 22 | |
yamaguch | 9:48a9f99e2cfd | 23 | #ifndef XBEE_H |
yamaguch | 9:48a9f99e2cfd | 24 | #define XBEE_H |
yamaguch | 9:48a9f99e2cfd | 25 | |
yamaguch | 9:48a9f99e2cfd | 26 | #include "mbed.h" |
yamaguch | 9:48a9f99e2cfd | 27 | #include "IOSample.h" |
yamaguch | 9:48a9f99e2cfd | 28 | |
yamaguch | 9:48a9f99e2cfd | 29 | const int BUFSIZE = 512; |
yamaguch | 9:48a9f99e2cfd | 30 | const char ESCAPE = 0x7D; |
yamaguch | 9:48a9f99e2cfd | 31 | const char PREAMBLE = 0x7E; |
yamaguch | 9:48a9f99e2cfd | 32 | |
yamaguch | 9:48a9f99e2cfd | 33 | /** |
yamaguch | 9:48a9f99e2cfd | 34 | * class for XBee module API mode interface |
yamaguch | 9:48a9f99e2cfd | 35 | */ |
yamaguch | 9:48a9f99e2cfd | 36 | class XBee : public Serial { |
yamaguch | 9:48a9f99e2cfd | 37 | public: |
yamaguch | 19:c7a9d77d9617 | 38 | /** |
yamaguch | 19:c7a9d77d9617 | 39 | * Frame type enumeration for XBee API frames |
yamaguch | 19:c7a9d77d9617 | 40 | */ |
yamaguch | 9:48a9f99e2cfd | 41 | enum FrameType { |
yamaguch | 13:f99f407ed83c | 42 | /** |
yamaguch | 19:c7a9d77d9617 | 43 | * Empty data |
yamaguch | 13:f99f407ed83c | 44 | */ |
yamaguch | 9:48a9f99e2cfd | 45 | None = 0, |
yamaguch | 19:c7a9d77d9617 | 46 | |
yamaguch | 11:88f50cc32d7e | 47 | /** |
yamaguch | 19:c7a9d77d9617 | 48 | * AT Command Response API frame |
yamaguch | 11:88f50cc32d7e | 49 | */ |
yamaguch | 9:48a9f99e2cfd | 50 | ATCommandResponse, |
yamaguch | 19:c7a9d77d9617 | 51 | |
yamaguch | 11:88f50cc32d7e | 52 | /** |
yamaguch | 19:c7a9d77d9617 | 53 | * Modem Status API frame |
yamaguch | 11:88f50cc32d7e | 54 | */ |
yamaguch | 9:48a9f99e2cfd | 55 | ModemStatus, |
yamaguch | 19:c7a9d77d9617 | 56 | |
yamaguch | 19:c7a9d77d9617 | 57 | /** |
yamaguch | 19:c7a9d77d9617 | 58 | * ZigBee Transmit Status API frame |
yamaguch | 19:c7a9d77d9617 | 59 | */ |
yamaguch | 9:48a9f99e2cfd | 60 | ZigBeeTransmitStatus, |
yamaguch | 19:c7a9d77d9617 | 61 | |
yamaguch | 13:f99f407ed83c | 62 | |
yamaguch | 19:c7a9d77d9617 | 63 | /** |
yamaguch | 19:c7a9d77d9617 | 64 | * ZigBee Receive Packet API frame |
yamaguch | 19:c7a9d77d9617 | 65 | */ |
yamaguch | 9:48a9f99e2cfd | 66 | ZigBeeReceivePacket, |
yamaguch | 13:f99f407ed83c | 67 | |
yamaguch | 11:88f50cc32d7e | 68 | /** |
yamaguch | 19:c7a9d77d9617 | 69 | * ZigBee Explicit Rx Indicator API frame |
yamaguch | 11:88f50cc32d7e | 70 | */ |
yamaguch | 9:48a9f99e2cfd | 71 | ZigBeeExplicitRxIndicator, |
yamaguch | 13:f99f407ed83c | 72 | |
yamaguch | 11:88f50cc32d7e | 73 | /** |
yamaguch | 19:c7a9d77d9617 | 74 | * ZigBee I/O Data Sample Rx Indicator API frame |
yamaguch | 11:88f50cc32d7e | 75 | */ |
yamaguch | 9:48a9f99e2cfd | 76 | ZigBeeIODataSampleRxIndicator, |
yamaguch | 13:f99f407ed83c | 77 | |
yamaguch | 11:88f50cc32d7e | 78 | /** |
yamaguch | 19:c7a9d77d9617 | 79 | * XBee Sensor Read Indicator API frame |
yamaguch | 11:88f50cc32d7e | 80 | */ |
yamaguch | 9:48a9f99e2cfd | 81 | XBeeSensorReadIndicator, |
yamaguch | 10:56b31a94f98e | 82 | |
yamaguch | 11:88f50cc32d7e | 83 | /** |
yamaguch | 19:c7a9d77d9617 | 84 | * Node Identification Indicator API frame |
yamaguch | 11:88f50cc32d7e | 85 | */ |
yamaguch | 9:48a9f99e2cfd | 86 | NodeIdentificationIndicator, |
yamaguch | 13:f99f407ed83c | 87 | |
yamaguch | 11:88f50cc32d7e | 88 | /** |
yamaguch | 19:c7a9d77d9617 | 89 | * Remote Command Response API frame |
yamaguch | 11:88f50cc32d7e | 90 | */ |
yamaguch | 9:48a9f99e2cfd | 91 | RemoteCommandResponse, |
yamaguch | 13:f99f407ed83c | 92 | |
yamaguch | 11:88f50cc32d7e | 93 | /** |
yamaguch | 19:c7a9d77d9617 | 94 | * Unknown API frame |
yamaguch | 19:c7a9d77d9617 | 95 | */ |
yamaguch | 9:48a9f99e2cfd | 96 | Other |
yamaguch | 9:48a9f99e2cfd | 97 | }; |
yamaguch | 18:265de0e55068 | 98 | |
yamaguch | 10:56b31a94f98e | 99 | /** |
yamaguch | 19:c7a9d77d9617 | 100 | * Value type enumeration for frame data contents |
yamaguch | 19:c7a9d77d9617 | 101 | */ |
yamaguch | 9:48a9f99e2cfd | 102 | enum ValueType { |
yamaguch | 19:c7a9d77d9617 | 103 | |
yamaguch | 18:265de0e55068 | 104 | /** |
yamaguch | 19:c7a9d77d9617 | 105 | * Frame ID |
yamaguch | 19:c7a9d77d9617 | 106 | */ |
yamaguch | 9:48a9f99e2cfd | 107 | FrameID, |
yamaguch | 19:c7a9d77d9617 | 108 | |
yamaguch | 19:c7a9d77d9617 | 109 | /** |
yamaguch | 19:c7a9d77d9617 | 110 | *AT command name |
yamaguch | 19:c7a9d77d9617 | 111 | */ |
yamaguch | 9:48a9f99e2cfd | 112 | ATCommand, |
yamaguch | 19:c7a9d77d9617 | 113 | |
yamaguch | 19:c7a9d77d9617 | 114 | /** |
yamaguch | 19:c7a9d77d9617 | 115 | * Status |
yamaguch | 19:c7a9d77d9617 | 116 | */ |
yamaguch | 9:48a9f99e2cfd | 117 | Status, |
yamaguch | 19:c7a9d77d9617 | 118 | |
yamaguch | 19:c7a9d77d9617 | 119 | /** |
yamaguch | 19:c7a9d77d9617 | 120 | * Command data |
yamaguch | 19:c7a9d77d9617 | 121 | */ |
yamaguch | 9:48a9f99e2cfd | 122 | CommandData, |
yamaguch | 19:c7a9d77d9617 | 123 | |
yamaguch | 19:c7a9d77d9617 | 124 | /** |
yamaguch | 19:c7a9d77d9617 | 125 | * 16 bit address |
yamaguch | 19:c7a9d77d9617 | 126 | */ |
yamaguch | 9:48a9f99e2cfd | 127 | Address16, |
yamaguch | 19:c7a9d77d9617 | 128 | |
yamaguch | 19:c7a9d77d9617 | 129 | /** |
yamaguch | 19:c7a9d77d9617 | 130 | * 64 bit address |
yamaguch | 19:c7a9d77d9617 | 131 | */ |
yamaguch | 9:48a9f99e2cfd | 132 | Address64, |
yamaguch | 19:c7a9d77d9617 | 133 | |
yamaguch | 19:c7a9d77d9617 | 134 | /** |
yamaguch | 19:c7a9d77d9617 | 135 | * Retry count |
yamaguch | 19:c7a9d77d9617 | 136 | */ |
yamaguch | 9:48a9f99e2cfd | 137 | RetryCount, |
yamaguch | 19:c7a9d77d9617 | 138 | |
yamaguch | 19:c7a9d77d9617 | 139 | /** |
yamaguch | 19:c7a9d77d9617 | 140 | * Delivery status |
yamaguch | 19:c7a9d77d9617 | 141 | */ |
yamaguch | 9:48a9f99e2cfd | 142 | DeliveryStatus, |
yamaguch | 19:c7a9d77d9617 | 143 | |
yamaguch | 19:c7a9d77d9617 | 144 | /** |
yamaguch | 19:c7a9d77d9617 | 145 | * Discovery status |
yamaguch | 19:c7a9d77d9617 | 146 | */ |
yamaguch | 9:48a9f99e2cfd | 147 | DiscoveryStatus, |
yamaguch | 19:c7a9d77d9617 | 148 | |
yamaguch | 19:c7a9d77d9617 | 149 | /** |
yamaguch | 19:c7a9d77d9617 | 150 | * Receive option |
yamaguch | 19:c7a9d77d9617 | 151 | */ |
yamaguch | 9:48a9f99e2cfd | 152 | ReceiveOptions, |
yamaguch | 19:c7a9d77d9617 | 153 | |
yamaguch | 19:c7a9d77d9617 | 154 | /** |
yamaguch | 19:c7a9d77d9617 | 155 | * Received data |
yamaguch | 19:c7a9d77d9617 | 156 | */ |
yamaguch | 9:48a9f99e2cfd | 157 | ReceivedData, |
yamaguch | 19:c7a9d77d9617 | 158 | |
yamaguch | 19:c7a9d77d9617 | 159 | /** |
yamaguch | 19:c7a9d77d9617 | 160 | * Raw data |
yamaguch | 19:c7a9d77d9617 | 161 | */ |
yamaguch | 9:48a9f99e2cfd | 162 | RawData |
yamaguch | 9:48a9f99e2cfd | 163 | }; |
yamaguch | 9:48a9f99e2cfd | 164 | |
yamaguch | 9:48a9f99e2cfd | 165 | /** |
yamaguch | 9:48a9f99e2cfd | 166 | * creates an XBee interface object. |
yamaguch | 9:48a9f99e2cfd | 167 | * |
yamaguch | 9:48a9f99e2cfd | 168 | * @param ser Serial object through which XBee module is connected to mbed |
yamaguch | 9:48a9f99e2cfd | 169 | * @param apiMode API mode either 1 or 2 (use escape; default) |
yamaguch | 9:48a9f99e2cfd | 170 | * @param debug display debugging (I/O state) information through LEDs |
yamaguch | 9:48a9f99e2cfd | 171 | */ |
yamaguch | 9:48a9f99e2cfd | 172 | XBee(Serial& ser, int apiMode = 2, bool debug = false); |
yamaguch | 9:48a9f99e2cfd | 173 | |
yamaguch | 9:48a9f99e2cfd | 174 | /** |
yamaguch | 9:48a9f99e2cfd | 175 | * creates an XBee interface object. |
yamaguch | 9:48a9f99e2cfd | 176 | * |
yamaguch | 9:48a9f99e2cfd | 177 | * @param ser Serial object through which XBee module is connected to mbed |
yamaguch | 9:48a9f99e2cfd | 178 | * @param mon alternate Serial object for monitoring (use serial ports other than USBTX/USBRX) |
yamaguch | 9:48a9f99e2cfd | 179 | * @param apiMode API mode either 1 or 2 (use escape; default) |
yamaguch | 9:48a9f99e2cfd | 180 | * @param debug display debugging (I/O state) information through LEDs |
yamaguch | 9:48a9f99e2cfd | 181 | */ |
yamaguch | 9:48a9f99e2cfd | 182 | XBee(Serial& ser, Serial& mon, int apiMode = 2, bool debug = false); |
yamaguch | 9:48a9f99e2cfd | 183 | |
yamaguch | 9:48a9f99e2cfd | 184 | /** |
yamaguch | 9:48a9f99e2cfd | 185 | * initializes XBee module. |
yamaguch | 9:48a9f99e2cfd | 186 | * |
yamaguch | 9:48a9f99e2cfd | 187 | * issues VR command to test XBee modem connection |
yamaguch | 9:48a9f99e2cfd | 188 | * |
yamaguch | 9:48a9f99e2cfd | 189 | * @returns true if initialization succeeded, false otherwise |
yamaguch | 9:48a9f99e2cfd | 190 | */ |
yamaguch | 9:48a9f99e2cfd | 191 | bool init(float timeout = 15.0); |
yamaguch | 9:48a9f99e2cfd | 192 | |
yamaguch | 9:48a9f99e2cfd | 193 | /** |
yamaguch | 9:48a9f99e2cfd | 194 | * sets destination addresses. |
yamaguch | 9:48a9f99e2cfd | 195 | * |
yamaguch | 9:48a9f99e2cfd | 196 | * @param address64 64-bit destination address in unsigned long long |
yamaguch | 9:48a9f99e2cfd | 197 | * @param address16 16-bit destination address in unsigned short |
yamaguch | 9:48a9f99e2cfd | 198 | */ |
yamaguch | 9:48a9f99e2cfd | 199 | void setDestination(unsigned long long address64, unsigned short address16 = 0xFFFE); |
yamaguch | 9:48a9f99e2cfd | 200 | |
yamaguch | 9:48a9f99e2cfd | 201 | /** |
yamaguch | 9:48a9f99e2cfd | 202 | * sets destination addresses. |
yamaguch | 9:48a9f99e2cfd | 203 | * |
yamaguch | 9:48a9f99e2cfd | 204 | * @param address64 64-bit destination address in bytes (big endian) |
yamaguch | 9:48a9f99e2cfd | 205 | * @param address16 16-bit destination address in bytes |
yamaguch | 9:48a9f99e2cfd | 206 | */ |
yamaguch | 9:48a9f99e2cfd | 207 | void setDestination(char address64[], char address16[]); |
yamaguch | 9:48a9f99e2cfd | 208 | |
yamaguch | 9:48a9f99e2cfd | 209 | /** |
yamaguch | 9:48a9f99e2cfd | 210 | * sets 64-bit destination address. |
yamaguch | 9:48a9f99e2cfd | 211 | * |
yamaguch | 9:48a9f99e2cfd | 212 | * this function is used when 16-bit address is unknown |
yamaguch | 9:48a9f99e2cfd | 213 | * @param address64 64-bit destination address in bytes (big endian) |
yamaguch | 9:48a9f99e2cfd | 214 | */ |
yamaguch | 9:48a9f99e2cfd | 215 | void setDestination(char address64[]); |
yamaguch | 9:48a9f99e2cfd | 216 | |
yamaguch | 9:48a9f99e2cfd | 217 | /** |
yamaguch | 9:48a9f99e2cfd | 218 | * sends an AT command. |
yamaguch | 9:48a9f99e2cfd | 219 | * |
yamaguch | 9:48a9f99e2cfd | 220 | * @param command AT command char string |
yamaguch | 9:48a9f99e2cfd | 221 | * @param param parameter to the AT command (pointer to byte array) |
yamaguch | 9:48a9f99e2cfd | 222 | * @param param_length parameter length in bytes |
yamaguch | 9:48a9f99e2cfd | 223 | * @param queue true if command paramter is to be queued |
yamaguch | 9:48a9f99e2cfd | 224 | */ |
yamaguch | 9:48a9f99e2cfd | 225 | void sendCommand(char* command, char* param = 0, int param_length = 0, bool queue = false); |
yamaguch | 9:48a9f99e2cfd | 226 | |
yamaguch | 9:48a9f99e2cfd | 227 | /** |
yamaguch | 9:48a9f99e2cfd | 228 | * sends a remote AT command. |
yamaguch | 9:48a9f99e2cfd | 229 | * |
yamaguch | 9:48a9f99e2cfd | 230 | * sends an AT command to the XBee(s) at the destination address |
yamaguch | 9:48a9f99e2cfd | 231 | * |
yamaguch | 9:48a9f99e2cfd | 232 | * @param command AT command char string |
yamaguch | 9:48a9f99e2cfd | 233 | * @param param parameter to the AT command (pointer to byte array) |
yamaguch | 9:48a9f99e2cfd | 234 | * @param param_length parameter length in bytes |
yamaguch | 9:48a9f99e2cfd | 235 | * @param options remote command options |
yamaguch | 9:48a9f99e2cfd | 236 | */ |
yamaguch | 9:48a9f99e2cfd | 237 | void sendRemoteCommand(char* command, char* param = 0, int param_length = 0, char options = 0x02); |
yamaguch | 9:48a9f99e2cfd | 238 | |
yamaguch | 9:48a9f99e2cfd | 239 | |
yamaguch | 9:48a9f99e2cfd | 240 | /** |
yamaguch | 9:48a9f99e2cfd | 241 | * executes an AT command then gets its result. |
yamaguch | 9:48a9f99e2cfd | 242 | * |
yamaguch | 9:48a9f99e2cfd | 243 | * @param command AT command char string |
yamaguch | 9:48a9f99e2cfd | 244 | * @param param parameter to the AT command (pointer to byte array) |
yamaguch | 9:48a9f99e2cfd | 245 | * @param param_length parameter length in bytes |
yamaguch | 9:48a9f99e2cfd | 246 | * |
yamaguch | 9:48a9f99e2cfd | 247 | * @returns pointer to the command result, if the result is a number (char, short, long, long long), |
yamaguch | 9:48a9f99e2cfd | 248 | * the address to the number will be returned; otherwise the address to the byte array |
yamaguch | 9:48a9f99e2cfd | 249 | * containing the command response will be returned. |
yamaguch | 9:48a9f99e2cfd | 250 | */ |
yamaguch | 9:48a9f99e2cfd | 251 | void *executeCommand(char *command, char* param = 0, int laram_length = 0); |
yamaguch | 9:48a9f99e2cfd | 252 | |
yamaguch | 9:48a9f99e2cfd | 253 | /** |
yamaguch | 9:48a9f99e2cfd | 254 | * sends data to the XBee(s) at the destination address. |
yamaguch | 9:48a9f99e2cfd | 255 | * |
yamaguch | 9:48a9f99e2cfd | 256 | * @param data address to the data (byte array) |
yamaguch | 9:48a9f99e2cfd | 257 | * @param length data length in bytes |
yamaguch | 9:48a9f99e2cfd | 258 | */ |
yamaguch | 9:48a9f99e2cfd | 259 | void send(char *data, int length); |
yamaguch | 9:48a9f99e2cfd | 260 | |
yamaguch | 9:48a9f99e2cfd | 261 | /** |
yamaguch | 9:48a9f99e2cfd | 262 | * sends data and confirm the transmit status. |
yamaguch | 9:48a9f99e2cfd | 263 | * |
yamaguch | 9:48a9f99e2cfd | 264 | * @param data address to the data (byte array) |
yamaguch | 9:48a9f99e2cfd | 265 | * @param length data length in bytes |
yamaguch | 9:48a9f99e2cfd | 266 | * |
yamaguch | 9:48a9f99e2cfd | 267 | * @returns true if sent successfully, false otherwise (either timeout or send error occurred) |
yamaguch | 9:48a9f99e2cfd | 268 | */ |
yamaguch | 9:48a9f99e2cfd | 269 | bool sendConfirm(char *data, int length); |
yamaguch | 9:48a9f99e2cfd | 270 | |
yamaguch | 9:48a9f99e2cfd | 271 | /** |
yamaguch | 9:48a9f99e2cfd | 272 | * sends data to the destination using printf format. |
yamaguch | 9:48a9f99e2cfd | 273 | * |
yamaguch | 9:48a9f99e2cfd | 274 | * @param format printf format string, followed by corresponding arguments |
yamaguch | 9:48a9f99e2cfd | 275 | * |
yamaguch | 9:48a9f99e2cfd | 276 | * @returns the number of charancters sent, or negative if error occurred |
yamaguch | 9:48a9f99e2cfd | 277 | */ |
yamaguch | 9:48a9f99e2cfd | 278 | int printf(const char *format, ...); |
yamaguch | 9:48a9f99e2cfd | 279 | |
yamaguch | 9:48a9f99e2cfd | 280 | /** |
yamaguch | 9:48a9f99e2cfd | 281 | * receives data frame from the XBee module. |
yamaguch | 9:48a9f99e2cfd | 282 | * |
yamaguch | 9:48a9f99e2cfd | 283 | * @param timeout seconds bofer time out |
yamaguch | 9:48a9f99e2cfd | 284 | * |
yamaguch | 9:48a9f99e2cfd | 285 | * @returns FrameType of the received frame data |
yamaguch | 9:48a9f99e2cfd | 286 | */ |
yamaguch | 9:48a9f99e2cfd | 287 | FrameType receive(float timeout = 3.0); |
yamaguch | 9:48a9f99e2cfd | 288 | |
yamaguch | 9:48a9f99e2cfd | 289 | /** |
yamaguch | 9:48a9f99e2cfd | 290 | * scan received data according to the specified format. |
yamaguch | 9:48a9f99e2cfd | 291 | * |
yamaguch | 9:48a9f99e2cfd | 292 | * @param type ValueType of the data to be scanned |
yamaguch | 9:48a9f99e2cfd | 293 | * @param value pointer to the byte array to store the scanned value |
yamaguch | 9:48a9f99e2cfd | 294 | * @param maxlength max size of the value in bytes |
yamaguch | 9:48a9f99e2cfd | 295 | * @param length pointer to an int to receive the actual data length |
yamaguch | 9:48a9f99e2cfd | 296 | * |
yamaguch | 9:48a9f99e2cfd | 297 | * @param true if scan succeeded, false otherwise |
yamaguch | 9:48a9f99e2cfd | 298 | */ |
yamaguch | 9:48a9f99e2cfd | 299 | bool scan(ValueType type, char *value, int maxlength = 1, int *length = 0); |
yamaguch | 9:48a9f99e2cfd | 300 | |
yamaguch | 9:48a9f99e2cfd | 301 | /** |
yamaguch | 9:48a9f99e2cfd | 302 | * gets the XBee firmware version. |
yamaguch | 9:48a9f99e2cfd | 303 | * |
yamaguch | 9:48a9f99e2cfd | 304 | * @returns XBee firmwre version in int (unsigned short value) |
yamaguch | 9:48a9f99e2cfd | 305 | */ |
yamaguch | 9:48a9f99e2cfd | 306 | int getFirmwareVersion(); |
yamaguch | 9:48a9f99e2cfd | 307 | |
yamaguch | 9:48a9f99e2cfd | 308 | /** |
yamaguch | 9:48a9f99e2cfd | 309 | * gets the current frame ID. |
yamaguch | 9:48a9f99e2cfd | 310 | * |
yamaguch | 9:48a9f99e2cfd | 311 | * @returns frame ID number being used in the next send request |
yamaguch | 9:48a9f99e2cfd | 312 | */ |
yamaguch | 9:48a9f99e2cfd | 313 | char getFrameID(); |
yamaguch | 9:48a9f99e2cfd | 314 | |
yamaguch | 9:48a9f99e2cfd | 315 | /** |
yamaguch | 9:48a9f99e2cfd | 316 | * sets to run in debug mode. |
yamaguch | 9:48a9f99e2cfd | 317 | * |
yamaguch | 9:48a9f99e2cfd | 318 | * @param debug true to display debugging information |
yamaguch | 9:48a9f99e2cfd | 319 | */ |
yamaguch | 9:48a9f99e2cfd | 320 | void setDebug(bool debug); |
yamaguch | 9:48a9f99e2cfd | 321 | |
yamaguch | 9:48a9f99e2cfd | 322 | /** |
yamaguch | 9:48a9f99e2cfd | 323 | * displays received data in dump format. |
yamaguch | 9:48a9f99e2cfd | 324 | */ |
yamaguch | 9:48a9f99e2cfd | 325 | void dump(); |
yamaguch | 9:48a9f99e2cfd | 326 | |
yamaguch | 9:48a9f99e2cfd | 327 | /** |
yamaguch | 9:48a9f99e2cfd | 328 | * displays the internal data fields and receive buffer in dump format. |
yamaguch | 9:48a9f99e2cfd | 329 | */ |
yamaguch | 9:48a9f99e2cfd | 330 | void dumpAll(); |
yamaguch | 9:48a9f99e2cfd | 331 | |
yamaguch | 9:48a9f99e2cfd | 332 | /** |
yamaguch | 9:48a9f99e2cfd | 333 | * operator overloading for testing XBee modem connection status. |
yamaguch | 9:48a9f99e2cfd | 334 | * |
yamaguch | 9:48a9f99e2cfd | 335 | * @returns false if XBee modem connection has an error |
yamaguch | 9:48a9f99e2cfd | 336 | */ |
yamaguch | 9:48a9f99e2cfd | 337 | operator bool(); |
yamaguch | 9:48a9f99e2cfd | 338 | |
yamaguch | 9:48a9f99e2cfd | 339 | private: |
yamaguch | 9:48a9f99e2cfd | 340 | Serial mon; |
yamaguch | 9:48a9f99e2cfd | 341 | BusOut leds; |
yamaguch | 9:48a9f99e2cfd | 342 | int apiMode; |
yamaguch | 9:48a9f99e2cfd | 343 | volatile enum {UNKNOWN, LENGTH1, LENGTH2, DATA, SUMCHECK} state; |
yamaguch | 9:48a9f99e2cfd | 344 | volatile int cur, in, out, received, free; |
yamaguch | 9:48a9f99e2cfd | 345 | char frame_id; |
yamaguch | 9:48a9f99e2cfd | 346 | char destination64[8]; |
yamaguch | 9:48a9f99e2cfd | 347 | char destination16[2]; |
yamaguch | 9:48a9f99e2cfd | 348 | char buf[BUFSIZE]; |
yamaguch | 9:48a9f99e2cfd | 349 | bool debug; |
yamaguch | 9:48a9f99e2cfd | 350 | |
yamaguch | 9:48a9f99e2cfd | 351 | void send(char c); |
yamaguch | 9:48a9f99e2cfd | 352 | void send2(char c); |
yamaguch | 9:48a9f99e2cfd | 353 | void sendFrame(char* frame, int length); |
yamaguch | 9:48a9f99e2cfd | 354 | int createTxRequest(char frame_id, char* data, int data_length, char* buf, int buf_size); |
yamaguch | 9:48a9f99e2cfd | 355 | int createAtRequest(char frame_id, char* command, char* param, int param_length, bool queue, char* buf, int buf_size); |
yamaguch | 9:48a9f99e2cfd | 356 | int createRemoteAtRequest(char frame_id, char* command, char* param, int param_length, char options, char* buf, int buf_size); |
yamaguch | 9:48a9f99e2cfd | 357 | int seekFor(FrameType type, float timeout); |
yamaguch | 9:48a9f99e2cfd | 358 | FrameType getFrameType(char c); |
yamaguch | 9:48a9f99e2cfd | 359 | bool scan(int i, ValueType type, char *value, int maxlength = 1, int *length = 0); |
yamaguch | 9:48a9f99e2cfd | 360 | void flush(); |
yamaguch | 9:48a9f99e2cfd | 361 | void rxInterruptHandler(); |
yamaguch | 9:48a9f99e2cfd | 362 | void rxInterruptHandler2(); |
yamaguch | 9:48a9f99e2cfd | 363 | |
yamaguch | 9:48a9f99e2cfd | 364 | void dump(char* data, int length); |
yamaguch | 9:48a9f99e2cfd | 365 | void dumpIOSample(char *data, int length); |
yamaguch | 9:48a9f99e2cfd | 366 | void copy(char *toBuf, int fromIndex, int length); |
yamaguch | 9:48a9f99e2cfd | 367 | }; |
yamaguch | 9:48a9f99e2cfd | 368 | |
yamaguch | 9:48a9f99e2cfd | 369 | #endif |