aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcores/arduino/HardwareSerial.cpp8
-rwxr-xr-xcores/arduino/HardwareSerial.h3
-rwxr-xr-xcores/arduino/Print.cpp8
-rwxr-xr-xcores/arduino/Print.h3
-rwxr-xr-xlibraries/LiquidCrystal/LiquidCrystal.cpp18
-rwxr-xr-xlibraries/LiquidCrystal/LiquidCrystal.h8
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