00001 #ifndef __CPHIDGETTEXTLCD
00002 #define __CPHIDGETTEXTLCD
00003 #include "cphidget.h"
00004
00011 DPHANDLE(TextLCD)
00012 CHDRSTANDARD(TextLCD)
00013
00019 CHDRGET(TextLCD,RowCount,int *count)
00025 CHDRGET(TextLCD,ColumnCount,int *count)
00026
00032 CHDRGET(TextLCD,Backlight,int *backlightState)
00038 CHDRSET(TextLCD,Backlight,int backlightState)
00044 CHDRGET(TextLCD,Brightness,int *brightness)
00050 CHDRSET(TextLCD,Brightness,int brightness)
00056 CHDRGET(TextLCD,Contrast,int *contrast)
00062 CHDRSET(TextLCD,Contrast,int contrast)
00068 CHDRGET(TextLCD,CursorOn,int *cursorState)
00074 CHDRSET(TextLCD,CursorOn,int cursorState)
00080 CHDRGET(TextLCD,CursorBlink,int *cursorBlinkState)
00086 CHDRSET(TextLCD,CursorBlink,int cursorBlinkState)
00094 CHDRSETINDEX(TextLCD,CustomCharacter,int var1,int var2)
00102 CHDRSETINDEX(TextLCD,DisplayCharacter,int column,unsigned char character)
00109 CHDRSETINDEX(TextLCD,DisplayString,char *displayString)
00110
00114 typedef enum {
00115 PHIDGET_TEXTLCD_SCREEN_NONE = 1,
00116 PHIDGET_TEXTLCD_SCREEN_1x8,
00117 PHIDGET_TEXTLCD_SCREEN_2x8,
00118 PHIDGET_TEXTLCD_SCREEN_1x16,
00119 PHIDGET_TEXTLCD_SCREEN_2x16,
00120 PHIDGET_TEXTLCD_SCREEN_4x16,
00121 PHIDGET_TEXTLCD_SCREEN_2x20,
00122 PHIDGET_TEXTLCD_SCREEN_4x20,
00123 PHIDGET_TEXTLCD_SCREEN_2x24,
00124 PHIDGET_TEXTLCD_SCREEN_1x40,
00125 PHIDGET_TEXTLCD_SCREEN_2x40,
00126 PHIDGET_TEXTLCD_SCREEN_4x40,
00127 PHIDGET_TEXTLCD_SCREEN_UNKNOWN
00128 } CPhidgetTextLCD_ScreenSize;
00129
00135 CHDRGET(TextLCD,ScreenCount,int *count)
00141 CHDRGET(TextLCD,Screen,int *screenIndex)
00147 CHDRSET(TextLCD,Screen,int screenIndex)
00153 CHDRGET(TextLCD,ScreenSize,CPhidgetTextLCD_ScreenSize *screenSize)
00159 CHDRSET(TextLCD,ScreenSize,CPhidgetTextLCD_ScreenSize screenSize)
00166 PHIDGET21_API int CCONV CPhidgetTextLCD_initialize(CPhidgetTextLCDHandle phid);
00167
00168 #ifndef REMOVE_DEPRECATED
00169 DEP_CHDRGET("Deprecated - use CPhidgetTextLCD_getRowCount",TextLCD,NumRows,int *)
00170 DEP_CHDRGET("Deprecated - use CPhidgetTextLCD_getColumnCount",TextLCD,NumColumns,int *)
00171 #endif
00172
00173 #ifndef EXTERNALPROTO
00174 #define TEXTLCD_MAXROWS 2
00175 #define TEXTLCD_MAXCOLS 40
00176 #define TEXTLCD_MAXSCREENS 2
00177
00178 #define TEXTLCD_CURSOR_PACKET 0x00
00179 #define TEXTLCD_BACKLIGHT_PACKET 0x11
00180 #define TEXTLCD_CONTRAST_PACKET 0x12
00181 #define TEXTLCD_INIT_PACKET 0x13
00182
00183 #define TEXTLCD_SCREEN(x) (x << 5)
00184 #define TEXTLCD_CGRAM_ADDR(x) (x << 3) //each custom character takes 8 bytes of CGRAM storage
00185
00186 #define TEXTLCD_ESCAPE_CHAR 0x00
00187 #define TEXTLCD_COMMAND_MODE 0x01
00188 #define TEXTLCD_DATA_MODE 0x02
00189
00190
00191 #define HD44780_CLEAR_DISPLAY 0x01
00192 #define HD44780_CURSOR_HOME 0x02
00193
00194
00195 #define HD44780_DISPLAY_CNTRL 0x08
00196 #define HD44780_DISPLAY_ON 0x04
00197 #define HD44780_CURSOR_ON 0x02
00198 #define HD44780_CURSOR_BLINK_ON 0x01
00199
00200 #define HD44780_SET_CGRAM_ADDR 0x40
00201 #define HD44780_SET_DDRAM_ADDR 0x80
00202
00203 struct _CPhidgetTextLCD {
00204 CPhidget phid;
00205
00206 int currentScreen;
00207 int lastScreen;
00208
00209 unsigned char cursorOn[TEXTLCD_MAXSCREENS], cursorBlink[TEXTLCD_MAXSCREENS], backlight[TEXTLCD_MAXSCREENS];
00210 int contrast[TEXTLCD_MAXSCREENS], brightness[TEXTLCD_MAXSCREENS];
00211
00212 int cursorLocation[TEXTLCD_MAXSCREENS], cursorColumn[TEXTLCD_MAXSCREENS];
00213
00214 unsigned char backlightEcho[TEXTLCD_MAXSCREENS];
00215 int contrastEcho[TEXTLCD_MAXSCREENS], brightnessEcho[TEXTLCD_MAXSCREENS];
00216
00217 unsigned char fullStateEcho;
00218
00219
00220 char *customs[TEXTLCD_MAXSCREENS][16];
00221 char chars[TEXTLCD_MAXSCREENS][TEXTLCD_MAXROWS * TEXTLCD_MAXCOLS];
00222 char *strings[TEXTLCD_MAXSCREENS][TEXTLCD_MAXROWS];
00223
00224
00225 int rowCount[TEXTLCD_MAXSCREENS], columnCount[TEXTLCD_MAXSCREENS];
00226 CPhidgetTextLCD_ScreenSize screenSize[TEXTLCD_MAXSCREENS];
00227
00228 unsigned char init[TEXTLCD_MAXSCREENS];
00229
00230 unsigned char outputPacket[MAX_OUT_PACKET_SIZE];
00231 unsigned int outputPacketLen;
00232 } typedef CPhidgetTextLCDInfo;
00233 #endif
00234
00237 #endif