1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-19 09:42:11 +03:00

Changing Print class to use regular virtual write() function (instead of my hack

ed together version).
This commit is contained in:
David A. Mellis
2008-05-07 18:24:49 +00:00
parent ac06b319b0
commit 8f75f0299d
6 changed files with 16 additions and 32 deletions

View File

@ -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);
}

View File

@ -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