Fixing ADK version 1.0 libraries to work with Arduino SDK 1.0
- http://code.google.com/p/android/issues/detail?id=31568

Change-Id: I16db6bb797f16678a2703f1bba4adc47c6b44bf9
diff --git a/AndroidAccessory/AndroidAccessory.h b/AndroidAccessory/AndroidAccessory.h
index 6610307..20066cc 100644
--- a/AndroidAccessory/AndroidAccessory.h
+++ b/AndroidAccessory/AndroidAccessory.h
@@ -17,7 +17,7 @@
 #ifndef __AndroidAccessory_h__
 #define __AndroidAccessory_h__
 
-#include "WProgram.h"
+#include "Arduino.h"
 
 class AndroidAccessory {
 private:
diff --git a/USB_Host_Shield/Max3421e.h b/USB_Host_Shield/Max3421e.h
index 67a95ff..263ef3f 100644
--- a/USB_Host_Shield/Max3421e.h
+++ b/USB_Host_Shield/Max3421e.h
@@ -26,61 +26,58 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-

-/* MAX3421E functions */

-#ifndef _MAX3421E_H_

-#define _MAX3421E_H_

-

-

-//#include <Spi.h>

-//#include <WProgram.h>

-#include "WProgram.h"

-#include "Max3421e_constants.h"

-

-class MAX3421E /* : public SPI */ {

-    // byte vbusState;

-    public:

-        MAX3421E( void );

-        byte getVbusState( void );

-//        void toggle( byte pin );

-        static void regWr( byte, byte );

-        char * bytesWr( byte, byte, char * );

-        static void gpioWr( byte );

-        byte regRd( byte );

-        char * bytesRd( byte, byte, char * );

-        byte gpioRd( void );

-        boolean reset();

-        boolean vbusPwr ( boolean );

-        void busprobe( void );

-        void powerOn();

-        byte IntHandler();

-        byte GpxHandler();

-        byte Task();

-    private:

-	static void pinInit(void);

-	static void setRST(uint8_t val);

-	static uint8_t readINT(void);

-	static uint8_t readGPX(void);

-

-      static void spi_init() {

-        uint8_t tmp;

-        // initialize SPI pins

-        pinMode(SCK_PIN, OUTPUT);

-        pinMode(MOSI_PIN, OUTPUT);

-        pinMode(MISO_PIN, INPUT);

-        pinMode(SS_PIN, OUTPUT);

-        /* mode 00 (CPOL=0, CPHA=0) master, fclk/2. Mode 11 (CPOL=11, CPHA=11) is also supported by MAX3421E */

-        SPCR = 0x50;

-        SPSR = 0x01;

-        /**/

-        tmp = SPSR;

-        tmp = SPDR;

-    }

-//        void init();

-    friend class Max_LCD;        

-};

-

-

-

-

-#endif //_MAX3421E_H_

+
+/* MAX3421E functions */
+#ifndef _MAX3421E_H_
+#define _MAX3421E_H_
+
+#include "Arduino.h"
+#include "Max3421e_constants.h"
+
+class MAX3421E /* : public SPI */ {
+    // byte vbusState;
+    public:
+        MAX3421E( void );
+        byte getVbusState( void );
+//        void toggle( byte pin );
+        static void regWr( byte, byte );
+        char * bytesWr( byte, byte, char * );
+        static void gpioWr( byte );
+        byte regRd( byte );
+        char * bytesRd( byte, byte, char * );
+        byte gpioRd( void );
+        boolean reset();
+        boolean vbusPwr ( boolean );
+        void busprobe( void );
+        void powerOn();
+        byte IntHandler();
+        byte GpxHandler();
+        byte Task();
+    private:
+	static void pinInit(void);
+	static void setRST(uint8_t val);
+	static uint8_t readINT(void);
+	static uint8_t readGPX(void);
+
+      static void spi_init() {
+        uint8_t tmp;
+        // initialize SPI pins
+        pinMode(SCK_PIN, OUTPUT);
+        pinMode(MOSI_PIN, OUTPUT);
+        pinMode(MISO_PIN, INPUT);
+        pinMode(SS_PIN, OUTPUT);
+        /* mode 00 (CPOL=0, CPHA=0) master, fclk/2. Mode 11 (CPOL=11, CPHA=11) is also supported by MAX3421E */
+        SPCR = 0x50;
+        SPSR = 0x01;
+        /**/
+        tmp = SPSR;
+        tmp = SPDR;
+    }
+//        void init();
+    friend class Max_LCD;
+};
+
+
+
+
+#endif //_MAX3421E_H_
diff --git a/USB_Host_Shield/Max_LCD.cpp b/USB_Host_Shield/Max_LCD.cpp
index 75ba009..eda0a52 100644
--- a/USB_Host_Shield/Max_LCD.cpp
+++ b/USB_Host_Shield/Max_LCD.cpp
@@ -26,253 +26,253 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-

-//this code is heavily borrowed from official Arduino source v.0017

-// link to original http://code.google.com/p/arduino/source/browse/trunk/hardware/libraries/LiquidCrystal/LiquidCrystal.cpp

-#include "Max_LCD.h"

-#include "Max3421e.h"

-

-#include <stdio.h>

-#include <string.h>

-#include <inttypes.h>

-#include "WProgram.h"

-

-// When the display powers up, it is configured as follows:

-//

-// 1. Display clear

-// 2. Function set:

-//    DL = 1; 8-bit interface data

-//    N = 0; 1-line display

-//    F = 0; 5x8 dot character font

-// 3. Display on/off control:

-//    D = 0; Display off

-//    C = 0; Cursor off

-//    B = 0; Blinking off

-// 4. Entry mode set:

-//    I/D = 1; Increment by 1

-//    S = 0; No shift

-//

-// Note, however, that resetting the Arduino doesn't reset the LCD, so we

-// can't assume that it's in that state when a sketch starts

-

-// pin definition and set/clear

-

-#define RS  0x04    // RS pin

-#define E   0x08    // E pin

-

-#define SET_RS  lcdPins |= RS

-#define CLR_RS  lcdPins &= ~RS

-#define SET_E   lcdPins |= E

-#define CLR_E   lcdPins &= ~E

-

-#define SENDlcdPins()   MAX3421E::gpioWr( lcdPins )

-    

-#define LCD_sendcmd(a)  {   CLR_RS;             \

-                            sendbyte(a);    \

-                        }

