From cf5ac7797b96710dd6dbd5bba2788ccfade4a0c0 Mon Sep 17 00:00:00 2001 From: marschap Date: Wed, 12 Apr 2006 16:04:06 +0000 Subject: [PATCH] rename "pylcd" driver to "pyramid"; finish renaming of "sli" driver --- ChangeLog | 2 +- LCDd.conf | 6 +- acinclude.m4 | 14 +- contrib/interface-demo2/if_demo.c | 2 +- contrib/interface-demo2/lib-myconnect.c | 2 +- contrib/interface-demo2/lib-myconnect.h | 2 +- contrib/interface-demo2/lib-mylcd.c | 2 +- contrib/interface-demo2/lib-mylcd.h | 2 +- contrib/interface-demo2/scripts/MyHalt | 2 +- contrib/interface-demo2/scripts/MyIPSet | 2 +- contrib/interface-demo2/scripts/MyReboot | 2 +- docs/LCDd.8 | 2 +- docs/README.pylcd | 2 +- docs/lcdproc-dev/add-your-driver.docbook | 6 +- docs/lcdproc-user/drivers/lircin.docbook | 2 +- docs/lcdproc-user/drivers/pylcd.docbook | 38 ++- docs/lcdproc-user/drivers/sli.docbook | 2 +- scripts/debian/changelog | 2 +- server/drivers/Makefile.am | 8 +- server/drivers/pylcd.c | 317 +++++++++++++---------- server/drivers/pylcd.h | 10 +- tags | 36 +-- 22 files changed, 257 insertions(+), 206 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7298129..62e62f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -37,7 +37,7 @@ This version has split off from unstable-0.4.3. Includes major changes. + Added ms6931 driver for MSI-6931 displays in 1U rack servers by MSI + Added mtc_s16209x driver for MTC-S16209x by Microtips Technology Inc + Added NoritakeVFD driver for Noritake VFD Device CU20045SCPB-T28A - + Added pylcd driver for Pyramid LC-Displays + + Added pyramid driver for Pyramid LC-Displays + Added serialVFD driver for NEC FIPC8367 based serial VFDs + Added tyan driver for LCDs in Tyan Barebone GS series + Added ula200 driver for the USB board ULA-200 from ELV diff --git a/LCDd.conf b/LCDd.conf index ba50578..0c01afb 100644 --- a/LCDd.conf +++ b/LCDd.conf @@ -613,8 +613,8 @@ Speed=9600 -## Pyramid pylcd driver ## -[pylcd] +## Pyramid LCD driver ## +[pyramid] # device to connect to [default: /dev/lcd] Device=/dev/ttyUSB0 @@ -764,7 +764,7 @@ Size=20x4 ## Wirz SLI LCD driver ## -[Wirz_sli] +[sli] # Select the output device to use [default: /dev/lcd] Device=/dev/lcd diff --git a/acinclude.m4 b/acinclude.m4 index 792ed0a..aa359ef 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -8,14 +8,14 @@ AC_ARG_ENABLE(drivers, [ bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,] [ glcdlib,glk,hd44780,icp_a106,imon,IOWarrior,irman,] [ joy,lb216,lcdm001,lcterm,lirc,ms6931,mtc_s16209x,] - [ MtxOrb,NoritakeVFD,pylcd,sed1330,sed1520,serialVFD,] + [ MtxOrb,NoritakeVFD,pyramid,sed1330,sed1520,serialVFD,] [ sli,stv5730,svga,t6963,text,tyan,ula200,xosd] [ 'all' compiles all drivers;] [ 'all,!xxx,!yyy' de-selects previously selected drivers], drivers="$enableval", - drivers=[bayrad,CFontz,CFontz633,curses,CwLnx,glk,lb216,lcdm001,MtxOrb,pylcd,text]) + drivers=[bayrad,CFontz,CFontz633,curses,CwLnx,glk,lb216,lcdm001,MtxOrb,pyramid,text]) -allDrivers=[bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,glcdlib,glk,hd44780,icp_a106,imon,IOWarrior,irman,joy,lb216,lcdm001,lcterm,lirc,ms6931,mtc_s16209x,MtxOrb,NoritakeVFD,pylcd,sed1330,sed1520,serialVFD,sli,stv5730,svga,t6963,text,tyan,ula200,xosd] +allDrivers=[bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,glcdlib,glk,hd44780,icp_a106,imon,IOWarrior,irman,joy,lb216,lcdm001,lcterm,lirc,ms6931,mtc_s16209x,MtxOrb,NoritakeVFD,pyramid,sed1330,sed1520,serialVFD,sli,stv5730,svga,t6963,text,tyan,ula200,xosd] drivers=`echo $drivers | sed -e 's/,/ /g'` @@ -232,9 +232,9 @@ dnl else DRIVERS="$DRIVERS NoritakeVFD${SO}" actdrivers=["$actdrivers NoritakeVFD"] ;; - pylcd) - DRIVERS="$DRIVERS pylcd${SO}" - actdrivers=["$actdrivers pylcd"] + pyramid) + DRIVERS="$DRIVERS pyramid${SO}" + actdrivers=["$actdrivers pyramid"] ;; sed1330) if test "$ac_cv_port_have_lpt" = yes @@ -259,7 +259,7 @@ dnl else actdrivers=["$actdrivers serialVFD"] ;; sli) - DRIVERS="$DRIVERS wirz_sli${SO}" + DRIVERS="$DRIVERS sli${SO}" actdrivers=["$actdrivers sli"] ;; stv5730) diff --git a/contrib/interface-demo2/if_demo.c b/contrib/interface-demo2/if_demo.c index 319a7ea..3d3b1c0 100644 --- a/contrib/interface-demo2/if_demo.c +++ b/contrib/interface-demo2/if_demo.c @@ -1,6 +1,6 @@ /* if_demo.c - interfacedemo for pylcd device. + interfacedemo for "pyramid" LCD device. */ /* diff --git a/contrib/interface-demo2/lib-myconnect.c b/contrib/interface-demo2/lib-myconnect.c index 9e747a7..e6be205 100644 --- a/contrib/interface-demo2/lib-myconnect.c +++ b/contrib/interface-demo2/lib-myconnect.c @@ -1,6 +1,6 @@ /* lib-myconnect.c: - used by interfacedemo for pylcd device. + used by interfacedemo for "pyramid" LCD device. */ /* diff --git a/contrib/interface-demo2/lib-myconnect.h b/contrib/interface-demo2/lib-myconnect.h index c5335e6..8e6eedf 100644 --- a/contrib/interface-demo2/lib-myconnect.h +++ b/contrib/interface-demo2/lib-myconnect.h @@ -1,6 +1,6 @@ /* lib-myconnect.h - used by interfacedemo for pylcd device. + used by interfacedemo for "pyramid" LCD device. */ /* diff --git a/contrib/interface-demo2/lib-mylcd.c b/contrib/interface-demo2/lib-mylcd.c index 8d71bfd..e9e3c7b 100644 --- a/contrib/interface-demo2/lib-mylcd.c +++ b/contrib/interface-demo2/lib-mylcd.c @@ -1,6 +1,6 @@ /* lib-mylcd.h - used by interfacedemo for pylcd device. + used by interfacedemo for "pyramid" LCD device. */ /* diff --git a/contrib/interface-demo2/lib-mylcd.h b/contrib/interface-demo2/lib-mylcd.h index 712c6e0..629fd65 100644 --- a/contrib/interface-demo2/lib-mylcd.h +++ b/contrib/interface-demo2/lib-mylcd.h @@ -1,6 +1,6 @@ /* lib-mylcd.h - used by interfacedemo for pylcd device. + used by interfacedemo for "pyramid" LCD device. */ /* diff --git a/contrib/interface-demo2/scripts/MyHalt b/contrib/interface-demo2/scripts/MyHalt index 612a76b..8456370 100755 --- a/contrib/interface-demo2/scripts/MyHalt +++ b/contrib/interface-demo2/scripts/MyHalt @@ -2,7 +2,7 @@ ### MyHalt ### # -# used by interfacedemo for pylcd device. +# used by interfacedemo for "pyramid" LCD device. # # Copyright (C) 2005 Silvan Marco Fin # diff --git a/contrib/interface-demo2/scripts/MyIPSet b/contrib/interface-demo2/scripts/MyIPSet index 6b689cb..0750001 100755 --- a/contrib/interface-demo2/scripts/MyIPSet +++ b/contrib/interface-demo2/scripts/MyIPSet @@ -2,7 +2,7 @@ ### MyIpSet ### # -# used by interfacedemo for pylcd device. +# used by interfacedemo for "pyramid" LCD device. # # Copyright (C) 2005 Silvan Marco Fin # diff --git a/contrib/interface-demo2/scripts/MyReboot b/contrib/interface-demo2/scripts/MyReboot index c291301..8db6fd4 100755 --- a/contrib/interface-demo2/scripts/MyReboot +++ b/contrib/interface-demo2/scripts/MyReboot @@ -2,7 +2,7 @@ ### MyReboot ### # -# used by interfacedemo for pylcd device. +# used by interfacedemo for "pyramid" LCD device. # # Copyright (C) 2005 Silvan Marco Fin # diff --git a/docs/LCDd.8 b/docs/LCDd.8 index 2e388e7..d1efb2a 100644 --- a/docs/LCDd.8 +++ b/docs/LCDd.8 @@ -159,7 +159,7 @@ Matrix Orbital displays (except Matrix Orbital GLK displays) .B NoritakeVFD Noritake VFD Device CU20045SCPB-T28A .TP -.B pylcd +.B pyramid LCD displays from Pyramid (http://www.pyramid.de) .TP .B sed1330 diff --git a/docs/README.pylcd b/docs/README.pylcd index 95b405e..9df1dda 100644 --- a/docs/README.pylcd +++ b/docs/README.pylcd @@ -1,7 +1,7 @@ Dear lcdproc community, I've added support for the LEDs on the Pyramid LC-Display to the -pylcd driver of lcdproc. +"pyramid" driver of lcdproc. Since it seems that LEDs on an LCD are not directly supported by the lcdproc API I've used the "output" command of the server to trigger the diff --git a/docs/lcdproc-dev/add-your-driver.docbook b/docs/lcdproc-dev/add-your-driver.docbook index 19b4002..c53532b 100644 --- a/docs/lcdproc-dev/add-your-driver.docbook +++ b/docs/lcdproc-dev/add-your-driver.docbook @@ -49,7 +49,7 @@ AC_ARG_ENABLE(drivers, [ bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,] [ glcdlib,glk,hd44780,icp_a106,imon,IOWarrior,irman,] [ joy,lb216,lcdm001,lcterm,lirc,ms6931,mtc_s16209x,] - [ MtxOrb,NoritakeVFD,pylcd,sed1330,sed1520,serialVFD,] + [ MtxOrb,NoritakeVFD,pyramid,sed1330,sed1520,serialVFD,] [ sli,stv5730,svga,t6963,text,tyan,ula200,xosd] [ 'all' compiles all drivers;] [ 'all,!xxx,!yyy' de-selects previously selected drivers], @@ -64,7 +64,7 @@ AC_ARG_ENABLE(drivers, [ bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,] [ glcdlib,glk,hd44780,icp_a106,imon,IOWarrior,irman,] [ joy,lb216,lcdm001,lcterm,lirc,ms6931,mtc_s16209x,] - [ MtxOrb,NoritakeVFD,pylcd,sed1330,sed1520,serialVFD,] + [ MtxOrb,NoritakeVFD,pyramid,sed1330,sed1520,serialVFD,] [ sli,stv5730,svga,t6963,text,tyan,ula200,xosd,myDriver] [ 'all' compiles all drivers;] [ 'all,!xxx,!yyy' de-selects previously selected drivers], @@ -241,7 +241,7 @@ Matrix Orbital displays (except Matrix Orbital GLK displays) .B NoritakeVFD Noritake VFD Device CU20045SCPB-T28A .TP -.B pylcd +.B pyramid LCD displays from Pyramid (http://www.pyramid.de) .TP .B sed1330 diff --git a/docs/lcdproc-user/drivers/lircin.docbook b/docs/lcdproc-user/drivers/lircin.docbook index 9b05544..c5f9e6f 100644 --- a/docs/lcdproc-user/drivers/lircin.docbook +++ b/docs/lcdproc-user/drivers/lircin.docbook @@ -41,7 +41,7 @@ Then simply run make. - + Configure LCDd to Use the lirc Driver diff --git a/docs/lcdproc-user/drivers/pylcd.docbook b/docs/lcdproc-user/drivers/pylcd.docbook index 109df2c..5541bea 100644 --- a/docs/lcdproc-user/drivers/pylcd.docbook +++ b/docs/lcdproc-user/drivers/pylcd.docbook @@ -1,23 +1,37 @@ - -The pylcd Driver + +The pyramid Driver -This section talks about using LCDproc with LCD displays that use the -pylcd chipset. +This section talks about using LCDproc with programmable LC displays +sold by Pyramid Ccomputer. - -Connections + +Pyramid Computer builds these LC displays into its thriving server products +to show system data, and to allow the user to change important parameters or +shut down the appliance in a controlled manner. +The LCD module, accessible via USB, can be integrated by Pyramid’s BTO server +and appliance manufacturing division at the customer's request or it can be +made available separately for self-integration, e.g. as a 5.25" module. + + + +Features + + +The displays are 16 characters wide and 2 lines high. They have 4 programmable +buttons as well as 3 (or 9) LEDs which can also be software controlled. + - + LED output I've added support for the LEDs on the Pyramid LC-Display to the -pylcd driver of lcdproc. +"pyramid" driver of lcdproc. @@ -50,7 +64,7 @@ is up to the software to do the right thing. -How to use the LCED output from the lcient +How to use the LED output from the client telnet localhost 13666 hello @@ -83,12 +97,12 @@ coresystems GmbH · Brahmsstr. 16 · D-79104 Freiburg i. Br. Tel.: +49 761 7668825 · Fax: +49 761 7664613 Email: info@coresystems.de · http://www.coresystems.de/ - - + + Configuration in LCDd.conf -[pylcd] +[pyramid] diff --git a/docs/lcdproc-user/drivers/sli.docbook b/docs/lcdproc-user/drivers/sli.docbook index fdf4821..703ca99 100644 --- a/docs/lcdproc-user/drivers/sli.docbook +++ b/docs/lcdproc-user/drivers/sli.docbook @@ -11,7 +11,7 @@ sli chipset. Configuration in LCDd.conf -[Wirz-sli] +[sli] diff --git a/scripts/debian/changelog b/scripts/debian/changelog index a2bda0b..678244f 100644 --- a/scripts/debian/changelog +++ b/scripts/debian/changelog @@ -18,7 +18,7 @@ lcdproc (0.4.99+cvs20050101) unstable; urgency=low + ms6931: for MSI-6931 displays in 1U rack servers by MSI + mtc_s16209x: for MTC-S16209x by Microtips Technology Inc + NoritakeVFD: for Noritake VFD Device CU20045SCPB-T28A - + pylcd: for Pyramid LC-Displays + + pyramid: for Pyramid LC-Displays + serialVFD: for NEC FIPC8367 based serial VFDs + tyan: for LCDs in Tyan Barebone GS series + ula200: for the USB board ULA-200 from ELV diff --git a/server/drivers/Makefile.am b/server/drivers/Makefile.am index 25ecbe4..0b57a26 100644 --- a/server/drivers/Makefile.am +++ b/server/drivers/Makefile.am @@ -19,7 +19,7 @@ AM_LDFLAGS = @LDSHARED@ LIBS = pkglib_PROGRAMS = @DRIVERS@ -EXTRA_PROGRAMS = bayrad CFontz CFontz633 CFontzPacket curses CwLnx glcdlib glk hd44780 icp_a106 imon IOWarrior irman joy lb216 lcdm001 lcterm lirc ms6931 mtc_s16209x MtxOrb NoritakeVFD pylcd sed1330 sed1520 serialVFD stv5730 svga t6963 text tyan wirz_sli ula200 xosd +EXTRA_PROGRAMS = bayrad CFontz CFontz633 CFontzPacket curses CwLnx glcdlib glk hd44780 icp_a106 imon IOWarrior irman joy lb216 lcdm001 lcterm lirc ms6931 mtc_s16209x MtxOrb NoritakeVFD pyramid sed1330 sed1520 serialVFD stv5730 svga t6963 text tyan sli ula200 xosd noinst_LIBRARIES = libLCD.a libbignum.a IOWarrior_CFLAGS = @libusb_cflags@ $(AM_CFLAGS) @@ -46,7 +46,7 @@ svga_LDADD = @LIBSVGA@ t6963_LDADD = libLCD.a tyan_LDADD = libLCD.a ula200_LDADD = libLCD.a @LIBFTDI@ -wirz_sli_LDADD = libLCD.a +sli_LDADD = libLCD.a xosd_LDADD = @LIBXOSD@ libLCD_a_SOURCES = lcd_lib.h lcd_lib.c @@ -76,7 +76,7 @@ ms6931_SOURCES = lcd.h lcd_lib.h ms6931.h ms6931.c report.h mtc_s16209x_SOURCES = lcd.h lcd_lib.h mtc_s16209x.c mtc_s16209x.h report.h MtxOrb_SOURCES = lcd.h lcd_lib.h MtxOrb.c MtxOrb.h report.h bigfont.h NoritakeVFD_SOURCES = lcd.h lcd_lib.h NoritakeVFD.c NoritakeVFD.h report.h -pylcd_SOURCES = lcd.h pylcd.c pylcd.h +pyramid_SOURCES = lcd.h pylcd.c pylcd.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 serialVFD_SOURCES = lcd.h lcd_lib.h serialVFD.c serialVFD.h report.h adv_bignum.h @@ -86,7 +86,7 @@ t6963_SOURCES = lcd.h lcd_lib.h t6963.c t6963.h t6963_font.h report.h text_SOURCES = lcd.h text.h text.c report.h tyan_SOURCES = lcd.h lcd_lib.h tyan_lcdm.h tyan_lcdm.c report.h ula200_SOURCES = lcd.h lcd_lib.h ula200.h ula200.c report.h -wirz_sli_SOURCES = lcd.h lcd_lib.h wirz-sli.h wirz-sli.c report.h +sli_SOURCES = lcd.h lcd_lib.h wirz-sli.h wirz-sli.c report.h xosd_SOURCES = lcd.h xosdlib_drv.c xosdlib_drv.h report.h AM_CPPFLAGS = -I$(top_srcdir) diff --git a/server/drivers/pylcd.c b/server/drivers/pylcd.c index 1437d55..9e3bf2b 100644 --- a/server/drivers/pylcd.c +++ b/server/drivers/pylcd.c @@ -1,7 +1,7 @@ /* pylcd.c */ /* - This is the LCDproc driver for the "pylcd" device from Pyramid. + This is the LCDproc driver for the "pyramid" LCD device from Pyramid. Copyright (C) 2005 Silvan Marco Fin Copyright (C) 2006 coresystems GmbH @@ -60,25 +60,33 @@ #define True 1 #define False 0 -#define DEBUG 0 #define MICROTIMEOUT 50000 #define NOKEY "00000" + +/* variables 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 = "pyramid_"; + + /* Prototypes: */ -int send_ACK(pylcd_private_data *); +int send_ACK(PrivateData *); /* local functions for pylcd.c */ /* Performs an select on the device used. Returns if no data is available at the moment. Used to keep reading-operations from blocking the driver. */ -int data_ready(pylcd_private_data *status) +int +data_ready(PrivateData *p) { - FD_ZERO(&status->rdfs); - FD_SET(status->FD, &status->rdfs); - return select(status->FD+1, &status->rdfs, NULL, NULL, &status->timeout)>0; + FD_ZERO(&p->rdfs); + FD_SET(p->FD, &p->rdfs); + return select(p->FD+1, &p->rdfs, NULL, NULL, &p->timeout)>0; } /* Reads one telegramm, stores the telegramm without ETX/STX in buffer @@ -86,14 +94,15 @@ int data_ready(pylcd_private_data *status) or the telegramm didn't match its CC or if MAXCOUNT was exeeded without reading a complete telegramm. */ -int read_tele(pylcd_private_data *status, char *buffer) +int +read_tele(PrivateData *p, char *buffer) { char zeichen=0; int len=0; char cc=0x00; - while (data_ready(status) - && (read(status->FD, &zeichen, 1)>0) + while (data_ready(p) + && (read(p->FD, &zeichen, 1)>0) && (zeichen!=0x02) && (lenFD, &zeichen, 1)>0) + while (data_ready(p) + && (read(p->FD, &zeichen, 1)>0) && (lenFD, &zeichen, 1)>0) + if (data_ready(p) + && (read(p->FD, &zeichen, 1)>0) && (buffer[len]==0x03) && (zeichen==cc)) { @@ -135,10 +144,11 @@ int read_tele(pylcd_private_data *status, char *buffer) /* Wrapper for reading an acknowledge telegramm. */ -int read_ACK(pylcd_private_data *status) +int +read_ACK(PrivateData *p) { char buffer[6]; - int retval=read_tele(status, buffer); + int retval=read_tele(p, buffer); return (retval && buffer[0]=='Q'); } @@ -147,7 +157,8 @@ int read_ACK(pylcd_private_data *status) this routine waits for an ACK and retransmitts till an ACK is received or doesn't expect an ACK. */ -int send_tele(pylcd_private_data *status, char *buffer) +int +send_tele(PrivateData *p, char *buffer) { char cc=0x00; int i, len; @@ -160,8 +171,8 @@ int send_tele(pylcd_private_data *status, char *buffer) buffer2[len]=cc; - write(status->FD, buffer2, len+1); - /* tcflush (status->FD, TCIFLUSH); */ + write(p->FD, buffer2, len+1); + /* tcflush (p->FD, TCIFLUSH); */ debug(RPT_DEBUG, "%s: sent %s", __FUNCTION__, buffer); return 0; @@ -169,12 +180,14 @@ int send_tele(pylcd_private_data *status, char *buffer) /* Wrapper for sending ACKs via real_send_tele */ -int send_ACK(pylcd_private_data *status) +int +send_ACK(PrivateData *p) { - return send_tele(status, "Q"); + return send_tele(p, "Q"); } -unsigned long long timestamp(pylcd_private_data *status) +unsigned long long +timestamp(PrivateData *p) { struct timeval tv; @@ -185,7 +198,8 @@ unsigned long long timestamp(pylcd_private_data *status) /* Sets the serial device, used for communication with the LCD, into raw mode */ -int initTTY(Driver *drvthis, int FD) +int +initTTY(Driver *drvthis, int FD) { struct termios tty_mode; @@ -213,15 +227,16 @@ int initTTY(Driver *drvthis, int FD) /* This function sets all LEDs according to the private data structure */ -int set_leds(pylcd_private_data *status) +int +set_leds(PrivateData *p) { int i; char tele[3]="L00"; for (i=0; i<7; i++) { tele[1]=i+'1'; - tele[2]=status->led[i]?'1':'0'; - send_tele(status, tele); + tele[2]=p->led[i]?'1':'0'; + send_tele(p, tele); } return 0; @@ -231,14 +246,15 @@ int set_leds(pylcd_private_data *status) /* Basic functions */ -MODULE_EXPORT int pylcd_init (Driver *drvthis, char *args) +MODULE_EXPORT int +pyramid_init (Driver *drvthis, char *args) { char buffer[6]=""; int i; - pylcd_private_data *status; + PrivateData *p; - status = (pylcd_private_data *) malloc(sizeof(pylcd_private_data)); - if ((status == NULL) || (drvthis->store_private_ptr(drvthis, status) < 0)) + p = (PrivateData *) malloc(sizeof(PrivateData)); + if ((p == NULL) || (drvthis->store_private_ptr(drvthis, p) < 0)) { report(RPT_ERR, "%s: error allocating memory for modules private data", drvthis->name); return -1; @@ -247,38 +263,38 @@ MODULE_EXPORT int pylcd_init (Driver *drvthis, char *args) /* Read config file: */ /* Which serial device should be used? */ - strncpy(status->devicename, drvthis->config_get_string(drvthis->name, "Device", 0, "/dev/lcd"), sizeof(status->devicename)); - status->devicename[sizeof(status->devicename)-1] = '\0'; - report(RPT_INFO, "%s: using Device %s", drvthis->name, status->devicename); + strncpy(p->device, drvthis->config_get_string(drvthis->name, "Device", 0, "/dev/lcd"), sizeof(p->device)); + p->device[sizeof(p->device)-1] = '\0'; + report(RPT_INFO, "%s: using Device %s", drvthis->name, p->device); /* open and initialize serial device */ - status->FD = open(status->devicename, O_RDWR); + p->FD = open(p->device, O_RDWR); - if (status->FD == -1) { - report(RPT_ERR, "%s: opening device failed: %s", drvthis->name, strerror(errno)); + if (p->FD == -1) { + report(RPT_ERR, "%s: open(%s) failed: %s", drvthis->name, p->device, strerror(errno)); return -1; } - if (initTTY(drvthis, status->FD) != 0) + if (initTTY(drvthis, p->FD) != 0) return -1; - status->timeout.tv_sec = 0; - status->timeout.tv_usec = MICROTIMEOUT; - status->width = WIDTH; - status->height = HEIGHT; - status->LEDtoggle = 0; - strcpy(status->last_key_pressed, NOKEY); - status->last_key_time = timestamp(status); - status->last_buf_time = timestamp(status); + p->timeout.tv_sec = 0; + p->timeout.tv_usec = MICROTIMEOUT; + p->width = WIDTH; + p->height = HEIGHT; + p->LEDtoggle = 0; + strcpy(p->last_key_pressed, NOKEY); + p->last_key_time = timestamp(p); + p->last_buf_time = timestamp(p); /* Acknowledge all telegramms, the device may yet be sending. (Reset doesn't clear telegramms, darn protocol ... ) */ - tcflush(status->FD, TCIFLUSH); /* clear everything */ + tcflush(p->FD, TCIFLUSH); /* clear everything */ while (1) { - i = read_tele(status, buffer); + i = read_tele(p, buffer); if (i == True) - send_ACK(status); + send_ACK(p); else break; usleep(600000); @@ -286,169 +302,193 @@ MODULE_EXPORT int pylcd_init (Driver *drvthis, char *args) /* Now Reset and clear */ - send_tele(status, "R"); - send_tele(status, "C0101"); - send_tele(status, "D "); - send_tele(status, "C0101"); - send_tele(status, "M3"); - strcpy(status->framebuffer, "D "); - status->FB_modified = 1; + send_tele(p, "R"); + send_tele(p, "C0101"); + send_tele(p, "D "); + send_tele(p, "C0101"); + send_tele(p, "M3"); + strcpy(p->framebuffer, "D "); + p->FB_modified = 1; for (i = 0; i < 7; i++) - status->led[i] = 0; - set_leds(status); + p->led[i] = 0; + set_leds(p); report(RPT_DEBUG, "%s: init() done", drvthis->name); return 0; }; -MODULE_EXPORT void pylcd_close (Driver *drvthis) +MODULE_EXPORT void +pyramid_close (Driver *drvthis) { - pylcd_private_data *status = (pylcd_private_data *) drvthis->private_data; + PrivateData *p = (PrivateData *) drvthis->private_data; - close(status->FD); + close(p->FD); }; -MODULE_EXPORT int pylcd_width (Driver *drvthis) +MODULE_EXPORT int +pyramid_width (Driver *drvthis) { - pylcd_private_data *status = (pylcd_private_data *) drvthis->private_data; + PrivateData *p = (PrivateData *) drvthis->private_data; - return status->width; + return p->width; }; -MODULE_EXPORT int pylcd_height (Driver *drvthis) +MODULE_EXPORT int +pyramid_height (Driver *drvthis) { - pylcd_private_data *status = (pylcd_private_data *) drvthis->private_data; + PrivateData *p = (PrivateData *) drvthis->private_data; - return status->height; + return p->height; }; -MODULE_EXPORT void pylcd_clear (Driver *drvthis) +MODULE_EXPORT void +pyramid_clear (Driver *drvthis) { - pylcd_private_data *status = (pylcd_private_data *) drvthis->private_data; + PrivateData *p = (PrivateData *) drvthis->private_data; - status->FB_modified=1; - strcpy(status->framebuffer, "D "); + p->FB_modified=1; + strcpy(p->framebuffer, "D "); }; /* flushed the content of the framebuffer to the display. - status->FB_modified tells if the content was modified. If not, + p->FB_modified tells if the content was modified. If not, that means, nothing has to be done */ -MODULE_EXPORT void pylcd_flush (Driver *drvthis) +MODULE_EXPORT void +pyramid_flush (Driver *drvthis) { static char mesg[16]; - pylcd_private_data *status = (pylcd_private_data *) drvthis->private_data; - unsigned long long current_time=timestamp(status); + PrivateData *p = (PrivateData *) drvthis->private_data; + unsigned long long current_time=timestamp(p); - if ((status->FB_modified==True) && (current_time>(status->last_buf_time+40000))) + if ((p->FB_modified==True) && (current_time>(p->last_buf_time+40000))) { - send_tele(status, "C0101"); - send_tele(status, status->framebuffer); /* We do not wait for the ACK here*/ - status->FB_modified=False; - status->last_buf_time=current_time; - sprintf(mesg, "C%02d%02d", status->C_x, status->C_y); - send_tele(status, mesg); - sprintf(mesg, "M%d", status->C_state); - send_tele(status, mesg); + send_tele(p, "C0101"); + send_tele(p, p->framebuffer); /* We do not wait for the ACK here*/ + p->FB_modified=False; + p->last_buf_time=current_time; + sprintf(mesg, "C%02d%02d", p->C_x, p->C_y); + send_tele(p, mesg); + sprintf(mesg, "M%d", p->C_state); + send_tele(p, mesg); } } -MODULE_EXPORT void pylcd_string (Driver *drvthis, int x, int y, char *args) +MODULE_EXPORT void +pyramid_string (Driver *drvthis, int x, int y, char *args) { int offset; int len; - pylcd_private_data *status = (pylcd_private_data *) drvthis->private_data; + PrivateData *p = (PrivateData *) drvthis->private_data; - status->FB_modified = True; - x = min(status->width, x); - y = min(status->height, y); - offset = (x)+status->width*(y-1); - len = min(strlen(args), status->width*status->height-offset+1); - memcpy(&status->framebuffer[offset], args, len); + p->FB_modified = True; + x = min(p->width, x); + y = min(p->height, y); + offset = (x)+p->width*(y-1); + len = min(strlen(args), p->width*p->height-offset+1); + memcpy(&p->framebuffer[offset], args, len); }; -MODULE_EXPORT void pylcd_chr (Driver *drvthis, int x, int y, char c) +MODULE_EXPORT void +pyramid_chr (Driver *drvthis, int x, int y, char c) { - pylcd_private_data *status = (pylcd_private_data *) drvthis->private_data; + PrivateData *p = (PrivateData *) drvthis->private_data; - status->FB_modified = True; - x = min(status->width, x); - y = min(status->height, y); - status->framebuffer[x+status->width*(y-1)]=c; + p->FB_modified = True; + x = min(p->width, x); + y = min(p->height, y); + p->framebuffer[x+p->width*(y-1)]=c; }; /* Extended functions */ /* -MODULE_EXPORT void pylcd_vbar (Driver *drvthis, int x, int y, int len, int promille, int pattern){}; -MODULE_EXPORT void pylcd_hbar (Driver *drvthis, int x, int y, int len, int promille, int pattern){}; -MODULE_EXPORT void pylcd_num (Driver *drvthis, int x, int num){}; -MODULE_EXPORT void pylcd_heartbeat (Driver *drvthis, int state){}; -MODULE_EXPORT void pylcd_icon (Driver *drvthis, int x, int y, int icon){}; +MODULE_EXPORT void +pyramid_vbar (Driver *drvthis, int x, int y, int len, int promille, int pattern){}; +MODULE_EXPORT void +pyramid_hbar (Driver *drvthis, int x, int y, int len, int promille, int pattern){}; +MODULE_EXPORT void +pyramid_num (Driver *drvthis, int x, int num){}; +MODULE_EXPORT void +pyramid_heartbeat (Driver *drvthis, int state){}; +MODULE_EXPORT void +pyramid_icon (Driver *drvthis, int x, int y, int icon){}; */ -MODULE_EXPORT void pylcd_cursor (Driver *drvthis, int x, int y, int state) +MODULE_EXPORT void +pyramid_cursor (Driver *drvthis, int x, int y, int state) { - pylcd_private_data *status = (pylcd_private_data *) drvthis->private_data; + PrivateData *p = (PrivateData *) drvthis->private_data; - status->C_x = x; - status->C_y = y; - status->C_state = state; + p->C_x = x; + p->C_y = y; + p->C_state = state; }; /* Userdef characters, are those still supported ? */ /* -MODULE_EXPORT void pylcd_set_char (Driver *drvthis, int n, char *dat){}; -MODULE_EXPORT int pylcd_get_free_chars (Driver *drvthis){return 0;}; -MODULE_EXPORT int pylcd_cellwidth (Driver *drvthis){return 0;}; -MODULE_EXPORT int pylcd_cellheight (Driver *drvthis){return 0;}; +MODULE_EXPORT void +pyramid_set_char (Driver *drvthis, int n, char *dat){}; +MODULE_EXPORT int +pyramid_get_free_chars (Driver *drvthis){return 0;}; +MODULE_EXPORT int +pyramid_cellwidth (Driver *drvthis){return 0;}; +MODULE_EXPORT int +pyramid_cellheight (Driver *drvthis){return 0;}; */ /* Hardware functions */ /* -MODULE_EXPORT int pylcd_get_contrast (Driver *drvthis){return 0;}; -MODULE_EXPORT void pylcd_set_contrast (Driver *drvthis, int promille){}; -MODULE_EXPORT int pylcd_get_brightness (Driver *drvthis, int state){return 0;}; -MODULE_EXPORT void pylcd_set_brightness (Driver *drvthis, int state, int promille){}; -MODULE_EXPORT void pylcd_backlight (Driver *drvthis, int on) +MODULE_EXPORT int +pyramid_get_contrast (Driver *drvthis){return 0;}; +MODULE_EXPORT void +pyramid_set_contrast (Driver *drvthis, int promille){}; +MODULE_EXPORT int +pyramid_get_brightness (Driver *drvthis, int state){return 0;}; +MODULE_EXPORT void +pyramid_set_brightness (Driver *drvthis, int state, int promille){}; +MODULE_EXPORT void +pyramid_backlight (Driver *drvthis, int on) */ -MODULE_EXPORT void pylcd_output (Driver *drvthis, int state) +MODULE_EXPORT void +pyramid_output (Driver *drvthis, int state) { - pylcd_private_data *status = (pylcd_private_data *) drvthis->private_data; + PrivateData *p = (PrivateData *) drvthis->private_data; int i; for (i = 0; i < 7; i++) - status->led[i] = state & (1 << i); + p->led[i] = state & (1 << i); - set_leds(status); + set_leds(p); }; /* Key functions */ -MODULE_EXPORT const char *pylcd_get_key (Driver *drvthis) +MODULE_EXPORT const char * +pyramid_get_key (Driver *drvthis) { /* supports only one key at a time */ static char buffer[MAXCOUNT]; unsigned long long current_time; int retval; - pylcd_private_data *status = (pylcd_private_data *) drvthis->private_data; + PrivateData *p = (PrivateData *) drvthis->private_data; /* Now we read everything from the display and as long as we got ACKs, we ignore them. */ while (1) { - retval = read_tele(status, buffer); + retval = read_tele(p, buffer); if ((retval == False) || (buffer[0] != 'Q')) break; } if (retval == False) - strcpy(buffer, status->last_key_pressed); + strcpy(buffer, p->last_key_pressed); else - send_ACK(status); + send_ACK(p); /* If a key wasn't released yet it may be released now. */ if (buffer[0] == 'K') @@ -459,33 +499,33 @@ MODULE_EXPORT const char *pylcd_get_key (Driver *drvthis) || (strcmp(buffer, "K0300") == 0) || (strcmp(buffer, "K3000") == 0)) { - debug(RPT_DEBUG, "%s: Key released: %s", __FUNCTION__, status->last_key_pressed); - strcpy(status->last_key_pressed, NOKEY); + debug(RPT_DEBUG, "%s: Key released: %s", __FUNCTION__, p->last_key_pressed); + strcpy(p->last_key_pressed, NOKEY); return NULL; } else /* It must be a new key event */ { - strcpy(status->last_key_pressed, buffer); - debug(RPT_DEBUG, "%s: Key pressed: %s", __FUNCTION__, status->last_key_pressed); + strcpy(p->last_key_pressed, buffer); + debug(RPT_DEBUG, "%s: Key pressed: %s", __FUNCTION__, p->last_key_pressed); } } /* If no keys are pressed at this time, we are done. */ - if (status->last_key_pressed[0] == NOKEY[0]) + if (p->last_key_pressed[0] == NOKEY[0]) return NULL; - current_time = timestamp(status); - if (current_time > status->last_key_time + 500000) /* (buffer[0]=='K' ? 500000 : 250000)) */ - status->last_key_time = current_time; + current_time = timestamp(p); + if (current_time > p->last_key_time + 500000) /* (buffer[0]=='K' ? 500000 : 250000)) */ + p->last_key_time = current_time; else return NULL; - if (strcmp(status->last_key_pressed, "K0001") == 0) /* first from left */ + if (strcmp(p->last_key_pressed, "K0001") == 0) /* first from left */ return "Up"; - if (strcmp(status->last_key_pressed, "K0010") == 0) /* second from left */ + if (strcmp(p->last_key_pressed, "K0010") == 0) /* second from left */ return "Down"; - if (strcmp(status->last_key_pressed, "K0100") == 0) /* third from left */ + if (strcmp(p->last_key_pressed, "K0100") == 0) /* third from left */ return "Enter"; - if (strcmp(status->last_key_pressed, "K1000") == 0) /* last from left */ + if (strcmp(p->last_key_pressed, "K1000") == 0) /* last from left */ return "Escape"; return NULL; @@ -495,7 +535,8 @@ MODULE_EXPORT const char *pylcd_get_key (Driver *drvthis) /* Returns a string. Server cannot modify this string. */ /* -MODULE_EXPORT const char *pylcd_get_info (){return NULL;}; +MODULE_EXPORT const char * +pyramid_get_info (){return NULL;}; */ diff --git a/server/drivers/pylcd.h b/server/drivers/pylcd.h index 9fe0523..594ead5 100644 --- a/server/drivers/pylcd.h +++ b/server/drivers/pylcd.h @@ -2,7 +2,7 @@ /* This is the header file of the LCDproc driver for - the "pylcd" device from Pyramid. + the "pyramid" LCD device from Pyramid. Copyright (C) 2005 Silvan Marco Fin @@ -35,15 +35,11 @@ #define WIDTH 16 #define HEIGHT 2 -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 = "pylcd_"; typedef struct { int FD; - char devicename[255]; + char device[255]; int width; int height; fd_set rdfs; @@ -58,7 +54,7 @@ typedef struct int C_y; int C_state; char led[7]; -} pylcd_private_data; +} PrivateData; #endif diff --git a/tags b/tags index 549ed48..1b0b8c2 100644 --- a/tags +++ b/tags @@ -216,7 +216,7 @@ CwLnx_string CwLnx.c /^CwLnx_string(Driver * drvthis, int x, int y, char / CwLnx_vbar CwLnx.c /^CwLnx_vbar(Driver * drvthis, int x, int y, int len/ CwLnx_width CwLnx.c /^CwLnx_width(Driver *drvthis)$/ daemonize main.c /^daemonize(void)$/ -data_ready pylcd.c /^int data_ready(pylcd_private_data *status)$/ +data_ready pylcd.c /^int data_ready(PrivateData *p)$/ debug debug.h /^static inline void debug(const char *format, ...\/*/ Disable_Backlight CwLnx.c /^void Disable_Backlight(int fd)$/ Disable_Cursor CwLnx.c /^void Disable_Cursor(int fd)$/ @@ -804,21 +804,21 @@ process_configfile lcdexec.c /^int process_configfile( char * configfile )$/ process_configfile main.c /^process_configfile(char *configfile)$/ process_response lcdexec.c /^int process_response( char * str )$/ PROCSIZE machine_NetBSD.c /^#define PROCSIZE(pp) ((pp)->p_vm_tsize + (pp)->p_v/ -pylcd_chr pylcd.c /^MODULE_EXPORT void pylcd_chr (Driver *drvthis, int/ -pylcd_clear pylcd.c /^MODULE_EXPORT void pylcd_clear (Driver *drvthis)$/ -pylcd_close pylcd.c /^MODULE_EXPORT void pylcd_close (Driver *drvthis)$/ -pylcd_cursor pylcd.c /^MODULE_EXPORT void pylcd_cursor (Driver *drvthis, / -pylcd_flush pylcd.c /^MODULE_EXPORT void pylcd_flush (Driver *drvthis)$/ -pylcd_get_key pylcd.c /^MODULE_EXPORT const char *pylcd_get_key (Driver *d/ -pylcd_height pylcd.c /^MODULE_EXPORT int pylcd_height (Driver *drvthis)$/ -pylcd_init pylcd.c /^MODULE_EXPORT int pylcd_init (Driver *drvthis, ch/ -pylcd_output pylcd.c /^MODULE_EXPORT void pylcd_output (Driver *drvthis, / -pylcd_string pylcd.c /^MODULE_EXPORT void pylcd_string (Driver *drvthis, / -pylcd_width pylcd.c /^MODULE_EXPORT int pylcd_width (Driver *drvthis)$/ +pyramid_chr pylcd.c /^MODULE_EXPORT void pyramid_chr (Driver *drvthis, int/ +pyramid_clear pylcd.c /^MODULE_EXPORT void pyramid_clear (Driver *drvthis)$/ +pyramid_close pylcd.c /^MODULE_EXPORT void pyramid_close (Driver *drvthis)$/ +pyramid_cursor pylcd.c /^MODULE_EXPORT void pyramid_cursor (Driver *drvthis, / +pyramid_flush pylcd.c /^MODULE_EXPORT void pyramid_flush (Driver *drvthis)$/ +pyramid_get_key pylcd.c /^MODULE_EXPORT const char *pyramid_get_key (Driver *d/ +pyramid_height pylcd.c /^MODULE_EXPORT int pyramid_height (Driver *drvthis)$/ +pyramid_init pylcd.c /^MODULE_EXPORT int pyramid_init (Driver *drvthis, ch/ +pyramid_output pylcd.c /^MODULE_EXPORT void pyramid_output (Driver *drvthis, / +pyramid_string pylcd.c /^MODULE_EXPORT void pyramid_string (Driver *drvthis, / +pyramid_width pylcd.c /^MODULE_EXPORT int pyramid_width (Driver *drvthis)$/ rawshift hd44780-serialLpt.c /^rawshift (PrivateData *p, unsigned char r)$/ -read_ACK pylcd.c /^int read_ACK(pylcd_private_data *status)$/ +read_ACK pylcd.c /^int read_ACK(PrivateData *p)$/ Read_LCD CwLnx.c /^int Read_LCD(int fd, char *c, int size)$/ -read_tele pylcd.c /^int read_tele(pylcd_private_data *status, char *bu/ +read_tele pylcd.c /^int read_tele(PrivateData *p, char *bu/ render_frame render.c /^render_frame (LinkedList * list,$/ render_screen render.c /^render_screen (Screen * s, long int timer)$/ report report.c /^void report( const int level, const char *format, / @@ -890,11 +890,11 @@ sem_get lcd_sem.c /^sem_get (void)$/ sem_remove lcd_sem.c /^sem_remove (int sid)$/ sem_signal lcd_sem.c /^sem_signal (int sid)$/ sem_wait lcd_sem.c /^sem_wait (int sid)$/ -send_ACK pylcd.c /^int send_ACK(pylcd_private_data *status)$/ +send_ACK pylcd.c /^int send_ACK(PrivateData *p)$/ send_bytes_message CFontz633io.c /^void send_bytes_message(int fd, unsigned char msg,/ send_onebyte_message CFontz633io.c /^void send_onebyte_message(int fd, unsigned char ms/ send_packet CFontz633io.c /^send_packet(int fd, COMMAND_PACKET *out, COMMAND_P/ -send_tele pylcd.c /^int send_tele(pylcd_private_data *status, char *bu/ +send_tele pylcd.c /^int send_tele(PrivateData *p, char *bu/ send_zerobyte_message CFontz633io.c /^void send_zerobyte_message(int fd, unsigned char m/ serialVFD_cellheight serialVFD.c /^serialVFD_cellheight (Driver *drvthis)$/ serialVFD_cellwidth serialVFD.c /^serialVFD_cellwidth (Driver *drvthis)$/ @@ -931,7 +931,7 @@ set_default_settings main.c /^set_default_settings(void)$/ SetFan hd44780-lis2.c /^void SetFan(int fd, int fan1, int fan2, int fan3, / set_foreground_color curses_drv.c /^set_foreground_color (char * buf) {$/ Set_Insert CwLnx.c /^void Set_Insert(int fd, int row, int col)$/ -set_leds pylcd.c /^int set_leds(pylcd_private_data *status)$/ +set_leds pylcd.c /^int set_leds(PrivateData *p)$/ SetMatrice hd44780-lis2.c /^void SetMatrice(PrivateData *p, int fd, int matric/ set_predecessor menu_commands.c /^int set_predecessor(MenuItem *item, char *itemid, / set_reporting report.c /^int set_reporting( char *application_name, int new/ @@ -1067,7 +1067,7 @@ timercmp timing.h /^# define timercmp(a, b, CMP) / timerisset timing.h /^# define timerisset(tvp) ((tvp)->tv_sec || / timersub timing.h /^# define timersub(a, b, result) / time_screen chrono.c /^time_screen (int rep, int display, int *flags_ptr)/ -timestamp pylcd.c /^unsigned long long timestamp(pylcd_private_data *s/ +timestamp pylcd.c /^unsigned long long timestamp(PrivateData *s/ timing_init timing.h /^static inline int timing_init() {$/ timing_uPause timing.h /^static inline void timing_uPause (int usecs) {$/ tyan_lcdm_backlight tyan_lcdm.c /^tyan_lcdm_backlight (Driver * drvthis, int on)$/