00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __WPROGRAM_H__
00025
00026 #include <WaspClasses.h>
00027 #endif
00028
00029
00030
00031 WaspXBee::WaspXBee()
00032 {
00033 _uart = 0;
00034 }
00035
00036
00037
00038 void WaspXBee::begin()
00039 {
00040 beginSerial(XBEE_RATE, _uart);
00041 pinMode(XBEE_PW,OUTPUT);
00042 }
00043
00044 void WaspXBee::begin(uint16_t speed)
00045 {
00046 beginSerial(speed, _uart);
00047 pinMode(XBEE_PW,OUTPUT);
00048 }
00049
00050 void WaspXBee::close()
00051 {
00052 closeSerial(_uart);
00053 }
00054
00055 void WaspXBee::setMode(uint8_t mode)
00056 {
00057 _pwrMode = mode;
00058
00059 switch (_pwrMode)
00060 {
00061 case XBEE_ON:
00062 begin();
00063 digitalWrite(XBEE_PW,HIGH);
00064
00065 break;
00066
00067 case XBEE_OFF:
00068 digitalWrite(XBEE_PW,LOW);
00069 close();
00070 break;
00071
00072 case XBEE_HIBERNATE:
00073 xbee.setSleepMode(1);
00074 break;
00075
00076 default:
00077 break;
00078 }
00079 }
00080
00081 uint8_t WaspXBee::available()
00082 {
00083 return serialAvailable( _uart);
00084 }
00085
00086 int WaspXBee::read()
00087 {
00088 return serialRead(_uart);
00089 }
00090
00091 void WaspXBee::flush()
00092 {
00093 serialFlush(_uart);
00094 }
00095
00096 void WaspXBee::print(char c)
00097 {
00098 printByte(c, _uart);
00099 }
00100
00101 void WaspXBee::print(const char c[])
00102 {
00103 printString(c, _uart);
00104 }
00105
00106 void WaspXBee::print(uint8_t b)
00107 {
00108 printByte(b, _uart);
00109 }
00110
00111 void WaspXBee::print(int n)
00112 {
00113 print((long) n);
00114 }
00115
00116 void WaspXBee::print(unsigned int n)
00117 {
00118 print((unsigned long) n);
00119 }
00120
00121 void WaspXBee::print(long n)
00122 {
00123 if (n < 0) {
00124 print('-');
00125 n = -n;
00126 }
00127 printNumber(n, 10);
00128 }
00129
00130 void WaspXBee::print(unsigned long n)
00131 {
00132 printNumber(n, 10);
00133 }
00134
00135 void WaspXBee::print(double n)
00136 {
00137 printFloat(n, 10);
00138 }
00139
00140 void WaspXBee::print(long n, int base)
00141 {
00142 if (base == 0)
00143 print((char) n);
00144 else if (base == 10)
00145 print(n);
00146 else
00147 printNumber(n, base);
00148 }
00149
00150 void WaspXBee::println()
00151 {
00152 print('\r');
00153 print('\n');
00154 }
00155
00156 void WaspXBee::println(char c)
00157 {
00158 print(c);
00159 println();
00160 }
00161
00162 void WaspXBee::println(const char c[])
00163 {
00164 print(c);
00165 println();
00166 }
00167
00168 void WaspXBee::println(uint8_t b)
00169 {
00170 print(b);
00171 println();
00172 }
00173
00174 void WaspXBee::println(int n)
00175 {
00176 print(n);
00177 println();
00178 }
00179
00180 void WaspXBee::println(long n)
00181 {
00182 print(n);
00183 println();
00184 }
00185
00186 void WaspXBee::println(unsigned long n)
00187 {
00188 print(n);
00189 println();
00190 }
00191
00192 void WaspXBee::println(long n, int base)
00193 {
00194 print(n, base);
00195 println();
00196 }
00197
00198 void WaspXBee::println(double n)
00199 {
00200 print(n);
00201 println();
00202 }
00203
00204
00205
00206 void WaspXBee::printNumber(unsigned long n, uint8_t base)
00207 {
00208 printIntegerInBase(n, base, _uart);
00209 }
00210
00211 void WaspXBee::printFloat(double number, uint8_t digits)
00212 {
00213
00214 if (number < 0.0)
00215 {
00216 print('-');
00217 number = -number;
00218 }
00219
00220
00221 double rounding = 0.5;
00222 for (uint8_t i=0; i<digits; ++i)
00223 rounding /= 10.0;
00224
00225 number += rounding;
00226
00227
00228 unsigned long int_part = (unsigned long)number;
00229 double remainder = number - (double)int_part;
00230 print(int_part);
00231
00232
00233 if (digits > 0)
00234 print(".");
00235
00236
00237 while (digits-- > 0)
00238 {
00239 remainder *= 10.0;
00240 int toPrint = int(remainder);
00241 print(toPrint);
00242 remainder -= toPrint;
00243 }
00244 }
00245
00246
00247
00248 WaspXBee XBee = WaspXBee();
00249