- 

-#define LCD_sendchar(a) {   SET_RS;             \

-                            sendbyte(a);    \

-                        }

-                            

-static byte lcdPins;    //copy of LCD pins

-

-Max_LCD::Max_LCD()

-{

-    lcdPins = 0;

-}

-

-

-void Max_LCD::init()

-{

-    _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;

- 

- //   MAX3421E::gpioWr(0x55);

- 

-  begin(16, 1);  

-}

-

-void Max_LCD::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {

-  if (lines > 1) {

-    _displayfunction |= LCD_2LINE;

-  }

-  _numlines = lines;

-  _currline = 0;

-

-  // for some 1 line displays you can select a 10 pixel high font

-  if ((dotsize != 0) && (lines == 1)) {

-    _displayfunction |= LCD_5x10DOTS;

-  }

-

-  // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!

-  // according to datasheet, we need at least 40ms after power rises above 2.7V

-  // before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50

-  delayMicroseconds(50000);

-  lcdPins = 0x30;

-  SET_E;

-  SENDlcdPins();

-  CLR_E;

-  SENDlcdPins();

-  delayMicroseconds(10000); // wait min 4.1ms

-  //second try

-  SET_E;

-  SENDlcdPins();

-  CLR_E;

-  SENDlcdPins();

-  delayMicroseconds(10000); // wait min 4.1ms

-  // third go!

-  SET_E;

-  SENDlcdPins();

-  CLR_E;

-  SENDlcdPins();

-  delayMicroseconds(10000);

-  // finally, set to 4-bit interface

-    lcdPins = 0x20;

-    //SET_RS;

-    SET_E;

-    SENDlcdPins();

-    //CLR_RS;

-    CLR_E;

-    SENDlcdPins();

-    delayMicroseconds(10000);

-  // finally, set # lines, font size, etc.

-  command(LCD_FUNCTIONSET | _displayfunction);  

-

-  // turn the display on with no cursor or blinking default

-  _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF;  

-  display();

-

-  // clear it off

-  clear();

-

-  // Initialize to default text direction (for romance languages)

-  _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT;

-  // set the entry mode

-  command(LCD_ENTRYMODESET | _displaymode);

-}

