diff --git a/targets/arduino/HardwareSerial.cpp b/targets/arduino/HardwareSerial.cpp index cb64ec525..2985807d6 100755 --- a/targets/arduino/HardwareSerial.cpp +++ b/targets/arduino/HardwareSerial.cpp @@ -15,14 +15,14 @@ You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis */ -extern "C" { - #include - #include - #include - #include "Serial.h" -} +#include +#include +#include +#include "wiring.h" #include "HardwareSerial.h" @@ -30,44 +30,43 @@ extern "C" { HardwareSerial::HardwareSerial(uint8_t uart) { - if(uart == 0){ - _uart = 0; - }else{ - _uart = 1; - } + //if(uart == 0){ + // _uart = 0; + //}else{ + // _uart = 1; + //} } // Public Methods ////////////////////////////////////////////////////////////// void HardwareSerial::begin(long speed) { - uart_init(_uart, speed); + beginSerial(speed); } uint8_t HardwareSerial::available(void) { - return uart_available(_uart); + return serialAvailable(); } int HardwareSerial::read(void) { - return uart_read(_uart); + return serialRead(); } void HardwareSerial::print(char c) { - uart_write(_uart, &c, 1); + printByte(c); } void HardwareSerial::print(char c[]) { - uart_write(_uart, c, strlen(c)); + printString(c); } void HardwareSerial::print(uint8_t b) { - char c = b; - uart_write(_uart, &c, 1); + printByte(b); } void HardwareSerial::print(int n) @@ -75,6 +74,11 @@ void HardwareSerial::print(int n) print((long) n); } +void HardwareSerial::print(unsigned int n) +{ + print((unsigned long) n); +} + void HardwareSerial::print(long n) { if (n < 0) { @@ -113,7 +117,7 @@ void HardwareSerial::println(char c) void HardwareSerial::println(char c[]) { - uart_write(_uart, c, strlen(c)); + print(c); println(); } @@ -125,7 +129,8 @@ void HardwareSerial::println(uint8_t b) void HardwareSerial::println(int n) { - println((long) n); + print(n); + println(); } void HardwareSerial::println(long n) @@ -150,19 +155,7 @@ void HardwareSerial::println(long n, int base) void HardwareSerial::printNumber(unsigned long n, uint8_t base) { - uint8_t buf[8 * sizeof(long)]; // Assumes 8-bit chars. - int i = 0; - if (n == 0) { - print('0'); - return; - } - while (n > 0) { - buf[i++] = n % base; - n /= base; - } - for (i--; i >= 0; i--){ - print((char)(buf[i] < 10 ? '0' + buf[i] : 'A' + buf[i] - 10)); - } + printIntegerInBase(n, base); } // Preinstantiate Objects ////////////////////////////////////////////////////// diff --git a/targets/arduino/HardwareSerial.h b/targets/arduino/HardwareSerial.h index 4f459b11e..9702d1756 100755 --- a/targets/arduino/HardwareSerial.h +++ b/targets/arduino/HardwareSerial.h @@ -31,7 +31,7 @@ class HardwareSerial { private: - uint8_t _uart; + //uint8_t _uart; void printNumber(unsigned long, uint8_t); public: HardwareSerial(uint8_t); @@ -42,6 +42,7 @@ class HardwareSerial void print(char[]); void print(uint8_t); void print(int); + void print(unsigned int); void print(long); void print(unsigned long); void print(long, int); diff --git a/targets/arduino/wiring.h b/targets/arduino/wiring.h index 599d1c381..e1df0995d 100755 --- a/targets/arduino/wiring.h +++ b/targets/arduino/wiring.h @@ -77,6 +77,7 @@ void printInteger(long n); void printHex(unsigned long n); void printOctal(unsigned long n); void printBinary(unsigned long n); +void printIntegerInBase(unsigned long n, unsigned long base); unsigned long millis(void); void delay(unsigned long);