aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am1
-rw-r--r--Makefile.in13
-rw-r--r--MatrixOrbital.c9
-rw-r--r--display.c9
-rw-r--r--icon.c97
-rw-r--r--icon.h36
6 files changed, 154 insertions, 11 deletions
diff --git a/Makefile.am b/Makefile.am
index 1be1d54..4b6704a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -30,6 +30,7 @@ udelay.c udelay.h \
display.c display.h \
pixmap.c pixmap.h \
bar.c bar.h \
+icon.c icon.h \
fontmap.c fontmap.h \
exec.c exec.h \
mail2.c \
diff --git a/Makefile.in b/Makefile.in
index 8fe8f6d..5f72b3c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -83,7 +83,7 @@ lcd4linux_LDFLAGS = $(X_LIBS)
lcd4linux_LDADD = @DRIVERS@ @DRVLIBS@
lcd4linux_DEPENDENCIES = @DRIVERS@
-lcd4linux_SOURCES = lcd4linux.c debug.c debug.h cfg.c cfg.h lock.c lock.h pid.c pid.h parser.c parser.h processor.c processor.h system.c system.h isdn.c isdn.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h udelay.c udelay.h display.c display.h pixmap.c pixmap.h bar.c bar.h fontmap.c fontmap.h exec.c exec.h mail2.c socket.c socket.h
+lcd4linux_SOURCES = lcd4linux.c debug.c debug.h cfg.c cfg.h lock.c lock.h pid.c pid.h parser.c parser.h processor.c processor.h system.c system.h isdn.c isdn.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h udelay.c udelay.h display.c display.h pixmap.c pixmap.h bar.c bar.h icon.c icon.h fontmap.c fontmap.h exec.c exec.h mail2.c socket.c socket.h
EXTRA_lcd4linux_SOURCES = parport.c parport.h BeckmannEgle.c Crystalfontz.c Cwlinux.c HD44780.c M50530.c T6963.c USBLCD.c MatrixOrbital.c PalmPilot.c Raster.c SIN.c Skeleton.c XWindow.c Text.c
@@ -118,7 +118,8 @@ PROGRAMS = $(bin_PROGRAMS)
lcd4linux_OBJECTS = lcd4linux.o debug.o cfg.o lock.o pid.o parser.o \
processor.o system.o isdn.o mail.o seti.o battery.o dvb.o filter.o \
-udelay.o display.o pixmap.o bar.o fontmap.o exec.o mail2.o socket.o
+udelay.o display.o pixmap.o bar.o icon.o fontmap.o exec.o mail2.o \
+socket.o
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
@@ -137,10 +138,10 @@ DEP_FILES = .deps/BeckmannEgle.P .deps/Crystalfontz.P .deps/Cwlinux.P \
.deps/Raster.P .deps/SIN.P .deps/Skeleton.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/dvb.P .deps/exec.P .deps/filter.P \
-.deps/fontmap.P .deps/isdn.P .deps/lcd4linux.P .deps/lock.P \
-.deps/mail.P .deps/mail2.P .deps/parport.P .deps/parser.P .deps/pid.P \
-.deps/pixmap.P .deps/processor.P .deps/seti.P .deps/socket.P \
-.deps/system.P .deps/udelay.P
+.deps/fontmap.P .deps/icon.P .deps/isdn.P .deps/lcd4linux.P \
+.deps/lock.P .deps/mail.P .deps/mail2.P .deps/parport.P .deps/parser.P \
+.deps/pid.P .deps/pixmap.P .deps/processor.P .deps/seti.P \
+.deps/socket.P .deps/system.P .deps/udelay.P
SOURCES = $(liblcd4linux_a_SOURCES) $(lcd4linux_SOURCES) $(EXTRA_lcd4linux_SOURCES)
OBJECTS = $(liblcd4linux_a_OBJECTS) $(lcd4linux_OBJECTS)
diff --git a/MatrixOrbital.c b/MatrixOrbital.c
index 36e6961..6848a7e 100644
--- a/MatrixOrbital.c
+++ b/MatrixOrbital.c
@@ -1,4 +1,4 @@
-/* $Id: MatrixOrbital.c,v 1.32 2003/08/22 03:45:08 reinelt Exp $
+/* $Id: MatrixOrbital.c,v 1.33 2003/08/24 04:31:56 reinelt Exp $
*
* driver for Matrix Orbital serial display modules
*
@@ -20,6 +20,9 @@
*
*
* $Log: MatrixOrbital.c,v $
+ * Revision 1.33 2003/08/24 04:31:56 reinelt
+ * icon.c icon.h added
+ *
* Revision 1.32 2003/08/22 03:45:08 reinelt
* bug in parallel port code fixed, more icons stuff
*
@@ -172,6 +175,7 @@
#include "cfg.h"
#include "lock.h"
#include "display.h"
+#include "icon.h"
#include "bar.h"
#define XRES 5
@@ -264,6 +268,7 @@ static int MO_clear (int protocol)
int gpo;
memset (FrameBuffer1, ' ', Lcd.rows*Lcd.cols*sizeof(char));
+ icon_clear();
bar_clear();
GPO=0;
@@ -364,6 +369,8 @@ static int MO_init (LCD *Self, int protocol)
Lcd.icons=Icons;
}
+ icon_init(Lcd.rows, Lcd.cols, XRES, YRES, Icons);
+
bar_init(Lcd.rows, Lcd.cols, XRES, YRES, CHARS-Icons);
bar_add_segment( 0, 0,255, 32); // ASCII 32 = blank
bar_add_segment(255,255,255,255); // ASCII 255 = block
diff --git a/display.c b/display.c
index 84c7ae5..6896928 100644
--- a/display.c
+++ b/display.c
@@ -1,4 +1,4 @@
-/* $Id: display.c,v 1.37 2003/08/17 16:37:39 reinelt Exp $
+/* $Id: display.c,v 1.38 2003/08/24 04:31:56 reinelt Exp $
*
* framework for device drivers
*
@@ -20,6 +20,9 @@
*
*
* $Log: display.c,v $
+ * Revision 1.38 2003/08/24 04:31:56 reinelt
+ * icon.c icon.h added
+ *
* Revision 1.37 2003/08/17 16:37:39 reinelt
* more icon framework
*
@@ -358,9 +361,7 @@ int lcd_icon (int num, int row, int col, unsigned char *bitmap)
if (row<1 || row>Lcd->rows) return -1;
if (col<1 || col>Lcd->cols) return -1;
if (Lcd->icon==NULL) return 0;
-
- // Fixme: ToDo!
- return 0;
+ return Lcd->icon(num-1, row-1, col-1, bitmap);
}
int lcd_gpo (int num, int val)
diff --git a/icon.c b/icon.c
new file mode 100644
index 0000000..ee9440b
--- /dev/null
+++ b/icon.c
@@ -0,0 +1,97 @@
+/* $Id: icon.c,v 1.1 2003/08/24 04:31:56 reinelt Exp $
+ *
+ * generic icon and heartbeat handling
+ *
+ * written 2003 by Michael Reinelt (reinelt@eunet.at)
+ *
+ * This program 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.
+ *
+ * This program 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: icon.c,v $
+ * Revision 1.1 2003/08/24 04:31:56 reinelt
+ * icon.c icon.h added
+ *
+ *
+ */
+
+
+#include <stdlib.h>
+
+#include "icon.h"
+#include "debug.h"
+
+
+static int ROWS=0;
+static int COLS=0;
+static int XRES=0;
+static int YRES=0;
+static int ICONS=0;
+
+static int *Screen;
+
+
+static int icon_get_bitmap (int num)
+{
+ int row, col;
+ char key[15];
+ char *val;
+
+ for (row=1; row<=8; row++) {
+ snprintf (key, sizeof(key), "Icons%d.Bitmap%d", num, row);
+ val=cfg_get(key);
+ }
+}
+
+
+int icon_init (int rows, int cols, int xres, int yres, int icons)
+{
+ if (rows<1 || cols<1)
+ return -1;
+
+ ROWS=rows;
+ COLS=cols;
+ XRES=xres;
+ YRES=yres;
+ ICONS=icons;
+
+ if (Screen) {
+ free (Screen);
+ }
+
+ if ((Screen=malloc(ROWS*COLS*sizeof(*Screen)))==NULL) {
+ return -1;
+ }
+
+ icon_clear();
+
+ return 0;
+}
+
+
+void icon_clear(void)
+{
+ int n;
+
+ for (n=0; n<ROWS*COLS; n++) {
+ Screen[n]=-1;
+ }
+
+}
+
+
+int icon_peek (int row, int col)
+{
+ return Screen[row*COLS+col];
+}
diff --git a/icon.h b/icon.h
new file mode 100644
index 0000000..dd18c73
--- /dev/null
+++ b/icon.h
@@ -0,0 +1,36 @@
+/* $Id: icon.h,v 1.1 2003/08/24 04:31:56 reinelt Exp $
+ *
+ * generic icon and heartbeat handling
+ *
+ * written 2003 by Michael Reinelt (reinelt@eunet.at)
+ *
+ * This program 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.
+ *
+ * This program 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: icon.h,v $
+ * Revision 1.1 2003/08/24 04:31:56 reinelt
+ * icon.c icon.h added
+ *
+ *
+ */
+
+#ifndef _ICON_H_
+#define _ICON_H_
+
+int icon_init (int rows, int cols, int xres, int yres, int icons);
+void icon_clear(void);
+int icon_peek (int row, int col);
+
+#endif