-

-/********** high level commands, for the user! */

-void Max_LCD::clear()

-{

-  command(LCD_CLEARDISPLAY);  // clear display, set cursor position to zero

-  delayMicroseconds(2000);  // this command takes a long time!

-}

-

-void Max_LCD::home()

-{

-  command(LCD_RETURNHOME);  // set cursor position to zero

-  delayMicroseconds(2000);  // this command takes a long time!

-}

-

-void Max_LCD::setCursor(uint8_t col, uint8_t row)

-{

-  int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };

-  if ( row > _numlines ) {

-    row = _numlines-1;    // we count rows starting w/0

-  }

- 

-  command(LCD_SETDDRAMADDR | (col + row_offsets[row]));

-}

-

-// Turn the display on/off (quickly)

-void Max_LCD::noDisplay() {

-  _displaycontrol &= ~LCD_DISPLAYON;

-  command(LCD_DISPLAYCONTROL | _displaycontrol);

-}

-void Max_LCD::display() {

-  _displaycontrol |= LCD_DISPLAYON;

-  command(LCD_DISPLAYCONTROL | _displaycontrol);

-}

-

-// Turns the underline cursor on/off

-void Max_LCD::noCursor() {

-  _displaycontrol &= ~LCD_CURSORON;

-  command(LCD_DISPLAYCONTROL | _displaycontrol);

-}

-void Max_LCD::cursor() {

-  _displaycontrol |= LCD_CURSORON;

-  command(LCD_DISPLAYCONTROL | _displaycontrol);

-}

-

-

-// Turn on and off the blinking cursor

-void Max_LCD::noBlink() {

-  _displaycontrol &= ~LCD_BLINKON;

-  command(LCD_DISPLAYCONTROL | _displaycontrol);

-}

-void Max_LCD::blink() {

-  _displaycontrol |= LCD_BLINKON;

-  command(LCD_DISPLAYCONTROL | _displaycontrol);

-}

-

-// These commands scroll the display without changing the RAM

-void Max_LCD::scrollDisplayLeft(void) {

-  command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT);

-}

-void Max_LCD::scrollDisplayRight(void) {

-  command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT);

-}

-

-// This is for text that flows Left to Right

-void Max_LCD::leftToRight(void) {

-  _displaymode |= LCD_ENTRYLEFT;

-  command(LCD_ENTRYMODESET | _displaymode);

-}

-

-// This is for text that flows Right to Left

-void Max_LCD::rightToLeft(void) {

-  _displaymode &= ~LCD_ENTRYLEFT;

-  command(LCD_ENTRYMODESET | _displaymode);

-}

-

-// This will 'right justify' text from the cursor

-void Max_LCD::autoscroll(void) {

-  _displaymode |= LCD_ENTRYSHIFTINCREMENT;

-  command(LCD_ENTRYMODESET | _displaymode);

-}

-

-// This will 'left justify' text from the cursor

-void Max_LCD::noAutoscroll(void) {

-  _displaymode &= ~LCD_ENTRYSHIFTINCREMENT;

-  command(LCD_ENTRYMODESET | _displaymode);

-}

-

-// Allows us to fill the first 8 CGRAM locations

-// with custom characters

