diff options
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | Makefile.in | 6 | ||||
-rw-r--r-- | drv_MatrixOrbital.c | 10 | ||||
-rw-r--r-- | drv_generic.c | 140 | ||||
-rw-r--r-- | drv_generic.h | 32 | ||||
-rw-r--r-- | drv_generic_bar.h | 43 | ||||
-rw-r--r-- | drv_generic_text.c (renamed from drv_generic_bar.c) | 223 | ||||
-rw-r--r-- | drv_generic_text.h | 75 | ||||
-rw-r--r-- | hash.c | 7 | ||||
-rw-r--r-- | lcd4linux.conf.sample | 2 |
10 files changed, 288 insertions, 252 deletions
diff --git a/Makefile.am b/Makefile.am index c11e881..180a9e5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -55,7 +55,7 @@ imon.c imon.h \ display.c display.h \ drv.c drv.h \ drv_generic.c drv_generic.h \ -drv_generic_bar.c \ +drv_generic_text.c drv_generic_text.h \ debug.c debug.h \ cfg.c cfg.h \ lock.c lock.h \ diff --git a/Makefile.in b/Makefile.in index 18a2148..609db6c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -106,7 +106,7 @@ lcd4linux_LDADD = @DRIVERS@ @DRVLIBS@ #remove next line for liblcd4linux lcd4linux_DEPENDENCIES = @DRIVERS@ -lcd4linux_SOURCES = lcd4linux.c pid.c pid.h hash.c hash.h parser.c parser.h processor.c processor.h layout.c layout.h timer.c timer.h evaluator.c evaluator.h widget.c widget.h widget_text.c widget_text.h widget_bar.c widget_bar.h plugin.c plugin.h plugin_math.c plugin_string.c plugin_cfg.c plugin_uname.c plugin_loadavg.c plugin_proc_stat.c plugin_cpuinfo.c plugin_meminfo.c plugin_i2c_sensors.c plugin_xmms.c system.c system.h isdn.c isdn.h wifi.c wifi.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h exec.c exec.h expr.c expr.h mail2.c socket.c socket.h imon.c imon.h display.c display.h drv.c drv.h drv_generic.c drv_generic.h drv_generic_bar.c debug.c debug.h cfg.c cfg.h lock.c lock.h pixmap.c pixmap.h bar.c bar.h icon.c icon.h fontmap.c fontmap.h udelay.c udelay.h +lcd4linux_SOURCES = lcd4linux.c pid.c pid.h hash.c hash.h parser.c parser.h processor.c processor.h layout.c layout.h timer.c timer.h evaluator.c evaluator.h widget.c widget.h widget_text.c widget_text.h widget_bar.c widget_bar.h plugin.c plugin.h plugin_math.c plugin_string.c plugin_cfg.c plugin_uname.c plugin_loadavg.c plugin_proc_stat.c plugin_cpuinfo.c plugin_meminfo.c plugin_i2c_sensors.c plugin_xmms.c system.c system.h isdn.c isdn.h wifi.c wifi.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h exec.c exec.h expr.c expr.h mail2.c socket.c socket.h imon.c imon.h display.c display.h drv.c drv.h drv_generic.c drv_generic.h drv_generic_text.c drv_generic_text.h debug.c debug.h cfg.c cfg.h lock.c lock.h pixmap.c pixmap.h bar.c bar.h icon.c icon.h fontmap.c fontmap.h udelay.c udelay.h #liblcd4linux_la_DEPENDENCIES = @DRIVERS@ @@ -158,7 +158,7 @@ isdn.$(OBJEXT) wifi.$(OBJEXT) mail.$(OBJEXT) seti.$(OBJEXT) \ battery.$(OBJEXT) dvb.$(OBJEXT) filter.$(OBJEXT) exec.$(OBJEXT) \ expr.$(OBJEXT) mail2.$(OBJEXT) socket.$(OBJEXT) imon.$(OBJEXT) \ display.$(OBJEXT) drv.$(OBJEXT) drv_generic.$(OBJEXT) \ -drv_generic_bar.$(OBJEXT) debug.$(OBJEXT) cfg.$(OBJEXT) lock.$(OBJEXT) \ +drv_generic_text.$(OBJEXT) debug.$(OBJEXT) cfg.$(OBJEXT) lock.$(OBJEXT) \ pixmap.$(OBJEXT) bar.$(OBJEXT) icon.$(OBJEXT) fontmap.$(OBJEXT) \ udelay.$(OBJEXT) CFLAGS = @CFLAGS@ @@ -181,7 +181,7 @@ DEP_FILES = .deps/BeckmannEgle.P .deps/Crystalfontz.P .deps/Cwlinux.P \ .deps/MilfordInstruments.P .deps/PalmPilot.P .deps/Raster.P .deps/SIN.P \ .deps/T6963.P .deps/Text.P .deps/USBLCD.P .deps/XWindow.P .deps/bar.P \ .deps/battery.P .deps/cfg.P .deps/debug.P .deps/display.P .deps/drv.P \ -.deps/drv_MatrixOrbital.P .deps/drv_generic.P .deps/drv_generic_bar.P \ +.deps/drv_MatrixOrbital.P .deps/drv_generic.P .deps/drv_generic_text.P \ .deps/dvb.P .deps/evaluator.P .deps/exec.P .deps/expr.P .deps/filter.P \ .deps/fontmap.P .deps/hash.P .deps/icon.P .deps/imon.P .deps/isdn.P \ .deps/layout.P .deps/lcd4linux.P .deps/lock.P .deps/mail.P \ diff --git a/drv_MatrixOrbital.c b/drv_MatrixOrbital.c index 1fb70d6..a937ce6 100644 --- a/drv_MatrixOrbital.c +++ b/drv_MatrixOrbital.c @@ -1,4 +1,4 @@ -/* $Id: drv_MatrixOrbital.c,v 1.10 2004/01/20 04:51:39 reinelt Exp $ +/* $Id: drv_MatrixOrbital.c,v 1.11 2004/01/20 05:36:59 reinelt Exp $ * * new style driver for Matrix Orbital serial display modules * @@ -23,6 +23,10 @@ * * * $Log: drv_MatrixOrbital.c,v $ + * Revision 1.11 2004/01/20 05:36:59 reinelt + * moved text-display-specific stuff to drv_generic_text + * moved all the bar stuff from drv_generic_bar to generic_text + * * Revision 1.10 2004/01/20 04:51:39 reinelt * moved generic stuff from drv_MatrixOrbital to drv_generic * implemented new-stylish bars which are nearly finished @@ -93,7 +97,7 @@ #include "widget_bar.h" #include "drv.h" #include "drv_generic.h" -#include "drv_generic_bar.h" +#include "drv_generic_text.h" static char Name[]="MatrixOrbital"; @@ -515,7 +519,7 @@ int drv_MO_quit (void) { info("%s: shutting down.", Name); drv_generic_serial_close(); - drv_generic_quit(); + drv_generic_text_quit(); return (0); } diff --git a/drv_generic.c b/drv_generic.c index 3375254..fbec1e9 100644 --- a/drv_generic.c +++ b/drv_generic.c @@ -1,4 +1,4 @@ -/* $Id: drv_generic.c,v 1.1 2004/01/20 04:51:39 reinelt Exp $ +/* $Id: drv_generic.c,v 1.2 2004/01/20 05:36:59 reinelt Exp $ * * generic driver helper for text- and graphic-based displays * @@ -23,6 +23,10 @@ * * * $Log: drv_generic.c,v $ + * Revision 1.2 2004/01/20 05:36:59 reinelt + * moved text-display-specific stuff to drv_generic_text + * moved all the bar stuff from drv_generic_bar to generic_text + * * Revision 1.1 2004/01/20 04:51:39 reinelt * moved generic stuff from drv_MatrixOrbital to drv_generic * implemented new-stylish bars which are nearly finished @@ -62,15 +66,9 @@ static speed_t Speed; static int Device=-1; -int DROWS, DCOLS; // display size -int LROWS, LCOLS; // layout size -int XRES, YRES; // pixels of one char cell -int CHARS; // number of user-defineable characters - - -char *LayoutFB = NULL; -char *DisplayFB = NULL; - +// **************************************** +// *** generic serial/USB communication *** +// **************************************** int drv_generic_serial_open (char *driver, char *port, speed_t speed) { @@ -168,125 +166,3 @@ int drv_generic_serial_close (void) return 0; } - -void drv_generic_text_resizeFB (int rows, int cols) -{ - char *newFB; - int row, col; - - // Fixme: resize Bar FB too!!!! - - - // Layout FB is large enough - if (rows<=LROWS && cols<=LCOLS) - return; - - // allocate new Layout FB - newFB=malloc(cols*rows*sizeof(char)); - memset (newFB, ' ', rows*cols*sizeof(char)); - - // transfer contents - if (LayoutFB!=NULL) { - for (row=0; row<LROWS; row++) { - for (col=0; col<LCOLS; col++) { - newFB[row*cols+col]=LayoutFB[row*LCOLS+col]; - } - } - free (LayoutFB); - } - - LayoutFB = newFB; - LCOLS = cols; - LROWS = rows; -} - - - -// **************************************** -// *** widget callbacks *** -// **************************************** - - -int drv_generic_text_draw_text (WIDGET *W, int goto_len, - void (*drv_goto)(int row, int col), - void (*drv_write)(char *buffer, int len)) -{ - WIDGET_TEXT *T=W->data; - char *txt, *fb1, *fb2; - int row, col, len, end; - - row=W->row; - col=W->col; - txt=T->buffer; - len=strlen(txt); - end=col+len; - - // maybe grow layout framebuffer - drv_generic_text_resizeFB (row, col+len-1); - - fb1 = LayoutFB + row*LCOLS; - fb2 = DisplayFB + row*DCOLS; - - // transfer new text into layout buffer - memcpy (fb1+col, txt, len); - - for (; col<=end; col++) { - int pos1, pos2, equal; - if (fb1[col]==fb2[col]) continue; - drv_goto (row, col); - for (pos1=col, pos2=pos1, col++, equal=0; col<=end; col++) { - if (fb1[col]==fb2[col]) { - // If we find just one equal byte, we don't break, because this - // would require a goto, which takes several bytes, too. - if (++equal>goto_len) break; - } else { - pos2=col; - equal=0; - } - } - memcpy (fb2+pos1, fb1+pos1, pos2-pos1+1); - drv_write (fb2+pos1, pos2-pos1+1); - } - - return 0; -} - - -// initialize text driver -int drv_generic_text_init (char *Driver) -{ - // init display framebuffer - DisplayFB = (char*)malloc(DCOLS*DROWS*sizeof(char)); - memset (DisplayFB, ' ', DROWS*DCOLS*sizeof(char)); - - // init layout framebuffer - LROWS = 0; - LCOLS = 0; - LayoutFB=NULL; - drv_generic_text_resizeFB (DROWS, DCOLS); - - // sanity check - if (LayoutFB==NULL || DisplayFB==NULL) { - error ("%s: framebuffer could not be allocated: malloc() failed", Driver); - return -1; - } - - return 0; -} - - -// close driver -int drv_generic_quit (void) { - - if (LayoutFB) { - free(LayoutFB); - LayoutFB=NULL; - } - - if (DisplayFB) { - free(DisplayFB); - DisplayFB=NULL; - } - - return (0); -} diff --git a/drv_generic.h b/drv_generic.h index 9194548..52d53d4 100644 --- a/drv_generic.h +++ b/drv_generic.h @@ -1,4 +1,4 @@ -/* $Id: drv_generic.h,v 1.1 2004/01/20 04:51:39 reinelt Exp $ +/* $Id: drv_generic.h,v 1.2 2004/01/20 05:36:59 reinelt Exp $ * * generic driver helper for text- and graphic-based displays * @@ -23,6 +23,10 @@ * * * $Log: drv_generic.h,v $ + * Revision 1.2 2004/01/20 05:36:59 reinelt + * moved text-display-specific stuff to drv_generic_text + * moved all the bar stuff from drv_generic_bar to generic_text + * * Revision 1.1 2004/01/20 04:51:39 reinelt * moved generic stuff from drv_MatrixOrbital to drv_generic * implemented new-stylish bars which are nearly finished @@ -40,35 +44,9 @@ #ifndef _DRV_GENERIC_H_ #define _DRV_GENERIC_H_ - -#include <termios.h> -#include "widget.h" - - -extern int DROWS, DCOLS; // display size -extern int LROWS, LCOLS; // layout size -extern int XRES, YRES; // pixels of one char cell -extern int CHARS; // number of user-defineable characters - - -extern char *LayoutFB; -extern char *DisplayFB; - - int drv_generic_serial_open (char *driver, char *port, speed_t speed); int drv_generic_serial_read (char *string, int len); void drv_generic_serial_write (char *string, int len); int drv_generic_serial_close (void); - -int drv_generic_text_init (char *Name); -void drv_generic_text_resizeFB (int rows, int cols); -int drv_generic_text_draw_text (WIDGET *W, int goto_len, - void (*drv_goto)(int row, int col), - void (*drv_write)(char *buffer, int len)); - - -int drv_generic_quit (void); - - #endif diff --git a/drv_generic_bar.h b/drv_generic_bar.h deleted file mode 100644 index 8bd3866..0000000 --- a/drv_generic_bar.h +++ /dev/null @@ -1,43 +0,0 @@ -/* $Id: drv_generic_bar.h,v 1.1 2004/01/20 04:51:39 reinelt Exp $ - * - * generic driver helper for bar creation - * - * Copyright 1999, 2000 Michael Reinelt <reinelt@eunet.at> - * Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net> - * - * This file is part of LCD4Linux. - * - * LCD4Linux is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * LCD4Linux is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * - * $Log: drv_generic_bar.h,v $ - * Revision 1.1 2004/01/20 04:51:39 reinelt - * moved generic stuff from drv_MatrixOrbital to drv_generic - * implemented new-stylish bars which are nearly finished - * - */ - -#ifndef _DRV_GENERIC_BAR_H_ -#define _DRV_GENERIC_BAR_H_ - -int drv_generic_text_bar_init (void); -void drv_generic_text_bar_clear(void); -void drv_generic_text_bar_add_segment(int val1, int val2, DIRECTION dir, int ascii); -int drv_generic_text_draw_bar (WIDGET *W, int goto_len, - void (*drv_defchar)(int ascii, char *buffer), - void (*drv_goto)(int row, int col), - void (*drv_write)(char *buffer, int len)); - -#endif diff --git a/drv_generic_bar.c b/drv_generic_text.c index 0bf3f7e..d9353fd 100644 --- a/drv_generic_bar.c +++ b/drv_generic_text.c @@ -1,6 +1,6 @@ -/* $Id: drv_generic_bar.c,v 1.1 2004/01/20 04:51:39 reinelt Exp $ +/* $Id: drv_generic_text.c,v 1.1 2004/01/20 05:36:59 reinelt Exp $ * - * generic driver helper for bar creation + * generic driver helper for text-based displays * * Copyright 1999, 2000 Michael Reinelt <reinelt@eunet.at> * Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net> @@ -22,10 +22,10 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * - * $Log: drv_generic_bar.c,v $ - * Revision 1.1 2004/01/20 04:51:39 reinelt - * moved generic stuff from drv_MatrixOrbital to drv_generic - * implemented new-stylish bars which are nearly finished + * $Log: drv_generic_text.c,v $ + * Revision 1.1 2004/01/20 05:36:59 reinelt + * moved text-display-specific stuff to drv_generic_text + * moved all the bar stuff from drv_generic_bar to generic_text * */ @@ -40,13 +40,21 @@ #include <stdlib.h> #include <stdio.h> #include <string.h> +#include <errno.h> +#include <unistd.h> +#include <termios.h> +#include <fcntl.h> #include "debug.h" -#include "drv.h" +#include "cfg.h" +#include "plugin.h" +#include "lock.h" #include "widget.h" +#include "widget_text.h" #include "widget_bar.h" +#include "drv.h" #include "drv_generic.h" -#include "drv_generic_bar.h" +#include "drv_generic_text.h" typedef struct { @@ -65,34 +73,112 @@ typedef struct { } SEGMENT; -static int RES; +static char *Driver; + +int DROWS, DCOLS; // display size +int LROWS, LCOLS; // layout size +int XRES, YRES; // pixels of one char cell +int CHARS; // number of user-defineable characters + +char *LayoutFB = NULL; +char *DisplayFB = NULL; +static BAR *Bar = NULL; static int nSegment=0; static int fSegment=0; static SEGMENT Segment[128]; -static BAR *Bar=NULL; +// Fixme: get rid of me! +static int RES; -int drv_generic_text_bar_init (void) +// **************************************** +// *** generic Framebuffer stuff *** +// **************************************** + +void drv_generic_text_resizeFB (int rows, int cols) { - if (Bar) free (Bar); + char *newFB; + int row, col; - if ((Bar=malloc (LROWS*LCOLS*sizeof(BAR)))==NULL) { - error ("bar buffer allocation failed: out of memory"); - return -1; + // Fixme: resize Bar FB too!!!! + + + // Layout FB is large enough + if (rows<=LROWS && cols<=LCOLS) + return; + + // allocate new Layout FB + newFB=malloc(cols*rows*sizeof(char)); + memset (newFB, ' ', rows*cols*sizeof(char)); + + // transfer contents + if (LayoutFB!=NULL) { + for (row=0; row<LROWS; row++) { + for (col=0; col<LCOLS; col++) { + newFB[row*cols+col]=LayoutFB[row*LCOLS+col]; + } + } + free (LayoutFB); } - nSegment=0; - fSegment=0; + LayoutFB = newFB; + LCOLS = cols; + LROWS = rows; +} + + + +int drv_generic_text_draw_text (WIDGET *W, int goto_len, + void (*drv_goto)(int row, int col), + void (*drv_write)(char *buffer, int len)) +{ + WIDGET_TEXT *T=W->data; + char *txt, *fb1, *fb2; + int row, col, len, end; - drv_generic_text_bar_clear(); + row=W->row; + col=W->col; + txt=T->buffer; + len=strlen(txt); + end=col+len; + + // maybe grow layout framebuffer + drv_generic_text_resizeFB (row, col+len-1); + + fb1 = LayoutFB + row*LCOLS; + fb2 = DisplayFB + row*DCOLS; + + // transfer new text into layout buffer + memcpy (fb1+col, txt, len); + + for (; col<=end; col++) { + int pos1, pos2, equal; + if (fb1[col]==fb2[col]) continue; + drv_goto (row, col); + for (pos1=col, pos2=pos1, col++, equal=0; col<=end; col++) { + if (fb1[col]==fb2[col]) { + // If we find just one equal byte, we don't break, because this + // would require a goto, which takes several bytes, too. + if (++equal>goto_len) break; + } else { + pos2=col; + equal=0; + } + } + memcpy (fb2+pos1, fb1+pos1, pos2-pos1+1); + drv_write (fb2+pos1, pos2-pos1+1); + } return 0; } -void drv_generic_text_bar_clear(void) +// **************************************** +// *** generic bar handling *** +// **************************************** + +static void drv_generic_text_bar_clear(void) { int i; @@ -109,19 +195,6 @@ void drv_generic_text_bar_clear(void) } -void drv_generic_text_bar_add_segment(int val1, int val2, DIRECTION dir, int ascii) -{ - Segment[fSegment].val1=val1; - Segment[fSegment].val2=val2; - Segment[fSegment].dir=dir; - Segment[fSegment].used=0; - Segment[fSegment].ascii=ascii; - - fSegment++; - nSegment=fSegment; -} - - static void drv_generic_text_bar_create_bar (int row, int col, DIRECTION dir, int len, int val1, int val2) { int rev=0; @@ -296,7 +369,7 @@ static void drv_generic_text_bar_pack_segments (void) } } -#if 1 +#if 0 debug ("pack_segment: n=%d i=%d j=%d min=%d", nSegment, pack_i, pack_j, min); debug ("Pack_segment: i1=%d i2=%d j1=%d j2=%d\n", Segment[pack_i].val1, Segment[pack_i].val2, @@ -335,13 +408,13 @@ static void drv_generic_text_bar_define_chars (void(*defchar)(int ascii, char *m } Segment[i].ascii=c; switch (Segment[i].dir) { - case DIR_EAST: + case DIR_WEST: for (j=0; j<4; j++) { buffer[j ]=(1<<Segment[i].val1)-1; buffer[j+4]=(1<<Segment[i].val2)-1; } break; - case DIR_WEST: + case DIR_EAST: for (j=0; j<4; j++) { buffer[j ]=255<<(XRES-Segment[i].val1); buffer[j+4]=255<<(XRES-Segment[i].val2); @@ -457,15 +530,83 @@ int drv_generic_text_draw_bar (WIDGET *W, int goto_len, } -int drv_generic_text_bar_peek (int row, int col) + +// **************************************** +// *** generic init/quit *** +// **************************************** + +int drv_generic_text_init (char *driver) { - int s; - s=Bar[row*LCOLS+col].segment; - if (s==-1) { + Driver=driver; + + // init display framebuffer + DisplayFB = (char*)malloc(DCOLS*DROWS*sizeof(char)); + memset (DisplayFB, ' ', DROWS*DCOLS*sizeof(char)); + + // init layout framebuffer + LROWS = 0; + LCOLS = 0; + LayoutFB=NULL; + drv_generic_text_resizeFB (DROWS, DCOLS); + + // sanity check + if (LayoutFB==NULL || DisplayFB==NULL) { + error ("%s: framebuffer could not be allocated: malloc() failed", Driver); return -1; - } else { - return Segment[s].ascii; } + + return 0; } + +int drv_generic_text_bar_init (void) +{ + if (Bar) free (Bar); + + if ((Bar=malloc (LROWS*LCOLS*sizeof(BAR)))==NULL) { + error ("bar buffer allocation failed: out of memory"); + return -1; + } + + nSegment=0; + fSegment=0; + + drv_generic_text_bar_clear(); + + return 0; +} + + +void drv_generic_text_bar_add_segment(int val1, int val2, DIRECTION dir, int ascii) +{ + Segment[fSegment].val1=val1; + Segment[fSegment].val2=val2; + Segment[fSegment].dir=dir; + Segment[fSegment].used=0; + Segment[fSegment].ascii=ascii; + + fSegment++; + nSegment=fSegment; +} + + +int drv_generic_text_quit (void) { + + if (LayoutFB) { + free(LayoutFB); + LayoutFB=NULL; + } + + if (DisplayFB) { + free(DisplayFB); + DisplayFB=NULL; + } + + if (Bar) { + free (Bar); + Bar=NULL; + } + + return (0); +} diff --git a/drv_generic_text.h b/drv_generic_text.h new file mode 100644 index 0000000..f742427 --- /dev/null +++ b/drv_generic_text.h @@ -0,0 +1,75 @@ +/* $Id: drv_generic_text.h,v 1.1 2004/01/20 05:36:59 reinelt Exp $ + * + * generic driver helper for text-based displays + * + * Copyright 1999, 2000 Michael Reinelt <reinelt@eunet.at> + * Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net> + * + * This file is part of LCD4Linux. + * + * LCD4Linux is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * LCD4Linux is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * + * $Log: drv_generic_text.h,v $ + * Revision 1.1 2004/01/20 05:36:59 reinelt + * moved text-display-specific stuff to drv_generic_text + * moved all the bar stuff from drv_generic_bar to generic_text + * + */ + +/* + * + * exported fuctions: + * + * Fixme: document me! + * + */ + +#ifndef _DRV_GENERIC_TEXT_H_ +#define _DRV_GENERIC_TEXT_H_ + + +#include <termios.h> +#include "widget.h" + + +extern int DROWS, DCOLS; // display size +extern int LROWS, LCOLS; // layout size +extern int XRES, YRES; // pixels of one char cell +extern int CHARS; // number of user-defineable characters + + +extern char *LayoutFB; +extern char *DisplayFB; + + +int drv_generic_text_init (char *Name); +void drv_generic_text_resizeFB (int rows, int cols); +int drv_generic_text_draw_text (WIDGET *W, int goto_len, + void (*drv_goto)(int row, int col), + void (*drv_write)(char *buffer, int len)); + +int drv_generic_text_bar_init (void); +void drv_generic_text_bar_add_segment (int val1, int val2, DIRECTION dir, int ascii); +int drv_generic_text_draw_bar (WIDGET *W, int goto_len, + void (*drv_defchar)(int ascii, char *buffer), + void (*drv_goto)(int row, int col), + void (*drv_write)(char *buffer, int len)); + +int drv_generic_text_quit (void); + + + +#endif @@ -1,4 +1,4 @@ -/* $Id: hash.c,v 1.5 2004/01/18 09:01:45 reinelt Exp $ +/* $Id: hash.c,v 1.6 2004/01/20 05:36:59 reinelt Exp $ * * hashes (associative arrays) * @@ -23,6 +23,10 @@ * * * $Log: hash.c,v $ + * Revision 1.6 2004/01/20 05:36:59 reinelt + * moved text-display-specific stuff to drv_generic_text + * moved all the bar stuff from drv_generic_bar to generic_text + * * Revision 1.5 2004/01/18 09:01:45 reinelt * /proc/stat parsing finished * @@ -221,6 +225,7 @@ double hash_get_filter (HASH *Hash, char *key, int delay) for (i=1; i<FILTER_SLOTS; i++) { if (Item->Slot[i].time.tv_sec==0) break; if (timercmp(&Item->Slot[i].time, &end, <)) break; + dt = (now.tv_sec - Item->Slot[i].time.tv_sec) + (now.tv_usec - Item->Slot[i].time.tv_usec)/1000000.0; } // empty slot => use the one before diff --git a/lcd4linux.conf.sample b/lcd4linux.conf.sample index b3ecb18..67afb9c 100644 --- a/lcd4linux.conf.sample +++ b/lcd4linux.conf.sample @@ -76,7 +76,7 @@ Layout Default { } Row3 { Col1 'Busy' - Col10 'BusyBar' + Col11 'BusyBar' } Row4 { Col1 'Load' |