From 80ad6d155c1b974590f0c96b6291b0baa70b09d5 Mon Sep 17 00:00:00 2001 From: reinelt <> Date: Thu, 24 Jul 2003 04:48:09 +0000 Subject: [lcd4linux @ 2003-07-24 04:48:09 by reinelt] 'soft clear' needed for virtual rows --- BeckmannEgle.c | 13 +++++++++---- Crystalfontz.c | 7 +++++-- Cwlinux.c | 27 ++++++++++++++++----------- HD44780.c | 17 ++++++++++++----- M50530.c | 17 +++++++++++------ MatrixOrbital.c | 16 ++++++++++------ PalmPilot.c | 12 +++++++++--- Raster.c | 7 +++++-- SIN.c | 11 ++++++++--- Skeleton.c | 7 +++++-- T6963.c | 36 +++++++++++++++++++++--------------- Text.c | 15 ++++++++++----- USBLCD.c | 18 +++++++++++------- XWindow.c | 7 +++++-- display.c | 9 ++++++--- display.h | 9 ++++++--- lcd4linux.c | 11 +++++++---- processor.c | 6 +++++- 18 files changed, 161 insertions(+), 84 deletions(-) diff --git a/BeckmannEgle.c b/BeckmannEgle.c index 8eff046..48467f4 100644 --- a/BeckmannEgle.c +++ b/BeckmannEgle.c @@ -1,4 +1,4 @@ -/* $Id: BeckmannEgle.c,v 1.12 2003/02/22 07:53:09 reinelt Exp $ +/* $Id: BeckmannEgle.c,v 1.13 2003/07/24 04:48:09 reinelt Exp $ * * driver for Beckmann+Egle mini terminals * @@ -20,6 +20,9 @@ * * * $Log: BeckmannEgle.c,v $ + * Revision 1.13 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.12 2003/02/22 07:53:09 reinelt * cfg_get(key,defval) * @@ -194,7 +197,7 @@ static void BE_define_char (int ascii, char *buffer) } -int BE_clear (void) +int BE_clear (int full) { int row, col; @@ -206,7 +209,9 @@ int BE_clear (void) bar_clear(); - BE_write ("\033&#", 3); + if (full) + BE_write ("\033&#", 3); + return 0; } @@ -268,7 +273,7 @@ int BE_init (LCD *Self) bar_add_segment( 0, 0,255, 32); // ASCII 32 = blank bar_add_segment(255,255,255,255); // ASCII 255 = block - BE_clear(); + BE_clear(1); return 0; } diff --git a/Crystalfontz.c b/Crystalfontz.c index e672c84..a1bea63 100644 --- a/Crystalfontz.c +++ b/Crystalfontz.c @@ -1,4 +1,4 @@ -/* $Id: Crystalfontz.c,v 1.9 2003/02/22 07:53:09 reinelt Exp $ +/* $Id: Crystalfontz.c,v 1.10 2003/07/24 04:48:09 reinelt Exp $ * * driver for display modules from Crystalfontz * @@ -19,6 +19,9 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Log: Crystalfontz.c,v $ + * Revision 1.10 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.9 2003/02/22 07:53:09 reinelt * cfg_get(key,defval) * @@ -232,7 +235,7 @@ char cmd_contrast[2]={ CRYFON_CONTRAST_CTRL, }; return 0; } -int cryfonclear() { +int cryfonclear(int full) { memset(Txtbuf,' ',tdim); memset(Barbuf,0,bdim); return 0; diff --git a/Cwlinux.c b/Cwlinux.c index fe89431..6bb9cfa 100644 --- a/Cwlinux.c +++ b/Cwlinux.c @@ -1,4 +1,4 @@ -/* $Id: Cwlinux.c,v 1.8 2003/05/19 05:55:17 reinelt Exp $ +/* $Id: Cwlinux.c,v 1.9 2003/07/24 04:48:09 reinelt Exp $ * * driver for Cwlinux serial display modules * @@ -20,6 +20,9 @@ * * * $Log: Cwlinux.c,v $ + * Revision 1.9 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.8 2003/05/19 05:55:17 reinelt * Cwlinux sleep optimization * @@ -199,7 +202,7 @@ static void CW1602_define_char (int ascii, char *buffer) } -int CW_clear(void) +int CW_clear(int full) { int row, col; @@ -211,17 +214,19 @@ int CW_clear(void) bar_clear(); + if (full) { #if 0 - CW_write("\376X\375",3); + CW_write("\376X\375",3); #else - // for some mysterious reason, we have to sleep after - // the command _and_ after the CMD_END... - usleep(20); - CW_write("\376X",2); - usleep(20); - CW_write("\375",1); - usleep(20); + // for some mysterious reason, we have to sleep after + // the command _and_ after the CMD_END... + usleep(20); + CW_write("\376X",2); + usleep(20); + CW_write("\375",1); + usleep(20); #endif + } return 0; } @@ -308,7 +313,7 @@ int CW_init(LCD * Self) info ("Cwlinux Firmware %d.%d", (int)buffer[0], (int)buffer[1]); #endif - CW_clear(); + CW_clear(1); // auto line wrap off CW_write ("\376D\375", 3); diff --git a/HD44780.c b/HD44780.c index 5367ac2..a35d7b5 100644 --- a/HD44780.c +++ b/HD44780.c @@ -1,4 +1,4 @@ -/* $Id: HD44780.c,v 1.28 2003/04/07 06:02:58 reinelt Exp $ +/* $Id: HD44780.c,v 1.29 2003/07/24 04:48:09 reinelt Exp $ * * driver for display modules based on the HD44780 chip * @@ -20,6 +20,9 @@ * * * $Log: HD44780.c,v $ + * Revision 1.29 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.28 2003/04/07 06:02:58 reinelt * further parallel port abstraction * @@ -247,7 +250,7 @@ static void HD_define_char (int ascii, char *buffer) } -int HD_clear (void) +int HD_clear (int full) { int row, col; @@ -260,8 +263,12 @@ int HD_clear (void) bar_clear(); GPO=0; - HD_setGPO (GPO); // All GPO's off - HD_command (0x01, 1640); // clear display + + if (full) { + HD_command (0x01, 1640); // clear display + HD_setGPO (GPO); // All GPO's off + } + return 0; } @@ -325,7 +332,7 @@ int HD_init (LCD *Self) bar_add_segment( 0, 0,255, 32); // ASCII 32 = blank bar_add_segment(255,255,255,255); // ASCII 255 = block - HD_clear(); + HD_clear(1); return 0; } diff --git a/M50530.c b/M50530.c index 37ffe7c..e079463 100644 --- a/M50530.c +++ b/M50530.c @@ -1,4 +1,4 @@ -/* $Id: M50530.c,v 1.8 2003/04/07 06:02:59 reinelt Exp $ +/* $Id: M50530.c,v 1.9 2003/07/24 04:48:09 reinelt Exp $ * * driver for display modules based on the M50530 chip * @@ -20,6 +20,9 @@ * * * $Log: M50530.c,v $ + * Revision 1.9 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.8 2003/04/07 06:02:59 reinelt * further parallel port abstraction * @@ -145,7 +148,7 @@ static void M5_define_char (int ascii, char *buffer) } -int M5_clear (void) +int M5_clear (int full) { int row, col; @@ -158,9 +161,12 @@ int M5_clear (void) bar_clear(); GPO=0; - M5_setGPO (GPO); // All GPO's off - M5_command (0x0001, 1250); // clear display + if (full) { + M5_command (0x0001, 1250); // clear display + M5_setGPO (GPO); // All GPO's off + } + return 0; } @@ -214,12 +220,11 @@ int M5_init (LCD *Self) M5_command (0x0020, 20); // set display mode M5_command (0x0050, 20); // set entry mode M5_command (0x0030, 20); // set display mode - M5_command (0x0001, 1250); // clear display bar_init(rows, cols, XRES, YRES, CHARS); bar_add_segment(0,0,255,32); // ASCII 32 = blank - M5_clear(); + M5_clear(1); return 0; } diff --git a/MatrixOrbital.c b/MatrixOrbital.c index 60d3525..822fec6 100644 --- a/MatrixOrbital.c +++ b/MatrixOrbital.c @@ -1,4 +1,4 @@ -/* $Id: MatrixOrbital.c,v 1.27 2003/02/22 07:53:10 reinelt Exp $ +/* $Id: MatrixOrbital.c,v 1.28 2003/07/24 04:48:09 reinelt Exp $ * * driver for Matrix Orbital serial display modules * @@ -20,6 +20,9 @@ * * * $Log: MatrixOrbital.c,v $ + * Revision 1.28 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.27 2003/02/22 07:53:10 reinelt * cfg_get(key,defval) * @@ -254,6 +257,8 @@ static int MO_clear (int protocol) bar_clear(); + GPO=0; + switch (protocol) { case 1: MO_write ("\014", 1); // Clear Screen @@ -269,18 +274,17 @@ static int MO_clear (int protocol) break; } - GPO=0; return 0; } -int MO_clear1 (void) +int MO_clear1 (int full) { - return MO_clear(1); + return MO_clear(full?1:0); } -int MO_clear2 (void) +int MO_clear2 (int full) { - return MO_clear(2); + return MO_clear(full?2:0); } diff --git a/PalmPilot.c b/PalmPilot.c index 1fad1ed..9527dfe 100644 --- a/PalmPilot.c +++ b/PalmPilot.c @@ -1,4 +1,4 @@ -/* $Id: PalmPilot.c,v 1.8 2003/02/22 07:53:10 reinelt Exp $ +/* $Id: PalmPilot.c,v 1.9 2003/07/24 04:48:09 reinelt Exp $ * * driver for 3Com Palm Pilot * @@ -20,6 +20,9 @@ * * * $Log: PalmPilot.c,v $ + * Revision 1.9 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.8 2003/02/22 07:53:10 reinelt * cfg_get(key,defval) * @@ -193,12 +196,15 @@ int Palm_flush (void) return 0; } -int Palm_clear (void) +int Palm_clear (int full) { if (pix_clear()!=0) return -1; - return Palm_flush(); + if (full) + return Palm_flush(); + + return 0; } int Palm_init (LCD *Self) diff --git a/Raster.c b/Raster.c index ae55349..0bc6d3d 100644 --- a/Raster.c +++ b/Raster.c @@ -1,4 +1,4 @@ -/* $Id: Raster.c,v 1.21 2003/02/22 07:53:10 reinelt Exp $ +/* $Id: Raster.c,v 1.22 2003/07/24 04:48:09 reinelt Exp $ * * driver for raster formats * @@ -20,6 +20,9 @@ * * * $Log: Raster.c,v $ + * Revision 1.22 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.21 2003/02/22 07:53:10 reinelt * cfg_get(key,defval) * @@ -322,7 +325,7 @@ int PNG_flush (void) #endif -int Raster_clear (void) +int Raster_clear (int full) { if (pix_clear()!=0) return -1; diff --git a/SIN.c b/SIN.c index 432978d..c878fee 100644 --- a/SIN.c +++ b/SIN.c @@ -1,4 +1,4 @@ -/* $Id: SIN.c,v 1.8 2003/02/22 07:53:10 reinelt Exp $ +/* $Id: SIN.c,v 1.9 2003/07/24 04:48:09 reinelt Exp $ * * driver for SIN router displays * @@ -20,6 +20,9 @@ * * * $Log: SIN.c,v $ + * Revision 1.9 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.8 2003/02/22 07:53:10 reinelt * cfg_get(key,defval) * @@ -155,7 +158,7 @@ static void SIN_write (char *string, int len) } } -int SIN_clear (void) +int SIN_clear (int full) { int row, col; @@ -165,7 +168,9 @@ int SIN_clear (void) } } - SIN_write ("\033 ",2); + if (full) + SIN_write ("\033 ",2); + return 0; } diff --git a/Skeleton.c b/Skeleton.c index c37124b..4b3ce96 100644 --- a/Skeleton.c +++ b/Skeleton.c @@ -1,4 +1,4 @@ -/* $Id: Skeleton.c,v 1.7 2001/03/09 13:08:11 ltoetsch Exp $ +/* $Id: Skeleton.c,v 1.8 2003/07/24 04:48:09 reinelt Exp $ * * skeleton driver for new display modules * @@ -20,6 +20,9 @@ * * * $Log: Skeleton.c,v $ + * Revision 1.8 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.7 2001/03/09 13:08:11 ltoetsch * Added Text driver * @@ -71,7 +74,7 @@ static LCD Lcd; -int Skel_clear (void) +int Skel_clear (int full) { return 0; } diff --git a/T6963.c b/T6963.c index e7b7263..22125f3 100644 --- a/T6963.c +++ b/T6963.c @@ -1,4 +1,4 @@ -/* $Id: T6963.c,v 1.6 2003/04/07 06:03:00 reinelt Exp $ +/* $Id: T6963.c,v 1.7 2003/07/24 04:48:09 reinelt Exp $ * * driver for display modules based on the Toshiba T6963 chip * @@ -20,6 +20,9 @@ * * * $Log: T6963.c,v $ + * Revision 1.7 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.6 2003/04/07 06:03:00 reinelt * further parallel port abstraction * @@ -290,23 +293,26 @@ static void T6_memcpy(unsigned short addr, unsigned char *data, int len) } -int T6_clear (void) +int T6_clear (int full) { int rows; - rows=(Lcd.rows>8 ? 8 : Lcd.rows); - - T6_memset(0x0000, 0, Lcd.cols*rows); // clear text area - T6_memset(0x0200, 0, Lcd.cols*rows*8); // clear graphic area - - if (Lcd.rows>8) { - T6_memset(0x8000, 0, Lcd.cols*(Lcd.rows-rows)); // clear text area #2 - T6_memset(0x8200, 0, Lcd.cols*(Lcd.rows-rows)*8); // clear graphic area #2 + if (full) { + + rows=(Lcd.rows>8 ? 8 : Lcd.rows); + + T6_memset(0x0000, 0, Lcd.cols*rows); // clear text area + T6_memset(0x0200, 0, Lcd.cols*rows*8); // clear graphic area + + if (Lcd.rows>8) { + T6_memset(0x8000, 0, Lcd.cols*(Lcd.rows-rows)); // clear text area #2 + T6_memset(0x8200, 0, Lcd.cols*(Lcd.rows-rows)*8); // clear graphic area #2 + } + + memset(Buffer1,0,Lcd.cols*Lcd.rows*Lcd.yres*sizeof(*Buffer1)); + memset(Buffer2,0,Lcd.cols*Lcd.rows*Lcd.yres*sizeof(*Buffer2)); } - - memset(Buffer1,0,Lcd.cols*Lcd.rows*Lcd.yres*sizeof(*Buffer1)); - memset(Buffer2,0,Lcd.cols*Lcd.rows*Lcd.yres*sizeof(*Buffer2)); - + return pix_clear(); } @@ -363,7 +369,7 @@ int T6_init (LCD *Self) T6_write_cmd (0xa0); // Set Cursor Pattern: 1 line cursor T6_send_word (0x21, 0x0000); // Set Cursor Pointer to (0,0) - T6_clear(); + T6_clear(1); return 0; } diff --git a/Text.c b/Text.c index f354ec0..abd6633 100644 --- a/Text.c +++ b/Text.c @@ -1,4 +1,4 @@ -/* $Id: Text.c,v 1.8 2003/02/22 07:53:10 reinelt Exp $ +/* $Id: Text.c,v 1.9 2003/07/24 04:48:09 reinelt Exp $ * * pure ncurses based text driver * @@ -20,6 +20,9 @@ * * * $Log: Text.c,v $ + * Revision 1.9 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.8 2003/02/22 07:53:10 reinelt * cfg_get(key,defval) * @@ -97,10 +100,12 @@ static WINDOW *w, *err_win; static int err_rows; -int Text_clear (void) +int Text_clear (int full) { - werase(w); - box(w, 0, 0); + if (full) { + werase(w); + box(w, 0, 0); + } return 0; } @@ -148,7 +153,7 @@ int Text_init (LCD *Self) wmove(err_win, 1 , 0); wrefresh(err_win); } - Text_clear(); + Text_clear(1); return w ? 0 : -1; } diff --git a/USBLCD.c b/USBLCD.c index a2479e9..6d58c61 100644 --- a/USBLCD.c +++ b/USBLCD.c @@ -1,4 +1,4 @@ -/* $Id: USBLCD.c,v 1.9 2003/04/04 06:01:59 reinelt Exp $ +/* $Id: USBLCD.c,v 1.10 2003/07/24 04:48:09 reinelt Exp $ * * Driver for USBLCD ( see http://www.usblcd.de ) * This Driver is based on HD44780.c @@ -22,6 +22,9 @@ * * * $Log: USBLCD.c,v $ + * Revision 1.10 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.9 2003/04/04 06:01:59 reinelt * new parallel port abstraction scheme * @@ -190,19 +193,20 @@ static void USBLCD_define_char (int ascii, char *buffer) } -int USBLCD_clear (void) +int USBLCD_clear (int full) { int row, col; - + for (row=0; rowclear==NULL) return 0; - return Lcd->clear(); + return Lcd->clear(full); } int lcd_put (int row, int col, char *text) diff --git a/display.h b/display.h index 8d3db89..374ede6 100644 --- a/display.h +++ b/display.h @@ -1,4 +1,4 @@ -/* $Id: display.h,v 1.15 2002/08/19 04:41:20 reinelt Exp $ +/* $Id: display.h,v 1.16 2003/07/24 04:48:09 reinelt Exp $ * * framework for device drivers * @@ -20,6 +20,9 @@ * * * $Log: display.h,v $ + * Revision 1.16 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.15 2002/08/19 04:41:20 reinelt * introduced bar.c, moved bar stuff from display.h to bar.h * @@ -96,7 +99,7 @@ typedef struct LCD { int bars; int gpos; int (*init) (struct LCD *Self); - int (*clear) (void); + int (*clear) (int full); int (*put) (int x, int y, char *text); int (*bar) (int type, int x, int y, int max, int len1, int len2); int (*gpo) (int num, int val); @@ -112,7 +115,7 @@ typedef struct { int lcd_list (void); int lcd_init (char *driver); int lcd_query (int *rows, int *cols, int *xres, int *yres, int *bars, int *gpos); -int lcd_clear (void); +int lcd_clear (int full); int lcd_put (int row, int col, char *text); int lcd_bar (int type, int row, int col, int max, int len1, int len2); int lcd_gpo (int num, int val); diff --git a/lcd4linux.c b/lcd4linux.c index 36e21d4..dee44fd 100644 --- a/lcd4linux.c +++ b/lcd4linux.c @@ -1,4 +1,4 @@ -/* $Id: lcd4linux.c,v 1.38 2003/06/13 05:11:11 reinelt Exp $ +/* $Id: lcd4linux.c,v 1.39 2003/07/24 04:48:09 reinelt Exp $ * * LCD4Linux * @@ -20,6 +20,9 @@ * * * $Log: lcd4linux.c,v $ + * Revision 1.39 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.38 2003/06/13 05:11:11 reinelt * error message cosmetics * @@ -431,11 +434,11 @@ int main (int argc, char *argv[]) tack=atoi(cfg_get("tack","500")); process_init(); - lcd_clear(); + lcd_clear(1); if (!quiet && hello()) { sleep (3); - lcd_clear(); + lcd_clear(1); } debug ("starting main loop"); @@ -450,7 +453,7 @@ int main (int argc, char *argv[]) debug ("leaving main loop"); - lcd_clear(); + lcd_clear(1); if (!quiet) hello(); lcd_quit(); diff --git a/processor.c b/processor.c index 46aed32..a70c798 100644 --- a/processor.c +++ b/processor.c @@ -1,4 +1,4 @@ -/* $Id: processor.c,v 1.34 2003/07/21 06:34:14 reinelt Exp $ +/* $Id: processor.c,v 1.35 2003/07/24 04:48:09 reinelt Exp $ * * main data processing * @@ -20,6 +20,9 @@ * * * $Log: processor.c,v $ + * Revision 1.35 2003/07/24 04:48:09 reinelt + * 'soft clear' needed for virtual rows + * * Revision 1.34 2003/07/21 06:34:14 reinelt * bars on virtual rows fixed * @@ -801,6 +804,7 @@ void process (int smooth) while (offset>=lines) { offset-=lines; } + lcd_clear(0); // soft clear } for (i=1; i<=rows; i++) { -- cgit v1.2.3