-void Max_LCD::createChar(uint8_t location, uint8_t charmap[]) {

-  location &= 0x7; // we only have 8 locations 0-7

-  command(LCD_SETCGRAMADDR | (location << 3));

-  for (int i=0; i<8; i++) {

-    write(charmap[i]);

-  }

-}

-

-/*********** mid level commands, for sending data/cmds */

-

-inline void Max_LCD::command(uint8_t value) {

-  LCD_sendcmd(value);

-  delayMicroseconds(100);

-}

-

-inline void Max_LCD::write(uint8_t value) {

-  LCD_sendchar(value);

-}

-

-void Max_LCD::sendbyte( uint8_t val )

-{

-    lcdPins &= 0x0f;                //prepare place for the upper nibble

-    lcdPins |= ( val & 0xf0 );      //copy upper nibble to LCD variable

-    SET_E;                          //send

-    SENDlcdPins();

-    delayMicroseconds(2);  

-    CLR_E;

-    delayMicroseconds(2);

-    SENDlcdPins();

-    lcdPins &= 0x0f;                    //prepare place for the lower nibble

-    lcdPins |= ( val << 4 ) & 0xf0;    //copy lower nibble to LCD variable

-    SET_E;                              //send

-    SENDlcdPins();  

-    CLR_E;

-    SENDlcdPins();

-    delayMicroseconds(100);

-}

