diff options
-rwxr-xr-x | cores/arduino/HardwareSerial.cpp | 8 | ||||
-rwxr-xr-x | cores/arduino/HardwareSerial.h | 3 | ||||
-rwxr-xr-x | cores/arduino/Print.cpp | 8 | ||||
-rwxr-xr-x | cores/arduino/Print.h | 3 | ||||
-rwxr-xr-x | libraries/LiquidCrystal/LiquidCrystal.cpp | 18 | ||||
-rwxr-xr-x | libraries/LiquidCrystal/LiquidCrystal.h | 8 |
6 files changed, 16 insertions, 32 deletions
diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp index 76cd9b0..aab7fc5 100755 --- a/cores/arduino/HardwareSerial.cpp +++ b/cores/arduino/HardwareSerial.cpp @@ -26,14 +26,6 @@ #include "HardwareSerial.h" -void HardwareSerialWrite(uint8_t value, void *instance) { - ((HardwareSerial *) instance)->write(value); -} - -// Constructors //////////////////////////////////////////////////////////////// - -HardwareSerial::HardwareSerial() : Print(HardwareSerialWrite) {} - // Public Methods ////////////////////////////////////////////////////////////// void HardwareSerial::begin(long speed) diff --git a/cores/arduino/HardwareSerial.h b/cores/arduino/HardwareSerial.h index f2c6ce8..e4cb969 100755 --- a/cores/arduino/HardwareSerial.h +++ b/cores/arduino/HardwareSerial.h @@ -27,12 +27,11 @@ class HardwareSerial : public Print { public: - HardwareSerial(); void begin(long); uint8_t available(void); int read(void); void flush(void); - void write(uint8_t); + virtual void write(uint8_t); }; extern HardwareSerial Serial; diff --git a/cores/arduino/Print.cpp b/cores/arduino/Print.cpp index b8a85a7..d150b75 100755 --- a/cores/arduino/Print.cpp +++ b/cores/arduino/Print.cpp @@ -26,17 +26,11 @@ #include "Print.h" -// Constructors //////////////////////////////////////////////////////////////// - -Print::Print(void (*write)(uint8_t, void *)) { - this->write = write; -} - // Public Methods ////////////////////////////////////////////////////////////// void Print::print(uint8_t b) { - write(b, this); + write(b); } void Print::print(char c) diff --git a/cores/arduino/Print.h b/cores/arduino/Print.h index 5cac3f2..8cec235 100755 --- a/cores/arduino/Print.h +++ b/cores/arduino/Print.h @@ -32,9 +32,8 @@ class Print { private: void printNumber(unsigned long, uint8_t); - void (*write)(uint8_t, void *); public: - Print(void (*)(uint8_t, void *)); + virtual void write(uint8_t); void print(char); void print(const char[]); void print(uint8_t); diff --git a/libraries/LiquidCrystal/LiquidCrystal.cpp b/libraries/LiquidCrystal/LiquidCrystal.cpp index c5acc85..b5f2cd4 100755 --- a/libraries/LiquidCrystal/LiquidCrystal.cpp +++ b/libraries/LiquidCrystal/LiquidCrystal.cpp @@ -26,7 +26,7 @@ LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, - uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) : Print(baseWrite), + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) : _four_bit_mode(0), _rs_pin(rs), _rw_pin(rw), _enable_pin(enable) { _data_pins[0] = d0; @@ -52,7 +52,7 @@ LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, } LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, - uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) : Print(baseWrite), + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) : _four_bit_mode(1), _rs_pin(rs), _rw_pin(rw), _enable_pin(enable) { _data_pins[0] = d0; @@ -91,11 +91,15 @@ void LiquidCrystal::setCursor(int col, int row) command(0x80 | (col + row_offsets[row])); } -void LiquidCrystal::command(int value) { - write(value, LOW); +void LiquidCrystal::command(uint8_t value) { + send(value, LOW); } -void LiquidCrystal::write(int value, int mode) { +void LiquidCrystal::write(uint8_t value) { + send(value, HIGH); +} + +void LiquidCrystal::send(uint8_t value, uint8_t mode) { digitalWrite(_rs_pin, mode); digitalWrite(_rw_pin, LOW); @@ -122,7 +126,3 @@ void LiquidCrystal::write(int value, int mode) { digitalWrite(_enable_pin, LOW); } } - -void baseWrite(uint8_t value, void *instance) { - ((LiquidCrystal *) instance)->write(value); -} diff --git a/libraries/LiquidCrystal/LiquidCrystal.h b/libraries/LiquidCrystal/LiquidCrystal.h index c4746c5..a5edc5f 100755 --- a/libraries/LiquidCrystal/LiquidCrystal.h +++ b/libraries/LiquidCrystal/LiquidCrystal.h @@ -16,9 +16,11 @@ public: void shiftDisplayLeft(); void shiftDisplayRight(); */ - void write(int, int = 1); - void command(int); + virtual void write(uint8_t); + void command(uint8_t); private: + void send(uint8_t, uint8_t); + uint8_t _four_bit_mode; uint8_t _rs_pin; // LOW: command. HIGH: character. uint8_t _rw_pin; // LOW: write to LCD. HIGH: read from LCD. @@ -26,6 +28,4 @@ private: uint8_t _data_pins[8]; }; -void baseWrite(uint8_t, void *); - #endif |