diff -Nur lcdproc-CVS-current-20050115_orig/acinclude.m4 lcdproc-CVS-current-20050115/acinclude.m4 --- lcdproc-CVS-current-20050115_orig/acinclude.m4 2004-10-10 09:00:16.000000000 +0200 +++ lcdproc-CVS-current-20050115/acinclude.m4 2005-01-15 17:29:28.000000000 +0100 @@ -7,14 +7,14 @@ [ Possible choices are:] [ mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,] [ hd44780,joy,irman,lirc,bayrad,glk,,mtc_s16209x] - [ stv5730,sed1330,sed1520,svga,lcdm001,t6963] + [ stv5730,sed1330,sed1520,sed1530,svga,lcdm001,t6963] [ lcterm,icp_a106,ms6931,iowarrior] [ \"all\" compiles all drivers], drivers="$enableval", drivers=[lcdm001,mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,bayrad,glk]) if test "$drivers" = "all"; then - drivers=[mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,mtc_s16209x,hd44780,joy,irman,lirc,bayrad,glk,stv5730,sed1330,sed1520,svga,lcdm001,t6963,lcterm,icp_a106,ms6931,iowarrior] + drivers=[mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,mtc_s16209x,hd44780,joy,irman,lirc,bayrad,glk,stv5730,sed1330,sed1520,sed1530,svga,lcdm001,t6963,lcterm,icp_a106,ms6931,iowarrior] fi drivers=`echo $drivers | sed 's/,/ /g'` @@ -197,6 +197,15 @@ AC_MSG_WARN([The sed1520 driver needs a parallel port.]) fi ;; + sed1530) + if test "$ac_cv_port_have_lpt" = yes + then + DRIVERS="$DRIVERS sed1530${SO}" + actdrivers=["$actdrivers sed1530"] + else + AC_MSG_WARN([The sed1530 driver needs a parallel port.]) + fi + ;; stv5730) if test "$ac_cv_port_have_lpt" = yes then diff -Nur lcdproc-CVS-current-20050115_orig/aclocal.m4 lcdproc-CVS-current-20050115/aclocal.m4 --- lcdproc-CVS-current-20050115_orig/aclocal.m4 2005-01-15 09:00:28.000000000 +0100 +++ lcdproc-CVS-current-20050115/aclocal.m4 2005-01-15 17:30:20.000000000 +0100 @@ -20,14 +20,14 @@ [ Possible choices are:] [ mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,] [ hd44780,joy,irman,lirc,bayrad,glk,,mtc_s16209x] - [ stv5730,sed1330,sed1520,svga,lcdm001,t6963] + [ stv5730,sed1330,sed1520,sed1530,svga,lcdm001,t6963] [ lcterm,icp_a106,ms6931,iowarrior] [ \"all\" compiles all drivers], drivers="$enableval", drivers=[lcdm001,mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,bayrad,glk]) if test "$drivers" = "all"; then - drivers=[mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,mtc_s16209x,hd44780,joy,irman,lirc,bayrad,glk,stv5730,sed1330,sed1520,svga,lcdm001,t6963,lcterm,icp_a106,ms6931,iowarrior] + drivers=[mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,mtc_s16209x,hd44780,joy,irman,lirc,bayrad,glk,stv5730,sed1330,sed1520,sed1530,svga,lcdm001,t6963,lcterm,icp_a106,ms6931,iowarrior] fi drivers=`echo $drivers | sed 's/,/ /g'` @@ -210,6 +210,15 @@ AC_MSG_WARN([The sed1520 driver needs a parallel port.]) fi ;; + sed1530) + if test "$ac_cv_port_have_lpt" = yes + then + DRIVERS="$DRIVERS sed1530${SO}" + actdrivers=["$actdrivers sed1530"] + else + AC_MSG_WARN([The sed1530 driver needs a parallel port.]) + fi + ;; stv5730) if test "$ac_cv_port_have_lpt" = yes then diff -Nur lcdproc-CVS-current-20050115_orig/configure lcdproc-CVS-current-20050115/configure --- lcdproc-CVS-current-20050115_orig/configure 2005-01-15 09:00:36.000000000 +0100 +++ lcdproc-CVS-current-20050115/configure 2005-01-15 17:30:24.000000000 +0100 @@ -860,7 +860,7 @@ Possible choices are: mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216, hd44780,joy,irman,lirc,bayrad,glk,,mtc_s16209x - stv5730,sed1330,sed1520,svga,lcdm001,t6963 + stv5730,sed1330,sed1520,sed1530,svga,lcdm001,t6963 lcterm,icp_a106,ms6931,iowarrior \"all\" compiles all drivers --enable-ldap compile with LDAP support. @@ -9054,7 +9113,7 @@ fi; if test "$drivers" = "all"; then - drivers=mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,mtc_s16209x,hd44780,joy,irman,lirc,bayrad,glk,stv5730,sed1330,sed1520,svga,lcdm001,t6963,lcterm,icp_a106,ms6931,iowarrior + drivers=mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,mtc_s16209x,hd44780,joy,irman,lirc,bayrad,glk,stv5730,sed1330,sed1520,sed1530,svga,lcdm001,t6963,lcterm,icp_a106,ms6931,iowarrior fi drivers=`echo $drivers | sed 's/,/ /g'` @@ -10307,6 +10378,16 @@ echo "$as_me: WARNING: The sed1520 driver needs a parallel port." >&2;} fi ;; + sed1530) + if test "$ac_cv_port_have_lpt" = yes + then + DRIVERS="$DRIVERS sed1530${SO}" + actdrivers="$actdrivers sed1530" + else + { echo "$as_me:$LINENO: WARNING: The sed1530 driver needs a parallel port." >&5 +echo "$as_me: WARNING: The sed1530 driver needs a parallel port." >&2;} + fi + ;; stv5730) if test "$ac_cv_port_have_lpt" = yes then diff -Nur lcdproc-CVS-current-20050115_orig/LCDd.conf lcdproc-CVS-current-20050115/LCDd.conf --- lcdproc-CVS-current-20050115_orig/LCDd.conf 2004-10-03 09:00:12.000000000 +0200 +++ lcdproc-CVS-current-20050115/LCDd.conf 2005-01-15 17:26:41.000000000 +0100 @@ -504,6 +504,16 @@ +[sed1530] +# Seiko Epson 1530 driver win serial over parallel mode + +Arguments="-p 0x278" + +# -p n --port n Select the output device to use port n +# -h --help Show this help information + + + [stv5730] # stv5730 driver diff -Nur lcdproc-CVS-current-20050115_orig/server/drivers/Makefile.am lcdproc-CVS-current-20050115/server/drivers/Makefile.am --- lcdproc-CVS-current-20050115_orig/server/drivers/Makefile.am 2004-10-24 09:00:43.000000000 +0200 +++ lcdproc-CVS-current-20050115/server/drivers/Makefile.am 2005-01-15 17:25:21.000000000 +0100 @@ -18,7 +18,7 @@ LIBS = pkglib_PROGRAMS = @DRIVERS@ -EXTRA_PROGRAMS = bayrad CFontz CFontz633 curses CwLnx glk hd44780 irman icp_a106 joy lb216 mtc_s16209x lcdm001 lcterm lirc MtxOrb sed1330 sed1520 stv5730 svga t6963 text wirz_sli ms6931 IOWarrior +EXTRA_PROGRAMS = bayrad CFontz CFontz633 curses CwLnx glk hd44780 irman icp_a106 joy lb216 mtc_s16209x lcdm001 lcterm lirc MtxOrb sed1330 sed1520 sed1530 stv5730 svga t6963 text wirz_sli ms6931 IOWarrior noinst_LIBRARIES = libLCD.a IOWarrior_CFLAGS = @libusb_cflags@ @@ -61,6 +61,7 @@ MtxOrb_SOURCES = lcd.h MtxOrb.c MtxOrb.h report.h bigfont.h sed1330_SOURCES = lcd.h sed1330.h sed1330.c port.h lpt-port.h timing.h report.h sed1520_SOURCES = lcd.h sed1520.c sed1520.h sed1520fm.c sed1520fm.h port.h report.h +sed1530_SOURCES = lcd.h sed1530.c sed1530.h sed1530fm.c sed1530fm.h port.h report.h stv5730_SOURCES = lcd.h stv5730.c stv5730.h report.h svga_SOURCES = lcd.h svgalib_drv.c svgalib_drv.h report.h t6963_SOURCES = lcd.h t6963.c t6963.h t6963_font.h report.h diff -Nur lcdproc-CVS-current-20050115_orig/server/drivers/Makefile.in lcdproc-CVS-current-20050115/server/drivers/Makefile.in --- lcdproc-CVS-current-20050115_orig/server/drivers/Makefile.in 2005-01-15 09:00:35.000000000 +0100 +++ lcdproc-CVS-current-20050115/server/drivers/Makefile.in 2005-01-15 17:30:50.000000000 +0100 @@ -137,7 +137,7 @@ AM_LDFLAGS = @LDSHARED@ pkglib_PROGRAMS = @DRIVERS@ -EXTRA_PROGRAMS = bayrad CFontz CFontz633 curses CwLnx glk hd44780 irman icp_a106 joy lb216 mtc_s16209x lcdm001 lcterm lirc MtxOrb sed1330 sed1520 stv5730 svga t6963 text wirz_sli ms6931 IOWarrior +EXTRA_PROGRAMS = bayrad CFontz CFontz633 curses CwLnx glk hd44780 irman icp_a106 joy lb216 mtc_s16209x lcdm001 lcterm lirc MtxOrb sed1330 sed1520 sed1530 stv5730 svga t6963 text wirz_sli ms6931 IOWarrior noinst_LIBRARIES = libLCD.a IOWarrior_CFLAGS = @libusb_cflags@ @@ -180,6 +180,7 @@ MtxOrb_SOURCES = lcd.h MtxOrb.c MtxOrb.h report.h bigfont.h sed1330_SOURCES = lcd.h sed1330.h sed1330.c port.h lpt-port.h timing.h report.h sed1520_SOURCES = lcd.h sed1520.c sed1520.h sed1520fm.c sed1520fm.h port.h report.h +sed1530_SOURCES = lcd.h sed1530.c sed1530.h sed1530fm.c sed1530fm.h port.h report.h stv5730_SOURCES = lcd.h stv5730.c stv5730.h report.h svga_SOURCES = lcd.h svgalib_drv.c svgalib_drv.h report.h t6963_SOURCES = lcd.h t6963.c t6963.h t6963_font.h report.h @@ -204,8 +205,9 @@ irman$(EXEEXT) icp_a106$(EXEEXT) joy$(EXEEXT) lb216$(EXEEXT) \ mtc_s16209x$(EXEEXT) lcdm001$(EXEEXT) lcterm$(EXEEXT) \ lirc$(EXEEXT) MtxOrb$(EXEEXT) sed1330$(EXEEXT) sed1520$(EXEEXT) \ - stv5730$(EXEEXT) svga$(EXEEXT) t6963$(EXEEXT) text$(EXEEXT) \ - wirz_sli$(EXEEXT) ms6931$(EXEEXT) IOWarrior$(EXEEXT) + sed1530$(EXEEXT) stv5730$(EXEEXT) svga$(EXEEXT) t6963$(EXEEXT) \ + text$(EXEEXT) wirz_sli$(EXEEXT) ms6931$(EXEEXT) \ + IOWarrior$(EXEEXT) pkglib_PROGRAMS = @DRIVERS@ PROGRAMS = $(pkglib_PROGRAMS) @@ -298,6 +300,11 @@ sed1520_LDADD = $(LDADD) sed1520_DEPENDENCIES = sed1520_LDFLAGS = +am_sed1530_OBJECTS = sed1530.$(OBJEXT) sed1530fm.$(OBJEXT) +sed1530_OBJECTS = $(am_sed1530_OBJECTS) +sed1530_LDADD = $(LDADD) +sed1530_DEPENDENCIES = +sed1530_LDFLAGS = am_stv5730_OBJECTS = stv5730.$(OBJEXT) stv5730_OBJECTS = $(am_stv5730_OBJECTS) stv5730_LDADD = $(LDADD) @@ -345,7 +352,8 @@ @AMDEP_TRUE@ ./$(DEPDIR)/lcterm.Po ./$(DEPDIR)/lircin.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/ms6931.Po ./$(DEPDIR)/mtc_s16209x.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/sed1330.Po ./$(DEPDIR)/sed1520.Po \ -@AMDEP_TRUE@ ./$(DEPDIR)/sed1520fm.Po ./$(DEPDIR)/stv5730.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/sed1520fm.Po ./$(DEPDIR)/sed1530.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/sed1530fm.Po ./$(DEPDIR)/stv5730.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/svgalib_drv.Po ./$(DEPDIR)/t6963.Po \ @AMDEP_TRUE@ ./$(DEPDIR)/text.Po ./$(DEPDIR)/wirz-sli.Po COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ @@ -359,11 +367,11 @@ $(icp_a106_SOURCES) $(irman_SOURCES) $(joy_SOURCES) \ $(lb216_SOURCES) $(lcdm001_SOURCES) $(lcterm_SOURCES) \ $(lirc_SOURCES) $(ms6931_SOURCES) $(mtc_s16209x_SOURCES) \ - $(sed1330_SOURCES) $(sed1520_SOURCES) $(stv5730_SOURCES) \ - $(svga_SOURCES) $(t6963_SOURCES) $(text_SOURCES) \ - $(wirz_sli_SOURCES) + $(sed1330_SOURCES) $(sed1520_SOURCES) $(sed1530_SOURCES) \ + $(stv5730_SOURCES) $(svga_SOURCES) $(t6963_SOURCES) \ + $(text_SOURCES) $(wirz_sli_SOURCES) DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am -SOURCES = $(libLCD_a_SOURCES) $(CFontz_SOURCES) $(CFontz633_SOURCES) $(CwLnx_SOURCES) $(IOWarrior_SOURCES) $(MtxOrb_SOURCES) $(bayrad_SOURCES) $(curses_SOURCES) $(glk_SOURCES) $(hd44780_SOURCES) $(EXTRA_hd44780_SOURCES) $(icp_a106_SOURCES) $(irman_SOURCES) $(joy_SOURCES) $(lb216_SOURCES) $(lcdm001_SOURCES) $(lcterm_SOURCES) $(lirc_SOURCES) $(ms6931_SOURCES) $(mtc_s16209x_SOURCES) $(sed1330_SOURCES) $(sed1520_SOURCES) $(stv5730_SOURCES) $(svga_SOURCES) $(t6963_SOURCES) $(text_SOURCES) $(wirz_sli_SOURCES) +SOURCES = $(libLCD_a_SOURCES) $(CFontz_SOURCES) $(CFontz633_SOURCES) $(CwLnx_SOURCES) $(IOWarrior_SOURCES) $(MtxOrb_SOURCES) $(bayrad_SOURCES) $(curses_SOURCES) $(glk_SOURCES) $(hd44780_SOURCES) $(EXTRA_hd44780_SOURCES) $(icp_a106_SOURCES) $(irman_SOURCES) $(joy_SOURCES) $(lb216_SOURCES) $(lcdm001_SOURCES) $(lcterm_SOURCES) $(lirc_SOURCES) $(ms6931_SOURCES) $(mtc_s16209x_SOURCES) $(sed1330_SOURCES) $(sed1520_SOURCES) $(sed1530_SOURCES) $(stv5730_SOURCES) $(svga_SOURCES) $(t6963_SOURCES) $(text_SOURCES) $(wirz_sli_SOURCES) all: all-am @@ -467,6 +475,9 @@ sed1520$(EXEEXT): $(sed1520_OBJECTS) $(sed1520_DEPENDENCIES) @rm -f sed1520$(EXEEXT) $(LINK) $(sed1520_LDFLAGS) $(sed1520_OBJECTS) $(sed1520_LDADD) $(LIBS) +sed1530$(EXEEXT): $(sed1530_OBJECTS) $(sed1530_DEPENDENCIES) + @rm -f sed1530$(EXEEXT) + $(LINK) $(sed1530_LDFLAGS) $(sed1530_OBJECTS) $(sed1530_LDADD) $(LIBS) stv5730$(EXEEXT): $(stv5730_OBJECTS) $(stv5730_DEPENDENCIES) @rm -f stv5730$(EXEEXT) $(LINK) $(stv5730_LDFLAGS) $(stv5730_OBJECTS) $(stv5730_LDADD) $(LIBS) @@ -520,6 +531,8 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sed1330.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sed1520.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sed1520fm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sed1530.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sed1530fm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stv5730.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svgalib_drv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t6963.Po@am__quote@ diff -Nur lcdproc-CVS-current-20050115_orig/server/drivers/sed1520.c lcdproc-CVS-current-20050115/server/drivers/sed1520.c --- lcdproc-CVS-current-20050115_orig/server/drivers/sed1520.c 2002-05-23 20:03:39.000000000 +0200 +++ lcdproc-CVS-current-20050115/server/drivers/sed1520.c 2005-01-15 21:12:06.159894143 +0100 @@ -268,6 +268,24 @@ } ///////////////////////////////////////////////////////////////// +// Returns the display width +// +MODULE_EXPORT int +sed1520_cellwidth (Driver *drvthis) +{ + return cellwidth; +} + +///////////////////////////////////////////////////////////////// +// Returns the display height +// +MODULE_EXPORT int +sed1520_cellheight (Driver *drvthis) +{ + return cellheight; +} + +///////////////////////////////////////////////////////////////// // Clears the LCD screen // MODULE_EXPORT void diff -Nur lcdproc-CVS-current-20050115_orig/server/drivers/sed1530.c lcdproc-CVS-current-20050115/server/drivers/sed1530.c --- lcdproc-CVS-current-20050115_orig/server/drivers/sed1530.c 1970-01-01 01:00:00.000000000 +0100 +++ lcdproc-CVS-current-20050115/server/drivers/sed1530.c 2005-01-15 19:45:23.000000000 +0100 @@ -0,0 +1,615 @@ +////////////////////////////////////////////////////////////////////////// +// This is a driver for 96x32 pixel graphic displays based on the // +// SED1530 Controller connected to the parallel port. Check // +// www.absorb.it/hacked/sed1530 // +// for more information // +// This Controller has no built in character generator. Therefore all // +// fonts and pixels are generated by this driver. // +// // +// This driver is based on sed1530.c Thanks to Robin Adams for his // +// work. My part was mainly to copy and paste the right codes and // +// changed the data transfer to serial over parallel. // +// The HD44780 font in sed1530fm.c is copyd from sed1530fm.c and was // +// originated by Michael Reinelt / lcd4linux and is (C) 2000 by him. // +// // +// [sed1530.c 2001,2002 Robin Adams ( robin@adams-online.de )] // +// sed1530.c 2005 Rene Ejury (just at absorb.it) // +// This driver is released under the GPL. See file COPYING in this // +// package for further details. // +////////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include "port.h" +#include "timing.h" +#define uPause timing_uPause + +#include "sed1530fm.h" + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifndef LPTPORT +#define LPTPORT 0x378 +#endif + +///////////////////////////////////////////////////////////////// +// serial mode: +// the board made by pollin electronic uses serial transfer +// over parallel port +// lpt lcd +// DATA0 SI serial data input +// DATA1 SCL serial clock input +// DATA2 A0 0 - control data / 1 - display data +// DATA3 CS chipselect / enable input/output with 1 == CS2 +// DATA4 /CS chipselect / enable input/output with 0 == CS1 +// DATA5 /RES 0 - reset +// +// serial data is read when SCl goes high; chipUNselect resets shift register + +#define SI 0x01 +#define SCL 0x02 +#define A0 0x04 +#define CS2 0x08 +#define CS1 0x10 +#define RES 0x20 + +#include "shared/str.h" +#include "lcd.h" +#include "sed1530.h" + + +unsigned int sed1530_lptport = LPTPORT; +char *framebuf = NULL; +int width = LCD_DEFAULT_WIDTH; +int height = LCD_DEFAULT_HEIGHT; +int cellwidth = LCD_DEFAULT_CELLWIDTH; +int cellheight = LCD_DEFAULT_CELLHEIGHT; + + +// Vars for the server core +MODULE_EXPORT char *api_version = API_VERSION; +MODULE_EXPORT int stay_in_foreground = 0; +MODULE_EXPORT int supports_multiple = 0; +MODULE_EXPORT char *symbol_prefix = "sed1530_"; + +void +sed1530_write_byte (int value) +{ + port_out ( sed1530_lptport, (value)); + port_out ( sed1530_lptport, (value + SCL)); +} + + +///////////////////////////////////////////////////////////////// +// writes command value to the sed1530 +// +void +sed1530_writecommand (int value) +{ + int i; + for (i = 7; i >= 0; i--) + sed1530_write_byte(((value >>i)&0x01) + CS2 + RES); +} + +///////////////////////////////////////////////////////////////// +// writes data values (for the lower two lines) to the sed1530 +// +void +sed1530_writedata (int value) +{ + int i; + for (i = 7; i >= 0; i--) + sed1530_write_byte(((value >>i)&0x01) + A0 + CS2 + RES); +} + +///////////////////////////////////////////////////////////////// +// writes data value (for the upper two lines) to the sed1530 +// +void +sed1530_writedata_rev (int value) +{ + int i; + for (i = 0; i <= 7; i++) + sed1530_write_byte(((value >>i)&0x01) + A0 + CS2 + RES); +} + +///////////////////////////////////////////////////////////////// +// selects a page (=row) on sed1530 +// +void +sed1530_selectpage (int page) +{ + int value = 0xB0 + (page & 3); + sed1530_writecommand (value); +} + +///////////////////////////////////////////////////////////////// +// selects a column on the sed1530 +// +void +sed1530_selectcolumn (int column) +{ + sed1530_writecommand (column & 0x0F); + sed1530_writecommand (0x10 + ((column & 0xF0)>>4)); +} + +///////////////////////////////////////////////////////////////// +// draws char z from fontmap_1530 to the framebuffer at position +// x,y. These are zero-based textmode positions. +// The fontmap_1530 is stored in rows while the framebuffer is stored +// in columns, so we need a little conversion. +// +void +sed1530_drawchar2fb (int x, int y, unsigned char z) +{ + int i, j, k; + + if (x < 0 || x > 19 || y < 0 || y > 3) + return; + + for (i = 6; i > 0; i--) + { + k = 0; + for (j = 0; j < 7; j++) + { + k = k + + (((fontmap_1530[(int) z][j] * 2) & (1 << i)) / (1 << i)) * + (1 << j); + } + framebuf[(y * 96) + (x * 6) + (6 - i)] = k; + } + +} + +///////////////////////////////////////////////////////////////// +// This initialises the stuff. We support supplying port as +// a command line argument. +// +MODULE_EXPORT int +sed1530_init (Driver *drvthis, char *args) +{ + char *argv[64], *str; + int argc, i; + + if (args) + if ((str = (char *) malloc (strlen (args) + 1))) + strcpy (str, args); + else + { + fprintf (stderr, "Error mallocing\n"); + return -1; + } + else + str = NULL; + + argc = get_args (argv, args, 64); + for (i = 0; i < argc; i++) + { + if (0 == strcmp (argv[i], "-p") + || 0 == strcmp (argv[i], "--port\0")) + { + if (i + 1 >= argc) + { + fprintf (stderr, + "sed1530_init: %s requires an argument\n", + argv[i]); + return -1; + } + else + { + int myport; + if (sscanf (argv[i + 1], "%i", &myport) != 1) + { + fprintf (stderr, + "sed1530_init: Couldn't read port address -" + " using default value 0x%x\n", sed1530_lptport); + return -1; + } + else + { + sed1530_lptport = myport; + ++i; + } + } + } + else if (0 == strcmp (argv[i], "-h") + || 0 == strcmp (argv[i], "--help")) + { + //int i; + printf + ("LCDproc sed1530 driver\n\t-p n\t--port n\tSelect the output device to use port n\n"); + printf ("put the options in quotes like this: '-p 0x278'\n"); + printf ("\t-h\t--help\t\tShow this help information\n"); + return -1; + } + } + + if (timing_init() == -1) + return -1; + + // Allocate our framebuffer + framebuf = malloc (96 * 4 * 2); + if (!framebuf) + { + //sed1530_close (); + return -1; + } + + // clear screen + memset (framebuf, 0, 96 * 4); + + // Initialize the Port and the sed1530 + if(port_access(sed1530_lptport)) return -1; + if(port_access(sed1530_lptport+2)) return -1; + + sed1530_write_byte(0x00); // RESET + + // Initialisation sequence + sed1530_writecommand (0x40); // start display line = 0 + sed1530_writecommand (0xa1); // adc = invers + sed1530_writecommand (0xa3); // lcd-bias = 1/6 + sed1530_writecommand (0xc0); // OutputStatus = 0 + sed1530_writecommand (0x2f); // lcd-power-control on + + sed1530_writecommand (0x8a); + + sed1530_writecommand (0xa4); // test off + sed1530_writecommand (0xaf); // display on + + // set reverse mode + //~ sed1530_writecommand (0xa6|reverse); + sed1530_writecommand (0xa6); + + sed1530_selectpage (3); + + width = 96; + height = 32; + cellwidth = 6; + cellheight = 8; + + return 0; +} + +MODULE_EXPORT void +sed1530_set_contrast (Driver *drvthis, int promille) +{ + sed1530_writecommand (0x80|((32/promille)&0x1F)); + +} + + + + +///////////////////////////////////////////////////////////////// +// Frees the frambuffer and exits the driver. +// +MODULE_EXPORT void +sed1530_close (Driver *drvthis) +{ + if (framebuf != NULL) + free (framebuf); + framebuf = NULL; +} + +///////////////////////////////////////////////////////////////// +// Returns the display width +// +MODULE_EXPORT int +sed1530_width (Driver *drvthis) +{ + return width; +} + +///////////////////////////////////////////////////////////////// +// Returns the display height +// +MODULE_EXPORT int +sed1530_height (Driver *drvthis) +{ + return height; +} + +///////////////////////////////////////////////////////////////// +// Returns the display width +// +MODULE_EXPORT int +sed1530_cellwidth (Driver *drvthis) +{ + return cellwidth; +} + +///////////////////////////////////////////////////////////////// +// Returns the display height +// +MODULE_EXPORT int +sed1530_cellheight (Driver *drvthis) +{ + return cellheight; +} + +///////////////////////////////////////////////////////////////// +// Clears the LCD screen +// +MODULE_EXPORT void +sed1530_clear (Driver *drvthis) +{ + memset (framebuf, 0, 384); +} + +///////////////////////////////////////////////////////////////// +// +// Flushes all output to the lcd... +// +MODULE_EXPORT void +sed1530_flush (Driver *drvthis) +{ + int i, j; + for (i = 0; i < 2; i++) // for unknown reasons the first row of my panel is flipped + { + sed1530_selectpage (i); + sed1530_selectcolumn (18) ; + for (j = 0; j < 97; j++) + sed1530_writedata_rev (framebuf[j + 96 - (i * 96)]); + } + for (i = 2; i < 4; i++) + { + sed1530_selectpage (i); + sed1530_selectcolumn (18) ; + for (j = 0; j < 97; j++) + sed1530_writedata (framebuf[j + (i * 96)]); + } +} + +///////////////////////////////////////////////////////////////// +// Prints a string on the lc display, at position (x,y). The +// upper-left is (1,1), and the lower right should be (20,4). +// +MODULE_EXPORT void +sed1530_string (Driver *drvthis, int x, int y, char string[]) +{ + int i; + x--; // Convert 1-based coords to 0-based... + y--; + + for (i = 0; string[i]; i++) + { + sed1530_drawchar2fb (x + i, y, string[i]); + } +} + +///////////////////////////////////////////////////////////////// +// Writes char c at position x,y into the framebuffer. +// x and y are 1-based textmode coordinates. +// +MODULE_EXPORT void +sed1530_chr (Driver *drvthis, int x, int y, char c) +{ + y--; + x--; + sed1530_drawchar2fb (x, y, c); +} + +///////////////////////////////////////////////////////////////// +// This function draws a number num into the last 3 rows of the +// framebuffer at 1-based position x. It should draw a 4-row font, +// but methinks this would look a little stretched. When +// num=10 a colon is drawn. +// FIXME: make big numbers use less memory +// +MODULE_EXPORT void +sed1530_num (Driver *drvthis, int x, int num) +{ + int z, c, i, s; + x--; + + if (x < 0 || x > 19 || num < 0 || num > 10) + return; + if (num != 10 && (x < 0 || x > 17)) + return; + if (num == 10 && (x < 0 || x > 19)) + return; + + if (num == 10) + { // Doppelpunkt + for (z = 0; z < 3; z++) + { // Zeilen a 8 Punkte + for (c = 0; c < 6; c++) + { // 6 Spalten + s = 0; + for (i = 0; i < 8; i++) + { // 8 bits aus zeilen + s >>= 1; + if (*(fontbigdp_1530[(z * 8) + i] + c) == '.') + s += 128; + } + framebuf[(z * 96) + 96 + (x * 6) + c] = s; + //~ framebuf[(z * 122) + 122 + (x * 6) + c] = s; + } + } + } + else + { + + for (z = 0; z < 3; z++) + { // Zeilen a 8 Punkte + for (c = 0; c < 18; c++) + { // 18 Spalten + s = 0; + for (i = 0; i < 8; i++) + { // 8 bits aus zeilen + s >>= 1; + if (*(fontbignum_1530[num][z * 8 + i] + c) == '.') + s += 128; + } + framebuf[(z * 96) + 96 + (x * 6) + c] = s; + //~ framebuf[(z * 122) + 122 + (x * 6) + c] = s; + } + } + } +} + + +///////////////////////////////////////////////////////////////// +// Changes the font of character n to a pattern given by *dat. +// HD44780 Controllers only posses 8 programmable chars. But +// we store the fontmap completely in RAM, so every character +// can be altered. !Important: Characters have to be redraw +// by drawchar2fb() to show their new shape. Because we use +// a non-standard 6x8 font a *dat not calculated from +// widthth and sed1530->height will fail. +// +MODULE_EXPORT void +sed1530_set_char (Driver *drvthis, int n, char *dat) +{ + + int row, col, i; + if (n < 0 || n > 255) + return; + if (!dat) + return; + for (row = 0; row < 8; row++) + { + i = 0; + for (col = 0; col < 6; col++) + { + i <<= 1; + i |= (dat[(row * 6) + col] > 0); + } + fontmap_1530[n][row] = i; + } +} + + +///////////////////////////////////////////////////////////////// +// Draws a vertical from the bottom up to the last 3 rows of the +// framebuffer at 1-based position x. len is given in pixels. +// +MODULE_EXPORT void +sed1530_vbar (Driver *drvthis, int x, int len) +{ + int i, j, k; + x--; + + + for (j = 0; j < 3; j++) + { + i = 0; + k = 0; + for (i = 0; i < 8; i++) + { + if (len > i) + k += 1 << (7 - i); + } + + framebuf[((3 - j) * 96) + (x * 6)] = 0; + framebuf[((3 - j) * 96) + (x * 6) + 1] = 0; + framebuf[((3 - j) * 96) + (x * 6) + 2] = k; + framebuf[((3 - j) * 96) + (x * 6) + 3] = k; + framebuf[((3 - j) * 96) + (x * 6) + 4] = k; + framebuf[((3 - j) * 96) + (x * 6) + 5] = 0; + len -= 8; + } + +} + + +///////////////////////////////////////////////////////////////// +// Draws a horizontal bar from left to right at 1-based position +// x,y into the framebuffer. len is given in pixels. +// +MODULE_EXPORT void +sed1530_hbar (Driver *drvthis, int x, int y, int len) +{ + int i; + x--; + y--; + + if (y < 0 || y > 3 || x < 0 || len < 0 || (x + (len / 6)) > 19) + return; + + for (i = 0; i < len; i++) + framebuf[(y * 96) + (x * 6) + i] = 0x3C; +} + +///////////////////////////////////////////////////////////////// +// Reprogrammes character dest to contain an icon given by +// which. Calls set_char() to do this. +// +MODULE_EXPORT int +sed1530_icon (Driver *drvthis, int x, int y, int icon) +{ + static char heart_open[] = { + 1, 1, 1, 1, 1, + 1, 0, 1, 0, 1, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, + 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1 }; + + static char heart_filled[] = { + 1, 1, 1, 1, 1, + 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, + 0, 1, 1, 1, 0, + 0, 1, 1, 1, 0, + 1, 0, 1, 0, 1, + 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1 }; + + switch( icon ) + { + case ICON_BLOCK_FILLED: + sed1530_chr( drvthis, x, y, 255 ); + break; + case ICON_HEART_FILLED: + sed1530_set_char( drvthis, 0, heart_filled ); + sed1530_chr( drvthis, x, y, 0 ); + break; + case ICON_HEART_OPEN: + sed1530_set_char( drvthis, 0, heart_open ); + sed1530_chr( drvthis, x, y, 0 ); + break; + default: + return -1; + } + return 0; +} + +///////////////////////////////////////////////////////////// +// Does the heartbeat... +// +void +sed1530_heartbeat(Driver *drvthis, int type ) +{ + static int timer = 0; + int whichIcon; + int j; + + char heartdata[2][6] = { + { 0x63, 0x41, 0x03, 0x41, 0x63, 0x7F }, + { 0x63, 0x5D, 0x3B, 0x5D, 0x63, 0x7F }, + }; + + whichIcon = (! ((timer + 4) & 5)); + + sed1530_selectpage (0); + sed1530_selectcolumn (114) ; + for (j = 0; j < 6; j++) { + + sed1530_writedata_rev (heartdata[whichIcon][j]); + framebuf[90+j]=heartdata[whichIcon][j]; + framebuf[90+384+j]=heartdata[whichIcon][j]; + + } + timer++; +} diff -Nur lcdproc-CVS-current-20050115_orig/server/drivers/sed1530fm.c lcdproc-CVS-current-20050115/server/drivers/sed1530fm.c --- lcdproc-CVS-current-20050115_orig/server/drivers/sed1530fm.c 1970-01-01 01:00:00.000000000 +0100 +++ lcdproc-CVS-current-20050115/server/drivers/sed1530fm.c 2005-01-15 17:33:24.000000000 +0100 @@ -0,0 +1,1117 @@ +////////////////////////////////////////////////////////////////////////// +// This file contains a HD44780 font and a font for big numbers. // +// The HD44780 font in this file was shamelessly stolen from // +// Michael Reinelt / lcd4linux and is // +// Copyright 1999, 2000 by Michael Reinelt (reinelt@eunet.at) // +// The rest of this file is // +// // +// (C) 2001 Robin Adams ( robin@adams-online.de ) // +// // +// This file is released under the GPL. See file COPYING in this // +// package for further details. // +////////////////////////////////////////////////////////////////////////// + +#define b______ 0x00 +#define b_____O 0x01 +#define b____O_ 0x02 +#define b____OO 0x03 +#define b___O__ 0x04 +#define b___O_O 0x05 +#define b___OO_ 0x06 +#define b___OOO 0x07 +#define b__O___ 0x08 +#define b__O__O 0x09 +#define b__O_O_ 0x0a +#define b__O_OO 0x0b +#define b__OO__ 0x0c +#define b__OO_O 0x0d +#define b__OOO_ 0x0e +#define b__OOOO 0x0f +#define b_O____ 0x10 +#define b_O___O 0x11 +#define b_O__O_ 0x12 +#define b_O__OO 0x13 +#define b_O_O__ 0x14 +#define b_O_O_O 0x15 +#define b_O_OO_ 0x16 +#define b_O_OOO 0x17 +#define b_OO___ 0x18 +#define b_OO__O 0x19 +#define b_OO_O_ 0x1a +#define b_OO_OO 0x1b +#define b_OOO__ 0x1c +#define b_OOO_O 0x1d +#define b_OOOO_ 0x1e +#define b_OOOOO 0x1f +#define b_OOOOO 0x1f +#define bOOOOOO 0x3f + +unsigned char fontmap_1530[256][8] = { + [0x20] {b______, + b______, + b______, + b______, + b______, + b______, + b______, + b______}, + [0x21] {b___O__, + b___O__, + b___O__, + b___O__, + b______, + b______, + b___O__, + b______}, + [0x22] {b__O_O_, + b__O_O_, + b__O_O_, + b______, + b______, + b______, + b______, + b______}, + [0x23] {b__O_O_, + b__O_O_, + b_OOOOO, + b__O_O_, + b_OOOOO, + b__O_O_, + b__O_O_, + b______}, + [0x24] {b___O__, + b__OOOO, + b_O_O__, + b__OOO_, + b___O_O, + b_OOOO_, + b___O__, + b______}, + [0x25] {b_OO___, + b_OO__O, + b____O_, + b___O__, + b__O___, + b_O__OO, + b____OO, + b______}, + [0x26] {b__OO__, + b_O__O_, + b_O_O__, + b__O___, + b_O_O_O, + b_O__O_, + b__OO_O, + b______}, + [0x27] {b__OO__, + b___O__, + b__O___, + b______, + b______, + b______, + b______, + b______}, + [0x28] {b____O_, + b___O__, + b__O___, + b__O___, + b__O___, + b___O__, + b____O_, + b______}, + [0x29] {b__O___, + b___O__, + b____O_, + b____O_, + b____O_, + b___O__, + b__O___, + b______}, + [0x2a] {b______, + b___O__, + b_O_O_O, + b__OOO_, + b_O_O_O, + b___O__, + b______, + b______}, + [0x2b] {b______, + b___O__, + b___O__, + b_OOOOO, + b___O__, + b___O__, + b______, + b______}, + [0x2c] {b______, + b______, + b______, + b______, + b__OO__, + b___O__, + b__O___, + b______}, + [0x2d] {b______, + b______, + b______, + b_OOOOO, + b______, + b______, + b______, + b______}, + [0x2e] {b______, + b______, + b______, + b______, + b______, + b__OO__, + b__OO__, + b______}, + [0x2f] {b______, + b_____O, + b____O_, + b___O__, + b__O___, + b_O____, + b______, + b______}, + [0x30] {b__OOO_, + b_O___O, + b_O__OO, + b_O_O_O, + b_OO__O, + b_O___O, + b__OOO_, + b______}, + [0x31] {b___O__, + b__OO__, + b___O__, + b___O__, + b___O__, + b___O__, + b__OOO_, + b______}, + [0x32] {b__OOO_, + b_O___O, + b_____O, + b____O_, + b___O__, + b__O___, + b_OOOOO, + b______}, + [0x33] {b_OOOOO, + b____O_, + b___O__, + b____O_, + b_____O, + b_O___O, + b__OOO_, + b______}, + [0x34] {b____O_, + b___OO_, + b__O_O_, + b_O__O_, + b_OOOOO, + b____O_, + b____O_, + b______}, + [0x35] {b_OOOOO, + b_O____, + b_O____, + b_OOOO_, + b_____O, + b_O___O, + b__OOO_, + b______}, + [0x36] {b___OO_, + b__O___, + b_O____, + b_OOOO_, + b_O___O, + b_O___O, + b__OOO_, + b______}, + [0x37] {b_OOOOO, + b_____O, + b____O_, + b___O__, + b__O___, + b__O___, + b__O___, + b______}, + [0x38] {b__OOO_, + b_O___O, + b_O___O, + b__OOO_, + b_O___O, + b_O___O, + b__OOO_, + b______}, + [0x39] {b__OOO_, + b_O___O, + b_O___O, + b__OOOO, + b_____O, + b____O_, + b__OO__, + b______}, + [0x3a] {b______, + b__OO__, + b__OO__, + b______, + b__OO__, + b__OO__, + b______, + b______}, + [0x3b] {b______, + b__OO__, + b__OO__, + b______, + b__OO__, + b___O__, + b__O___, + b______}, + [0x3c] {b____O_, + b___O__, + b__O___, + b_O____, + b__O___, + b___O__, + b____O_, + b______}, + [0x3d] {b______, + b______, + b_OOOOO, + b______, + b_OOOOO, + b______, + b______, + b______}, + [0x3e] {b_O____, + b__O___, + b___O__, + b____O_, + b___O__, + b__O___, + b_O____, + b______}, + [0x3f] {b__OOO_, + b_O___O, + b_____O, + b____O_, + b___O__, + b______, + b___O__, + b______}, + [0x40] {b__OOO_, + b_O___O, + b_____O, + b__OO_O, + b_O_O_O, + b_O_O_O, + b__OOO_, + b______}, + [0x41] {b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b_OOOOO, + b_O___O, + b_O___O, + b______}, + [0x42] {b_OOOO_, + b_O___O, + b_O___O, + b_OOOO_, + b_O___O, + b_O___O, + b_OOOO_, + b______}, + [0x43] {b__OOO_, + b_O___O, + b_O____, + b_O____, + b_O____, + b_O___O, + b__OOO_, + b______}, + [0x44] {b_OOO__, + b_O__O_, + b_O___O, + b_O___O, + b_O___O, + b_O__O_, + b_OOO__, + b______}, + [0x45] {b_OOOOO, + b_O____, + b_O____, + b_OOOO_, + b_O____, + b_O____, + b_OOOOO, + b______}, + [0x46] {b_OOOOO, + b_O____, + b_O____, + b_OOOO_, + b_O____, + b_O____, + b_O____, + b______}, + [0x47] {b__OOO_, + b_O___O, + b_O____, + b_O_OOO, + b_O___O, + b_O___O, + b__OOOO, + b______}, + [0x48] {b_O___O, + b_O___O, + b_O___O, + b_OOOOO, + b_O___O, + b_O___O, + b_O___O, + b______}, + [0x49] {b__OOO_, + b___O__, + b___O__, + b___O__, + b___O__, + b___O__, + b__OOO_, + b______}, + [0x4a] {b___OOO, + b____O_, + b____O_, + b____O_, + b____O_, + b_O__O_, + b__OO__, + b______}, + [0x4b] {b_O___O, + b_O__O_, + b_O_O__, + b_OO___, + b_O_O__, + b_O__O_, + b_O___O, + b______}, + [0x4c] {b_O____, + b_O____, + b_O____, + b_O____, + b_O____, + b_O____, + b_OOOOO, + b______}, + [0x4d] {b_O___O, + b_OO_OO, + b_O_O_O, + b_O_O_O, + b_O___O, + b_O___O, + b_O___O, + b______}, + [0x4e] {b_O___O, + b_O___O, + b_OO__O, + b_O_O_O, + b_O__OO, + b_O___O, + b_O___O, + b______}, + [0x4f] {b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b__OOO_, + b______}, + [0x50] {b_OOOO_, + b_O___O, + b_O___O, + b_OOOO_, + b_O____, + b_O____, + b_O____, + b______}, + [0x51] {b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b_O_O_O, + b_O__O_, + b__OO_O, + b______}, + [0x52] {b_OOOO_, + b_O___O, + b_O___O, + b_OOOO_, + b_O_O__, + b_O__O_, + b_O___O, + b______}, + [0x53] {b__OOOO, + b_O____, + b_O____, + b__OOO_, + b_____O, + b_____O, + b_OOOO_, + b______}, + [0x54] {b_OOOOO, + b___O__, + b___O__, + b___O__, + b___O__, + b___O__, + b___O__, + b______}, + [0x55] {b_O___O, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b__OOO_, + b______}, + [0x56] {b_O___O, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b__O_O_, + b___O__, + b______}, + [0x57] {b_O___O, + b_O___O, + b_O___O, + b_O_O_O, + b_O_O_O, + b_O_O_O, + b__O_O_, + b______}, + [0x58] {b_O___O, + b_O___O, + b__O_O_, + b___O__, + b__O_O_, + b_O___O, + b_O___O, + b______}, + [0x59] {b_O___O, + b_O___O, + b_O___O, + b__O_O_, + b___O__, + b___O__, + b___O__, + b______}, + [0x5a] {b_OOOOO, + b_____O, + b____O_, + b___O__, + b__O___, + b_O____, + b_OOOOO, + b______}, + [0x5b] {b__OOO_, + b__O___, + b__O___, + b__O___, + b__O___, + b__O___, + b__OOO_, + b______}, + [0x5c] {b_O___O, + b__O_O_, + b_OOOOO, + b___O__, + b_OOOOO, + b___O__, + b___O__, + b______}, + [0x5d] {b__OOO_, + b____O_, + b____O_, + b____O_, + b____O_, + b____O_, + b__OOO_, + b______}, + [0x5e] {b___O__, + b__O_O_, + b_O___O, + b______, + b______, + b______, + b______, + b______}, + [0x5f] {b______, + b______, + b______, + b______, + b______, + b______, + b_OOOOO, + b______}, + [0x60] {b__O___, + b___O__, + b____O_, + b______, + b______, + b______, + b______, + b______}, + [0x61] {b______, + b______, + b__OOO_, + b_____O, + b__OOOO, + b_O___O, + b__OOOO, + b______}, + [0x62] {b_O____, + b_O____, + b_O____, + b_O_OO_, + b_OO__O, + b_O___O, + b_OOOO_, + b______}, + [0x63] {b______, + b______, + b__OOO_, + b_O____, + b_O____, + b_O___O, + b__OOO_, + b______}, + [0x64] {b_____O, + b_____O, + b_____O, + b__OO_O, + b_O__OO, + b_O___O, + b__OOOO, + b______}, + [0x65] {b______, + b______, + b__OOO_, + b_O___O, + b_OOOOO, + b_O____, + b__OOO_, + b______}, + [0x66] {b___OO_, + b__O__O, + b__O___, + b_OOO__, + b__O___, + b__O___, + b__O___, + b______}, + [0x67] {b______, + b__OOOO, + b_O___O, + b_O___O, + b__OOOO, + b_____O, + b__OOO_, + b______}, + [0x68] {b_O____, + b_O____, + b_O_OO_, + b_OO__O, + b_O___O, + b_O___O, + b_O___O, + b______}, + [0x69] {b___O__, + b______, + b__OO__, + b___O__, + b___O__, + b___O__, + b__OOO_, + b______}, + [0x6a] {b____O_, + b______, + b___OO_, + b____O_, + b____O_, + b_O__O_, + b__OO__, + b______}, + [0x6b] {b__O___, + b__O___, + b__O__O, + b__O_O_, + b__OO__, + b__O_O_, + b__O__O, + b______}, + [0x6c] {b__OO__, + b___O__, + b___O__, + b___O__, + b___O__, + b___O__, + b__OOO_, + b______}, + [0x6d] {b______, + b______, + b_OO_O_, + b_O_O_O, + b_O_O_O, + b_O___O, + b_O___O, + b______}, + [0x6e] {b______, + b______, + b_OOOO_, + b_O___O, + b_O___O, + b_O___O, + b_O___O, + b______}, + [0x6f] {b______, + b______, + b__OOO_, + b_O___O, + b_O___O, + b_O___O, + b__OOO_, + b______}, + [0x70] {b______, + b______, + b_OOOO_, + b_O___O, + b_OOOO_, + b_O____, + b_O____, + b______}, + [0x71] {b______, + b______, + b__OO_O, + b_O__OO, + b__OOOO, + b_____O, + b_____O, + b______}, + [0x72] {b______, + b______, + b_O_OO_, + b_OO__O, + b_O____, + b_O____, + b_O____, + b______}, + [0x73] {b______, + b______, + b__OOO_, + b_O____, + b__OOO_, + b_____O, + b_OOOO_, + b______}, + [0x74] {b__O___, + b_OOO__, + b__O___, + b__O___, + b__O___, + b__O__O, + b___OO_, + b______}, + [0x75] {b______, + b______, + b_O___O, + b_O___O, + b_O___O, + b_O__OO, + b__OO_O, + b______}, + [0x76] {b______, + b______, + b_O___O, + b_O___O, + b_O___O, + b__O_O_, + b___O__, + b______}, + [0x77] {b______, + b______, + b_O___O, + b_O___O, + b_O___O, + b_O_O_O, + b__O_O_, + b______}, + [0x78] {b______, + b______, + b_O___O, + b__O_O_, + b___O__, + b__O_O_, + b_O___O, + b______}, + [0x79] {b______, + b______, + b_O___O, + b_O___O, + b__OOOO, + b_____O, + b__OOO_, + b______}, + [0x7a] {b______, + b______, + b_OOOOO, + b____O_, + b___O__, + b__O___, + b_OOOOO, + b______}, + [0x7b] {b____O_, + b___O__, + b___O__, + b__O___, + b___O__, + b___O__, + b____O_, + b______}, + [0x7c] {b___O__, + b___O__, + b___O__, + b___O__, + b___O__, + b___O__, + b___O__, + b______}, + [0x7d] {b__O___, + b___O__, + b___O__, + b____O_, + b___O__, + b___O__, + b__O___, + b______}, + [0x7e] {b______, + b___O__, + b____O_, + b_OOOOO, + b____O_, + b___O__, + b______, + b______}, + + [0x7f] {b______, + b___O__, + b__O___, + b_OOOOO, + b__O___, + b___O__, + b______, + b______}, + [0xb0] {b__OOO_, + b__O_O_, + b__OOO_, + b______, + b______, + b______, + b______, + b______}, + [0xff] {bOOOOOO, + bOOOOOO, + bOOOOOO, + bOOOOOO, + bOOOOOO, + bOOOOOO, + bOOOOOO, + bOOOOOO}, +}; + +//FIXME: make big chars use less memory + +unsigned char *fontbignum_1530[10][24] = { + { + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++....++++++", + "++++++........++++", + "+++++..........+++", + "+++++....++....+++", + "+++++...++++...+++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "+++++...++++...+++", + "+++++....++....+++", + "+++++..........+++", + "++++++........++++", + "++++++++....++++++", + "++++++++++++++++++", + "++++++++++++++++++"}, + { + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++++++++++++", + "+++++++++++++...++", + "++++++++++++....++", + "+++++++++++.....++", + "++++++++++......++", + "++++++++........++", + "+++++++.........++", + "+++++++....+....++", + "+++++++...++....++", + "+++++++.++++....++", + "++++++++++++....++", + "++++++++++++....++", + "++++++++++++....++", + "++++++++++++....++", + "++++++++++++....++", + "++++++++++++....++", + "++++++++++++....++", + "++++++++++++....++", + "++++++++++++....++", + "++++++++++++....++", + "++++++++++++++++++", + "++++++++++++++++++"}, + { + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++.....+++++", + "++++++.........+++", + "+++++..........+++", + "+++++....+++....++", + "+++++...++++....++", + "++++++..++++....++", + "++++++++++++....++", + "++++++++++++....++", + "+++++++++++....+++", + "++++++++++....++++", + "+++++++++.....++++", + "++++++++.....+++++", + "+++++++....+++++++", + "++++++....++++++++", + "++++++....++++++++", + "+++++...........++", + "+++++...........++", + "+++++...........++", + "+++++...........++", + "++++++++++++++++++", + "++++++++++++++++++"}, + { + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++++++++++++", + "+++++++.....++++++", + "+++++.........++++", + "+++++.........++++", + "++++....+++....+++", + "++++....+++....+++", + "+++++++++++....+++", + "++++++++++....++++", + "+++++++++.....++++", + "+++++++++...++++++", + "+++++++++.....++++", + "+++++++++++....+++", + "++++++++++++....++", + "++++++++++++....++", + "++++....++++....++", + "++++....++++....++", + "+++++....++....+++", + "+++++..........+++", + "++++++........++++", + "+++++++.....++++++", + "++++++++++++++++++", + "++++++++++++++++++"}, + { + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++++....++++", + "++++++++++....++++", + "+++++++++.....++++", + "++++++++......++++", + "++++++++......++++", + "+++++++.......++++", + "++++++........++++", + "++++++...+....++++", + "+++++...++....++++", + "+++++...++....++++", + "++++...+++....++++", + "+++...++++....++++", + "+++.............++", + "+++.............++", + "+++.............++", + "++++++++++....++++", + "++++++++++....++++", + "++++++++++....++++", + "++++++++++....++++", + "++++++++++++++++++", + "++++++++++++++++++"}, + { + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++++++++++++", + "++++++.........+++", + "++++++.........+++", + "+++++..........+++", + "+++++....+++++++++", + "+++++....+++++++++", + "+++++...++++++++++", + "+++++...+....+++++", + "++++..........++++", + "++++...........+++", + "++++....+++.....++", + "++++++++++++....++", + "++++++++++++....++", + "++++++++++++....++", + "++++....++++....++", + "++++....++++....++", + "+++++....++....+++", + "+++++..........+++", + "++++++........++++", + "+++++++.....++++++", + "++++++++++++++++++", + "++++++++++++++++++"}, + { + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++.....+++++", + "+++++++........+++", + "++++++.........+++", + "+++++....++.....++", + "+++++...++++....++", + "++++....++++++++++", + "++++....++++++++++", + "++++....+....+++++", + "++++..........++++", + "++++...........+++", + "++++.....++.....++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "+++++...++++....++", + "+++++....++.....++", + "++++++.........+++", + "++++++........++++", + "++++++++.....+++++", + "++++++++++++++++++", + "++++++++++++++++++"}, + { + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++++++++++++", + "++++............++", + "++++............++", + "++++............++", + "++++++++++++....++", + "+++++++++++....+++", + "++++++++++....++++", + "++++++++++....++++", + "+++++++++....+++++", + "+++++++++...++++++", + "++++++++....++++++", + "++++++++....++++++", + "+++++++....+++++++", + "+++++++....+++++++", + "+++++++....+++++++", + "+++++++...++++++++", + "++++++....++++++++", + "++++++....++++++++", + "++++++....++++++++", + "++++++....++++++++", + "++++++++++++++++++", + "++++++++++++++++++"}, + { + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++++++++++++", + "+++++++......+++++", + "+++++..........+++", + "+++++....++....+++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "+++++....++....+++", + "++++++........++++", + "++++++........++++", + "+++++....++....+++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "+++++....++....+++", + "+++++..........+++", + "+++++++......+++++", + "++++++++++++++++++", + "++++++++++++++++++"}, + { + "++++++++++++++++++", + "++++++++++++++++++", + "++++++++++++++++++", + "+++++++.....++++++", + "++++++........++++", + "+++++.........++++", + "++++.....++....+++", + "++++....++++...+++", + "++++....++++....++", + "++++....++++....++", + "++++....++++....++", + "++++.....++.....++", + "+++++...........++", + "++++++..........++", + "+++++++....+....++", + "++++++++++++....++", + "++++++++++++....++", + "++++....++++...+++", + "++++.....++....+++", + "+++++.........++++", + "+++++........+++++", + "+++++++.....++++++", + "++++++++++++++++++", + "++++++++++++++++++"} +}; + +unsigned char *fontbigdp_1530[] = { + "++++++", + "++++++", + "++++++", + "++++++", + "++++++", + "+....+", + "+....+", + "+....+", + "+....+", + "++++++", + "++++++", + "++++++", + "++++++", + "++++++", + "++++++", + "+....+", + "+....+", + "+....+", + "+....+", + "++++++", + "++++++", + "++++++", + "++++++", + "++++++" +}; diff -Nur lcdproc-CVS-current-20050115_orig/server/drivers/sed1530fm.h lcdproc-CVS-current-20050115/server/drivers/sed1530fm.h --- lcdproc-CVS-current-20050115_orig/server/drivers/sed1530fm.h 1970-01-01 01:00:00.000000000 +0100 +++ lcdproc-CVS-current-20050115/server/drivers/sed1530fm.h 2005-01-15 17:33:03.000000000 +0100 @@ -0,0 +1,8 @@ +#ifndef SED1530FM_H +#define SED1530FM_H + +unsigned char fontmap_1530[256][8]; +unsigned char *fontbignum_1530[10][24]; +unsigned char *fontbigdp_1530[24]; + +#endif diff -Nur lcdproc-CVS-current-20050115_orig/server/drivers/sed1530.h lcdproc-CVS-current-20050115/server/drivers/sed1530.h --- lcdproc-CVS-current-20050115_orig/server/drivers/sed1530.h 1970-01-01 01:00:00.000000000 +0100 +++ lcdproc-CVS-current-20050115/server/drivers/sed1530.h 2005-01-15 19:43:19.000000000 +0100 @@ -0,0 +1,23 @@ +#ifndef SED1530_H +#define SED1530_H + +#include "lcd.h" + +MODULE_EXPORT int sed1530_init (Driver *drvthis, char *args); +MODULE_EXPORT void sed1530_close (Driver *drvthis); +MODULE_EXPORT int sed1530_width (Driver *drvthis); +MODULE_EXPORT int sed1530_height (Driver *drvthis); +MODULE_EXPORT void sed1530_clear (Driver *drvthis); +MODULE_EXPORT void sed1530_flush (Driver *drvthis); +MODULE_EXPORT void sed1530_string (Driver *drvthis, int x, int y, char string[]); +MODULE_EXPORT void sed1530_chr (Driver *drvthis, int x, int y, char c); + +MODULE_EXPORT void sed1530_vbar (Driver *drvthis, int x, int len); +MODULE_EXPORT void sed1530_hbar (Driver *drvthis, int x, int y, int len); +MODULE_EXPORT void sed1530_num (Driver *drvthis, int x, int num); +MODULE_EXPORT void sed1530_heartbeat (Driver *drvthis, int type); +MODULE_EXPORT int sed1530_icon (Driver *drvthis, int x, int y, int icon); + +MODULE_EXPORT void sed1530_set_contrast (struct lcd_logical_driver *drvthis, int promille); + +#endif diff -Nur lcdproc-CVS-current-20050115_orig/server/sock.c lcdproc-CVS-current-20050115/server/sock.c --- lcdproc-CVS-current-20050115_orig/server/sock.c 2003-08-10 09:00:37.000000000 +0200 +++ lcdproc-CVS-current-20050115/server/sock.c 2005-01-15 21:10:33.378919614 +0100 @@ -66,7 +66,7 @@ struct ClientSocketMap* freeClientSocketPool; /* Length of longest transmission allowed at once...*/ -#define MAXMSG 8192 +#define MAXMSG 16384 /**** Internal function declarations ****************************************/ int sock_read_from_client(struct ClientSocketMap* clientSocketMap);