+
+//this code is heavily borrowed from official Arduino source v.0017
+// link to original http://code.google.com/p/arduino/source/browse/trunk/hardware/libraries/LiquidCrystal/LiquidCrystal.cpp
+#include "Max_LCD.h"
+#include "Max3421e.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <inttypes.h>
+#include "Arduino.h"
+
+// When the display powers up, it is configured as follows:
+//
+// 1. Display clear
+// 2. Function set:
+//    DL = 1; 8-bit interface data
+//    N = 0; 1-line display
+//    F = 0; 5x8 dot character font
+// 3. Display on/off control:
+//    D = 0; Display off
+//    C = 0; Cursor off
+//    B = 0; Blinking off
+// 4. Entry mode set:
+//    I/D = 1; Increment by 1
+//    S = 0; No shift
+//
+// Note, however, that resetting the Arduino doesn't reset the LCD, so we
+// can't assume that it's in that state when a sketch starts
+
+// pin definition and set/clear
+
+#define RS  0x04    // RS pin
+#define E   0x08    // E pin
+
+#define SET_RS  lcdPins |= RS
+#define CLR_RS  lcdPins &= ~RS
+#define SET_E   lcdPins |= E
+#define CLR_E   lcdPins &= ~E
+
+#define SENDlcdPins()   MAX3421E::gpioWr( lcdPins )
+
+#define LCD_sendcmd(a)  {   CLR_RS;             \
+                            sendbyte(a);    \
+                        }
+
+#define LCD_sendchar(a) {   SET_RS;             \
+                            sendbyte(a);    \
+                        }
+
+static byte lcdPins;    //copy of LCD pins
+
+Max_LCD::Max_LCD()
+{
+    lcdPins = 0;
+}
+
+
+void Max_LCD::init()
+{
+    _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;
+
+ //   MAX3421E::gpioWr(0x55);
+
+  begin(16, 1);
+}
+
+void Max_LCD::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {
+  if (lines > 1) {
+    _displayfunction |= LCD_2LINE;
+  }
+  _numlines = lines;
+  _currline = 0;
+
+  // for some 1 line displays you can select a 10 pixel high font
+  if ((dotsize != 0) && (lines == 1)) {
+    _displayfunction |= LCD_5x10DOTS;
+  }
+
+  // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!
+  // according to datasheet, we need at least 40ms after power rises above 2.7V
+  // before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50
+  delayMicroseconds(50000);
+  lcdPins = 0x30;
+  SET_E;
+  SENDlcdPins();
+  CLR_E;
+  SENDlcdPins();
+  delayMicroseconds(10000); // wait min 4.1ms
+  //second try
+  SET_E;
+  SENDlcdPins();
+  CLR_E;
+  SENDlcdPins();
+  delayMicroseconds(10000); // wait min 4.1ms
+  // third go!
+  SET_E;
+  SENDlcdPins();
+  CLR_E;
+  SENDlcdPins();
+  delayMicroseconds(10000);
+  // finally, set to 4-bit interface
+    lcdPins = 0x20;
+    //SET_RS;
+    SET_E;
+    SENDlcdPins();
+    //CLR_RS;
+    CLR_E;
+    SENDlcdPins();
+    delayMicroseconds(10000);
+  // finally, set # lines, font size, etc.
+  command(LCD_FUNCTIONSET | _displayfunction);
+
+  // turn the display on with no cursor or blinking default
+  _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF;
+  display();
+
+  // clear it off
+  clear();
+
+  // Initialize to default text direction (for romance languages)
+  _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT;
+  // set the entry mode
+  command(LCD_ENTRYMODESET | _displaymode);
+}
+
+/********** high level commands, for the user! */
+void Max_LCD::clear()
+{
+  command(LCD_CLEARDISPLAY);  // clear display, set cursor position to zero
+  delayMicroseconds(2000);  // this command takes a long time!
+}
+
+void Max_LCD::home()
+{
+  command(LCD_RETURNHOME);  // set cursor position to zero
+  delayMicroseconds(2000);  // this command takes a long time!
+}
+
+void Max_LCD::setCursor(uint8_t col, uint8_t row)
+{
+  int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };
+  if ( row > _numlines ) {
+    row = _numlines-1;    // we count rows starting w/0
+  }
+
+  command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
+}
+
+// Turn the display on/off (quickly)
+void Max_LCD::noDisplay() {
+  _displaycontrol &= ~LCD_DISPLAYON;
+  command(LCD_DISPLAYCONTROL | _displaycontrol);
+}
+void Max_LCD::display() {
+  _displaycontrol |= LCD_DISPLAYON;
+  command(LCD_DISPLAYCONTROL | _displaycontrol);
+}
+
+// Turns the underline cursor on/off
+void Max_LCD::noCursor() {
+  _displaycontrol &= ~LCD_CURSORON;
+  command(LCD_DISPLAYCONTROL | _displaycontrol);
+}
+void Max_LCD::cursor() {
+  _displaycontrol |= LCD_CURSORON;
+  command(LCD_DISPLAYCONTROL | _displaycontrol);
+}
+
+
+// Turn on and off the blinking cursor
+void Max_LCD::noBlink() {
+  _displaycontrol &= ~LCD_BLINKON;
+  command(LCD_DISPLAYCONTROL | _displaycontrol);
+}
+void Max_LCD::blink() {
+  _displaycontrol |= LCD_BLINKON;
+  command(LCD_DISPLAYCONTROL | _displaycontrol);
+}
+
+// These commands scroll the display without changing the RAM
+void Max_LCD::scrollDisplayLeft(void) {
+  command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT);
+}
+void Max_LCD::scrollDisplayRight(void) {
+  command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT);
+}
+
+// This is for text that flows Left to Right
+void Max_LCD::leftToRight(void) {
+  _displaymode |= LCD_ENTRYLEFT;
+  command(LCD_ENTRYMODESET | _displaymode);
+}
+
+// This is for text that flows Right to Left
+void Max_LCD::rightToLeft(void) {
+  _displaymode &= ~LCD_ENTRYLEFT;
+  command(LCD_ENTRYMODESET | _displaymode);
+}
+
+// This will 'right justify' text from the cursor
+void Max_LCD::autoscroll(void) {
+  _displaymode |= LCD_ENTRYSHIFTINCREMENT;
+  command(LCD_ENTRYMODESET | _displaymode);
+}
+
+// This will 'left justify' text from the cursor
+void Max_LCD::noAutoscroll(void) {
+  _displaymode &= ~LCD_ENTRYSHIFTINCREMENT;
+  command(LCD_ENTRYMODESET | _displaymode);
+}
+
+// Allows us to fill the first 8 CGRAM locations
+// with custom characters
+void Max_LCD::createChar(uint8_t location, uint8_t charmap[]) {
+  location &= 0x7; // we only have 8 locations 0-7
+  command(LCD_SETCGRAMADDR | (location << 3));
+  for (int i=0; i<8; i++) {
+    write(charmap[i]);
+  }
+}
+
+/*********** mid level commands, for sending data/cmds */
+
+inline void Max_LCD::command(uint8_t value) {
+  LCD_sendcmd(value);
+  delayMicroseconds(100);
+}
+
+inline size_t Max_LCD::write(uint8_t value) {
+  LCD_sendchar(value);
+}
+
+void Max_LCD::sendbyte( uint8_t val )
+{
+    lcdPins &= 0x0f;                //prepare place for the upper nibble
+    lcdPins |= ( val & 0xf0 );      //copy upper nibble to LCD variable
+    SET_E;                          //send
+    SENDlcdPins();
+    delayMicroseconds(2);
+    CLR_E;
+    delayMicroseconds(2);
+    SENDlcdPins();
+    lcdPins &= 0x0f;                    //prepare place for the lower nibble
+    lcdPins |= ( val << 4 ) & 0xf0;    //copy lower nibble to LCD variable
+    SET_E;                              //send
+    SENDlcdPins();
+    CLR_E;
+    SENDlcdPins();
+    delayMicroseconds(100);
+}
diff --git a/USB_Host_Shield/Max_LCD.h b/USB_Host_Shield/Max_LCD.h
index 3cc2dac..109fc9d 100644
--- a/USB_Host_Shield/Max_LCD.h
+++ b/USB_Host_Shield/Max_LCD.h
@@ -26,90 +26,90 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-

