diff options
| -rw-r--r-- | BeckmannEgle.c | 13 | ||||
| -rw-r--r-- | Crystalfontz.c | 7 | ||||
| -rw-r--r-- | Cwlinux.c | 27 | ||||
| -rw-r--r-- | HD44780.c | 17 | ||||
| -rw-r--r-- | M50530.c | 17 | ||||
| -rw-r--r-- | MatrixOrbital.c | 16 | ||||
| -rw-r--r-- | PalmPilot.c | 12 | ||||
| -rw-r--r-- | Raster.c | 7 | ||||
| -rw-r--r-- | SIN.c | 11 | ||||
| -rw-r--r-- | Skeleton.c | 7 | ||||
| -rw-r--r-- | T6963.c | 36 | ||||
| -rw-r--r-- | Text.c | 15 | ||||
| -rw-r--r-- | USBLCD.c | 18 | ||||
| -rw-r--r-- | XWindow.c | 7 | ||||
| -rw-r--r-- | display.c | 9 | ||||
| -rw-r--r-- | display.h | 9 | ||||
| -rw-r--r-- | lcd4linux.c | 11 | ||||
| -rw-r--r-- | 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; @@ -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); @@ -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;  } @@ -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) @@ -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; @@ -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;  } @@ -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;  } @@ -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;  } @@ -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;  } @@ -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; row<Lcd.rows; row++) {      for (col=0; col<Lcd.cols; col++) {        Txt[row][col]='\t';      }    } - +      bar_clear(); - -  USBLCD_command (0x01); // clear display +   +  if (full) +    USBLCD_command (0x01); // clear display    return 0;  } @@ -251,7 +255,7 @@ int USBLCD_init (LCD *Self)    bar_add_segment(  0,  0,255, 32); // ASCII  32 = blank    bar_add_segment(255,255,255,255); // ASCII 255 = block -  USBLCD_clear(); +  USBLCD_clear(1);    USBLCD_send();    return 0; @@ -1,4 +1,4 @@ -/* $Id: XWindow.c,v 1.31 2003/04/12 16:23:10 reinelt Exp $ +/* $Id: XWindow.c,v 1.32 2003/07/24 04:48:09 reinelt Exp $   *   * X11 Driver for LCD4Linux    * @@ -20,6 +20,9 @@   *   *   * $Log: XWindow.c,v $ + * Revision 1.32  2003/07/24 04:48:09  reinelt + * 'soft clear' needed for virtual rows + *   * Revision 1.31  2003/04/12 16:23:10  reinelt   * small glitch in XWindow.c (thanks to Moe Wibble)   * @@ -436,7 +439,7 @@ int xlcdinit(LCD *Self)  } -int xlcdclear()  +int xlcdclear(int full)   {    return pix_clear();  } @@ -1,4 +1,4 @@ -/* $Id: display.c,v 1.34 2002/12/05 19:09:57 reinelt Exp $ +/* $Id: display.c,v 1.35 2003/07/24 04:48:09 reinelt Exp $   *   * framework for device drivers   * @@ -20,6 +20,9 @@   *   *   * $Log: display.c,v $ + * Revision 1.35  2003/07/24 04:48:09  reinelt + * 'soft clear' needed for virtual rows + *   * Revision 1.34  2002/12/05 19:09:57  reinelt   * patches for gcc-3.2   * @@ -314,10 +317,10 @@ int lcd_query (int *rows, int *cols, int *xres, int *yres, int *bars, int *gpos)    return 0;  } -int lcd_clear (void) +int lcd_clear (int full)  {    if (Lcd->clear==NULL) return 0; -  return Lcd->clear(); +  return Lcd->clear(full);  }  int lcd_put (int row, int col, char *text) @@ -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++) {  | 