-//HD44780 compatible LCD display via MAX3421E GPOUT support header

-//pinout: D[4-7] -> GPOUT[4-7], RS-> GPOUT[2], E ->GPOUT[3]

-//

-//this code is heavily borrowed from official Arduino source v.0017

-// link to original http://code.google.com/p/arduino/source/browse/trunk/hardware/libraries/LiquidCrystal/LiquidCrystal.h

-//

-#ifndef _Max_LCD_h_

-#define _Max_LCD_h_

-

-#include <inttypes.h>

-#include "Print.h"

-

-// commands

-#define LCD_CLEARDISPLAY 0x01

-#define LCD_RETURNHOME 0x02

-#define LCD_ENTRYMODESET 0x04

-#define LCD_DISPLAYCONTROL 0x08

-#define LCD_CURSORSHIFT 0x10

-#define LCD_FUNCTIONSET 0x20

-#define LCD_SETCGRAMADDR 0x40

-#define LCD_SETDDRAMADDR 0x80

-

-// flags for display entry mode

-#define LCD_ENTRYRIGHT 0x00

-#define LCD_ENTRYLEFT 0x02

-#define LCD_ENTRYSHIFTINCREMENT 0x01

-#define LCD_ENTRYSHIFTDECREMENT 0x00

-

-// flags for display on/off control

-#define LCD_DISPLAYON 0x04

-#define LCD_DISPLAYOFF 0x00

-#define LCD_CURSORON 0x02

-#define LCD_CURSOROFF 0x00

-#define LCD_BLINKON 0x01

-#define LCD_BLINKOFF 0x00

-

-// flags for display/cursor shift

-#define LCD_DISPLAYMOVE 0x08

-#define LCD_CURSORMOVE 0x00

-#define LCD_MOVERIGHT 0x04

-#define LCD_MOVELEFT 0x00

-

-// flags for function set

-#define LCD_8BITMODE 0x10

-#define LCD_4BITMODE 0x00

-#define LCD_2LINE 0x08

-#define LCD_1LINE 0x00

-#define LCD_5x10DOTS 0x04

-#define LCD_5x8DOTS 0x00

-

-class Max_LCD : public Print {

-public:

-  Max_LCD();

-  void init();

-  void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS);

-  void clear();

-  void home();

-  void noDisplay();

-  void display();

-  void noBlink();

-  void blink();

-  void noCursor();

-  void cursor();

-  void scrollDisplayLeft();

-  void scrollDisplayRight();

-  void leftToRight();

-  void rightToLeft();

-  void autoscroll();

-  void noAutoscroll();

-  void createChar(uint8_t, uint8_t[]);

-  void setCursor(uint8_t, uint8_t); 

-  virtual void write(uint8_t);

-  void command(uint8_t);

-private:

-  void sendbyte( uint8_t val );

-  uint8_t _displayfunction; //tokill

-  uint8_t _displaycontrol;

-  uint8_t _displaymode;

-  uint8_t _initialized;

-  uint8_t _numlines,_currline;

-};

-

-

-

-

+
+//HD44780 compatible LCD display via MAX3421E GPOUT support header
+//pinout: D[4-7] -> GPOUT[4-7], RS-> GPOUT[2], E ->GPOUT[3]
+//
+//this code is heavily borrowed from official Arduino source v.0017
+// link to original http://code.google.com/p/arduino/source/browse/trunk/hardware/libraries/LiquidCrystal/LiquidCrystal.h
+//
+#ifndef _Max_LCD_h_
+#define _Max_LCD_h_
+
+#include <inttypes.h>
+#include "Print.h"
+
+// commands
+#define LCD_CLEARDISPLAY 0x01
+#define LCD_RETURNHOME 0x02
+#define LCD_ENTRYMODESET 0x04
+#define LCD_DISPLAYCONTROL 0x08
+#define LCD_CURSORSHIFT 0x10
+#define LCD_FUNCTIONSET 0x20
+#define LCD_SETCGRAMADDR 0x40
+#define LCD_SETDDRAMADDR 0x80
+
+// flags for display entry mode
+#define LCD_ENTRYRIGHT 0x00
+#define LCD_ENTRYLEFT 0x02
+#define LCD_ENTRYSHIFTINCREMENT 0x01
+#define LCD_ENTRYSHIFTDECREMENT 0x00
+
+// flags for display on/off control
+#define LCD_DISPLAYON 0x04
+#define LCD_DISPLAYOFF 0x00
+#define LCD_CURSORON 0x02
+#define LCD_CURSOROFF 0x00
+#define LCD_BLINKON 0x01
+#define LCD_BLINKOFF 0x00
+
+// flags for display/cursor shift
+#define LCD_DISPLAYMOVE 0x08
+#define LCD_CURSORMOVE 0x00
+#define LCD_MOVERIGHT 0x04
+#define LCD_MOVELEFT 0x00
+
+// flags for function set
+#define LCD_8BITMODE 0x10
+#define LCD_4BITMODE 0x00
+#define LCD_2LINE 0x08
+#define LCD_1LINE 0x00
+#define LCD_5x10DOTS 0x04
+#define LCD_5x8DOTS 0x00
+
+class Max_LCD : public Print {
+public:
+  Max_LCD();
+  void init();
+  void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS);
+  void clear();
+  void home();
+  void noDisplay();
+  void display();
+  void noBlink();
+  void blink();
+  void noCursor();
+  void cursor();
+  void scrollDisplayLeft();
+  void scrollDisplayRight();
+  void leftToRight();
+  void rightToLeft();
+  void autoscroll();
+  void noAutoscroll();
+  void createChar(uint8_t, uint8_t[]);
+  void setCursor(uint8_t, uint8_t);
+  virtual size_t write(uint8_t);
+  void command(uint8_t);
+private:
+  void sendbyte( uint8_t val );
+  uint8_t _displayfunction; //tokill
+  uint8_t _displaycontrol;
+  uint8_t _displaymode;
+  uint8_t _initialized;
+  uint8_t _numlines,_currline;
+};
+
+
+
+
 #endif