add support for the glcdlib meta driver by Lucian Muresan
This commit is contained in:
@@ -38,6 +38,7 @@ Driver=curses
|
|||||||
#Driver=MtxOrb
|
#Driver=MtxOrb
|
||||||
#Driver=CFontz633
|
#Driver=CFontz633
|
||||||
#Driver=CwLnx
|
#Driver=CwLnx
|
||||||
|
#Driver=glcdlib
|
||||||
|
|
||||||
# Tells the driver to bind to the given interface
|
# Tells the driver to bind to the given interface
|
||||||
Bind=127.0.0.1
|
Bind=127.0.0.1
|
||||||
@@ -561,4 +562,53 @@ Device=/dev/lcd
|
|||||||
Speed=19200
|
Speed=19200
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## glcdlib meta driver for graphical LCDs ##
|
||||||
|
[glcdlib]
|
||||||
|
|
||||||
|
## mandatory:
|
||||||
|
|
||||||
|
# which graphical display supported by graphlcd-base to use
|
||||||
|
# (see /etc/graphlcd.conf for possible drivers)
|
||||||
|
Driver=noritake800
|
||||||
|
|
||||||
|
# no=use graphlcd bitmap fonts (they have only one size / font file)
|
||||||
|
# yes=use fonts supported by FreeType2 (needs Freetype2 support in libglcdprocdriver and its dependants)
|
||||||
|
UseFT2=yes
|
||||||
|
|
||||||
|
# text resolution in fixed width characters (if it won't fit according
|
||||||
|
# to available physical pixel resolution and the minimum available font
|
||||||
|
# face size in pixels, 'DebugBorder' will automatically be turned on)
|
||||||
|
TextResolution=20x4
|
||||||
|
|
||||||
|
# path to font file to use
|
||||||
|
FontFile=/usr/share/fonts/corefonts/courbd.ttf # path to font file to use
|
||||||
|
#FontFile=/fonts/f8b.fnt # path to font file to use
|
||||||
|
|
||||||
|
|
||||||
|
## these only apply if UseFT2=yes:
|
||||||
|
|
||||||
|
# character encoding to use
|
||||||
|
CharEncoding=iso8859-2
|
||||||
|
|
||||||
|
# minumum size in pixels in which fonts should be rendered
|
||||||
|
MinFontFaceSize=7x12
|
||||||
|
|
||||||
|
|
||||||
|
## optional:
|
||||||
|
Brightness=50 # Brightness (in %) if applicable
|
||||||
|
Contrast=50 # Contrast (in %) if applicable
|
||||||
|
Backlight=no # Backlight if applicable
|
||||||
|
UpsideDown=no # flip image upside down
|
||||||
|
Invert=no # invert light/dark pixels
|
||||||
|
ShowDebugFrame=no # turns on/off 1 pixel thick debugging
|
||||||
|
# border whithin the usable text area,
|
||||||
|
# for setting up TextResolution and
|
||||||
|
# MinFontFaceSize (if unsing FT2);
|
||||||
|
ShowBigBorder=no # border around the unused area
|
||||||
|
ShowThinBorder=yes # border around the unused area
|
||||||
|
PixelShiftX=0
|
||||||
|
PixelshiftY=2
|
||||||
|
|
||||||
|
|
||||||
# EOF
|
# EOF
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
The so-called "meta-driver" glcdlib extends LCDproc's supported drivers by
|
||||||
|
all the drivers supported by graphlcd-base, which you can get from
|
||||||
|
http://graphlcd.berlios.de.
|
||||||
|
In order to be able to use it, you have to get and install the glcdprocdriver
|
||||||
|
from http://www.muresan.de/graphlcd/lcdproc before configuring the LCDproc
|
||||||
|
build process --enable-drivers=glcdlib.
|
||||||
|
|
||||||
|
Lucian Muresan
|
||||||
+14
-3
@@ -8,13 +8,13 @@ AC_ARG_ENABLE(drivers,
|
|||||||
[ mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,]
|
[ mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,]
|
||||||
[ hd44780,joy,irman,lirc,bayrad,glk,,mtc_s16209x]
|
[ hd44780,joy,irman,lirc,bayrad,glk,,mtc_s16209x]
|
||||||
[ stv5730,sed1330,sed1520,svga,lcdm001,t6963]
|
[ stv5730,sed1330,sed1520,svga,lcdm001,t6963]
|
||||||
[ lcterm,icp_a106,ms6931,iowarrior]
|
[ lcterm,icp_a106,ms6931,iowarrior,glcdlib]
|
||||||
[ \"all\" compiles all drivers],
|
[ \"all\" compiles all drivers],
|
||||||
drivers="$enableval",
|
drivers="$enableval",
|
||||||
drivers=[lcdm001,mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,bayrad,glk])
|
drivers=[lcdm001,mtxorb,cfontz,cfontz633,curses,cwlnx,text,lb216,bayrad,glk])
|
||||||
|
|
||||||
if test "$drivers" = "all"; then
|
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,svga,lcdm001,t6963,lcterm,icp_a106,ms6931,iowarrior,glcdlib]
|
||||||
fi
|
fi
|
||||||
|
|
||||||
drivers=`echo $drivers | sed 's/,/ /g'`
|
drivers=`echo $drivers | sed 's/,/ /g'`
|
||||||
@@ -230,7 +230,17 @@ dnl else
|
|||||||
AC_MSG_WARN([The sed1330 driver needs a parallel port.])
|
AC_MSG_WARN([The sed1330 driver needs a parallel port.])
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
glcdlib)
|
||||||
|
AC_CHECK_HEADERS([glcdproclib/glcdprocdriver.h],[
|
||||||
|
LIBGLCD="-lglcddrivers -lglcdgraphics -lglcdprocdriver"
|
||||||
|
DRIVERS="$DRIVERS glcdlib${SO}"
|
||||||
|
actdrivers=["$actdrivers glcdlib"]
|
||||||
|
],[
|
||||||
|
dnl else
|
||||||
|
AC_MSG_WARN([The glcdlib driver needs glcdproclib/glcdprocdriver.h])
|
||||||
|
])
|
||||||
|
;;
|
||||||
|
*)
|
||||||
AC_MSG_ERROR([Unknown driver $driver])
|
AC_MSG_ERROR([Unknown driver $driver])
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -245,6 +255,7 @@ AC_SUBST(LIBLIRC_CLIENT)
|
|||||||
AC_SUBST(LIBSVGA)
|
AC_SUBST(LIBSVGA)
|
||||||
AC_SUBST(DRIVERS)
|
AC_SUBST(DRIVERS)
|
||||||
AC_SUBST(HD44780_DRIVERS)
|
AC_SUBST(HD44780_DRIVERS)
|
||||||
|
AC_SUBST(LIBGLCD)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -68,6 +68,9 @@ CrystalFontz LCD displays
|
|||||||
.B curses (or ncurses)
|
.B curses (or ncurses)
|
||||||
Standard video display using the ncurses library
|
Standard video display using the ncurses library
|
||||||
.TP
|
.TP
|
||||||
|
.B glcdlib
|
||||||
|
graphical LCDs supported by graphlcd-base
|
||||||
|
.TP
|
||||||
.B HD44780
|
.B HD44780
|
||||||
Hitachi HD44780 LCD displays
|
Hitachi HD44780 LCD displays
|
||||||
.TP
|
.TP
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ Available options are:
|
|||||||
|
|
||||||
Currently available drivers:
|
Currently available drivers:
|
||||||
lcdm001, LCDM001, MtxOrb, MatrixOrbital, CFontz, CrystalFontz, LB216, text,
|
lcdm001, LCDM001, MtxOrb, MatrixOrbital, CFontz, CrystalFontz, LB216, text,
|
||||||
curses, ncurses, BayRAD, glk, glc, IOWarrior
|
curses, ncurses, BayRAD, glk, glc, IOWarrior, glcdlib
|
||||||
|
|
||||||
|
|
||||||
]]>
|
]]>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ AM_LDFLAGS = @LDSHARED@
|
|||||||
LIBS =
|
LIBS =
|
||||||
|
|
||||||
pkglib_PROGRAMS = @DRIVERS@
|
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 stv5730 svga t6963 text wirz_sli ms6931 IOWarrior glcdlib
|
||||||
noinst_LIBRARIES = libLCD.a
|
noinst_LIBRARIES = libLCD.a
|
||||||
|
|
||||||
IOWarrior_CFLAGS = @libusb_cflags@
|
IOWarrior_CFLAGS = @libusb_cflags@
|
||||||
@@ -38,6 +38,7 @@ lirc_LDADD = @LIBLIRC_CLIENT@
|
|||||||
lcterm_LDADD = libLCD.a
|
lcterm_LDADD = libLCD.a
|
||||||
svga_LDADD = @LIBSVGA@
|
svga_LDADD = @LIBSVGA@
|
||||||
t6963_LDADD = libLCD.a
|
t6963_LDADD = libLCD.a
|
||||||
|
glcdlib_LDADD = libLCD.a @LIBGLCD@
|
||||||
|
|
||||||
libLCD_a_SOURCES = lcd_lib.h lcd_lib.c
|
libLCD_a_SOURCES = lcd_lib.h lcd_lib.c
|
||||||
|
|
||||||
@@ -67,5 +68,6 @@ t6963_SOURCES = lcd.h t6963.c t6963.h t6963_font.h report.h
|
|||||||
text_SOURCES = lcd.h text.h text.c report.h
|
text_SOURCES = lcd.h text.h text.c report.h
|
||||||
wirz_sli_SOURCES = lcd.h wirz-sli.h wirz-sli.c report.h
|
wirz_sli_SOURCES = lcd.h wirz-sli.h wirz-sli.c report.h
|
||||||
ms6931_SOURCES = lcd.h ms6931.h ms6931.c report.h
|
ms6931_SOURCES = lcd.h ms6931.h ms6931.c report.h
|
||||||
|
glcdlib_SOURCES = lcd.h glcdlib.h glcdlib.c report.h
|
||||||
|
|
||||||
INCLUDES = -I$(top_srcdir)
|
INCLUDES = -I$(top_srcdir)
|
||||||
|
|||||||
@@ -0,0 +1,425 @@
|
|||||||
|
/*
|
||||||
|
* This so-called "meta-driver" extends LCDproc's supported drivers by
|
||||||
|
* all the drivers supported by graphlcd-base, which you can get from
|
||||||
|
* http://graphlcd.berlios.de.
|
||||||
|
* In order to be able to use it, you have to get and install the glcdprocdriver
|
||||||
|
* from http://www.muresan.de/graphlcd/lcdproc.
|
||||||
|
*
|
||||||
|
* This file is released under the GNU General Public License. Refer to the
|
||||||
|
* COPYING file distributed with this package.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2005 Lucian Muresan <lucianm AT users.sourceforge.net>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <glcdproclib/glcdprocdriver.h>
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "lcd.h"
|
||||||
|
#include "lcd_lib.h"
|
||||||
|
#include "shared/debug.h"
|
||||||
|
//#define DEBUG
|
||||||
|
#include "report.h"
|
||||||
|
|
||||||
|
#include "glcdlib.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define DEBUG3 if(debug_level > 2) printf
|
||||||
|
#define DEBUG4 if(debug_level > 3) printf
|
||||||
|
#define debug_level 2
|
||||||
|
|
||||||
|
//extern int debug_level;
|
||||||
|
|
||||||
|
// our private data
|
||||||
|
typedef struct {
|
||||||
|
GlcdDriver * glcdDriver;
|
||||||
|
char info[255];
|
||||||
|
} glcdlibPD;
|
||||||
|
|
||||||
|
|
||||||
|
// 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 = "glcdlib_";
|
||||||
|
|
||||||
|
|
||||||
|
MODULE_EXPORT int glcdlib_init (Driver *drvthis, char *args)
|
||||||
|
{
|
||||||
|
glcdlibPD * pPD;
|
||||||
|
|
||||||
|
// Alocate, initialize and store private p
|
||||||
|
pPD = (glcdlibPD *) malloc( sizeof(glcdlibPD) );
|
||||||
|
if(!pPD)
|
||||||
|
{
|
||||||
|
debug(RPT_ERR, "glcdlib_init: failed to allocate private data");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
pPD->glcdDriver = 0;
|
||||||
|
memset(pPD->info, '\0', sizeof(pPD->info));
|
||||||
|
|
||||||
|
if( drvthis->store_private_ptr( drvthis, pPD ) )
|
||||||
|
{
|
||||||
|
debug(RPT_ERR, "glcdlib_init: failed to store private data pointer");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
debug(RPT_INFO, "glcdlib_init: reading config file...");
|
||||||
|
//##################################################################
|
||||||
|
// Read config file
|
||||||
|
//##################################################################
|
||||||
|
|
||||||
|
|
||||||
|
//##################################################################
|
||||||
|
// mandatory entries:
|
||||||
|
|
||||||
|
// which driver
|
||||||
|
char strCfgDriver[30];
|
||||||
|
strncpy(strCfgDriver,
|
||||||
|
drvthis->config_get_string ( drvthis->name, "Driver", 0, "image"),
|
||||||
|
sizeof(strCfgDriver));
|
||||||
|
|
||||||
|
// use or not FreeType2
|
||||||
|
bool bCfgUseFT2 = drvthis->config_get_bool( drvthis->name, "UseFT2", 0, true);
|
||||||
|
|
||||||
|
// which text resolution
|
||||||
|
char strTextResDefault[] = "16x4";
|
||||||
|
char strTextRes[7];
|
||||||
|
int nCfgTextWidth = 0;
|
||||||
|
int nCfgTextRows = 0;
|
||||||
|
strncpy(strTextRes,
|
||||||
|
drvthis->config_get_string ( drvthis->name,
|
||||||
|
"TextResolution",
|
||||||
|
0,
|
||||||
|
strTextResDefault),
|
||||||
|
sizeof(strTextRes));
|
||||||
|
strTextRes[sizeof(strTextRes)-1]=0;
|
||||||
|
if( sscanf(strTextRes, "%dx%d", &nCfgTextWidth, &nCfgTextRows ) != 2
|
||||||
|
|| (nCfgTextWidth <= 0) || (nCfgTextWidth > LCD_MAX_WIDTH)
|
||||||
|
|| (nCfgTextRows <= 0) || (nCfgTextRows > LCD_MAX_HEIGHT))
|
||||||
|
{
|
||||||
|
report( RPT_WARNING,
|
||||||
|
"GLCDLIB: Cannot read or invalid TextResolution: %s, Using default value.\n",
|
||||||
|
strTextResDefault);
|
||||||
|
sscanf( strTextResDefault, "%dx%d", &nCfgTextWidth, &nCfgTextRows );
|
||||||
|
}
|
||||||
|
|
||||||
|
// which font file
|
||||||
|
char strCfgFontFile[256];
|
||||||
|
strncpy(strCfgFontFile,
|
||||||
|
drvthis->config_get_string ( drvthis->name,
|
||||||
|
"FontFile",
|
||||||
|
0,
|
||||||
|
"/usr/share/fonts/corefonts/courbd.ttf"),
|
||||||
|
sizeof(strCfgFontFile));
|
||||||
|
|
||||||
|
//##################################################################
|
||||||
|
// these only apply if bCfgUseFT2 = yes:
|
||||||
|
|
||||||
|
// character encoding
|
||||||
|
char strCfgEncoding[25];
|
||||||
|
strncpy(strCfgEncoding,
|
||||||
|
drvthis->config_get_string ( drvthis->name, "CharEncoding", 0, "ISO8859-1"),
|
||||||
|
sizeof(strCfgEncoding));
|
||||||
|
|
||||||
|
// minimum font face pixel resolution
|
||||||
|
char strMinFaceSizeDef[] = "6x8";
|
||||||
|
char strMinFontFaceSize[7];
|
||||||
|
int nCfgMinFontFaceWidth = 0;
|
||||||
|
int nCfgMinFontFaceHeight = 0;
|
||||||
|
strncpy(strMinFontFaceSize,
|
||||||
|
drvthis->config_get_string ( drvthis->name,
|
||||||
|
"MinFontFaceSize",
|
||||||
|
0,
|
||||||
|
strMinFaceSizeDef),
|
||||||
|
sizeof(strMinFontFaceSize));
|
||||||
|
strTextRes[sizeof(strMinFontFaceSize)-1]=0;
|
||||||
|
if( sscanf(strMinFontFaceSize, "%dx%d", &nCfgMinFontFaceWidth, &nCfgMinFontFaceHeight ) != 2
|
||||||
|
|| (nCfgMinFontFaceWidth <= 0) || (nCfgMinFontFaceWidth > LCD_MAX_WIDTH)
|
||||||
|
|| (nCfgMinFontFaceHeight <= 0) || (nCfgMinFontFaceHeight > LCD_MAX_HEIGHT))
|
||||||
|
{
|
||||||
|
report( RPT_WARNING,
|
||||||
|
"GLCDLIB: Cannot read or invalid TextResolution: %s, Using default value.\n",
|
||||||
|
strMinFaceSizeDef);
|
||||||
|
sscanf( strMinFaceSizeDef, "%dx%d", &nCfgMinFontFaceWidth, &nCfgMinFontFaceHeight );
|
||||||
|
}
|
||||||
|
|
||||||
|
// show debugging frame?
|
||||||
|
bool bShowDbgFrame = drvthis->config_get_bool( drvthis->name, "ShowDebugFrame", 0, true);
|
||||||
|
// show big border?
|
||||||
|
bool bShowBigBorder = drvthis->config_get_bool( drvthis->name, "ShowBigBorder", 0, true);
|
||||||
|
// show thin border?
|
||||||
|
bool bShowThinBorder = drvthis->config_get_bool( drvthis->name, "ShowThinBorder", 0, true);
|
||||||
|
|
||||||
|
// pixel shift
|
||||||
|
int nPixShiftX = drvthis->config_get_int( drvthis->name, "PixelShiftX", 0, 0);
|
||||||
|
int nPixShiftY = drvthis->config_get_int( drvthis->name, "PixelShiftY", 0, 0);
|
||||||
|
|
||||||
|
//##################################################################
|
||||||
|
// these are optional and override graphlcd-base library's own settings
|
||||||
|
// before on startup only:
|
||||||
|
|
||||||
|
int nContrast = drvthis->config_get_int( drvthis->name, "Contrast", 0, 50);
|
||||||
|
bool bBacklight = drvthis->config_get_bool( drvthis->name, "Backlight", 0, false);
|
||||||
|
bool bUpsideDown = drvthis->config_get_bool( drvthis->name, "UpsideDown", 0, false);
|
||||||
|
|
||||||
|
// instantiate driver in the wrapper library
|
||||||
|
pPD->glcdDriver = glcddriverCreate();
|
||||||
|
|
||||||
|
if( !pPD->glcdDriver )
|
||||||
|
{
|
||||||
|
debug(RPT_ERR, "glcdlib_init: failed to instantiate glcdlib wrapper");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
glcddriverInit( pPD->glcdDriver,
|
||||||
|
strCfgDriver,
|
||||||
|
strCfgFontFile,
|
||||||
|
bCfgUseFT2,
|
||||||
|
strCfgEncoding,
|
||||||
|
nCfgMinFontFaceHeight,
|
||||||
|
bShowBigBorder,
|
||||||
|
bShowThinBorder,
|
||||||
|
bShowDbgFrame,
|
||||||
|
nPixShiftX,
|
||||||
|
nPixShiftY,
|
||||||
|
bUpsideDown,
|
||||||
|
bBacklight,
|
||||||
|
nContrast);
|
||||||
|
|
||||||
|
// apply supplemental settings
|
||||||
|
int nBrightness = drvthis->config_get_int( drvthis->name, "Brightness", 0, 50);
|
||||||
|
glcddriverSetBrightness(pPD->glcdDriver, nBrightness);
|
||||||
|
bool bInvert = drvthis->config_get_bool( drvthis->name, "Invert", 0, false);
|
||||||
|
glcddriverInvert(pPD->glcdDriver, bInvert);
|
||||||
|
|
||||||
|
debug (RPT_INFO, "GLCDLIB: Initialization done!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MODULE_EXPORT void
|
||||||
|
glcdlib_close (Driver *drvthis)
|
||||||
|
{
|
||||||
|
debug (RPT_INFO, "Shutting down!\n");
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
glcddriverDestroy(pPD->glcdDriver);
|
||||||
|
pPD->glcdDriver = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Returns the display width
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
glcdlib_width (Driver *drvthis)
|
||||||
|
{
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
return glcddriverTextWidth(pPD->glcdDriver);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Returns the display height
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
glcdlib_height (Driver *drvthis)
|
||||||
|
{
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
return glcddriverTextHeight(pPD->glcdDriver);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Clears the LCD screen
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
glcdlib_clear (Driver *drvthis)
|
||||||
|
{
|
||||||
|
debug (RPT_DEBUG, "Clearing screen\n");
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
glcddriverClear(pPD->glcdDriver);
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////
|
||||||
|
// Flushes all output to the lcd...
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
glcdlib_flush (Driver *drvthis)
|
||||||
|
{
|
||||||
|
debug (RPT_DEBUG, "glcdlib_flush: Flushing pixbuffer(s)\n");
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
glcddriverRefresh(pPD->glcdDriver, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Prints a string on the lcd display, at position (x,y). The
|
||||||
|
// upper-left is (1,1), and the lower right should be (20,6).
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
glcdlib_string (Driver *drvthis, int x, int y, char string[])
|
||||||
|
{
|
||||||
|
debug (RPT_DEBUG, "String out\n");
|
||||||
|
y--;
|
||||||
|
x--;
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
glcddriverDrawText(pPD->glcdDriver, x, y, string);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Prints a character on the lcd display, at position (x,y). The
|
||||||
|
// upper-left is (1,1), and the lower right should be (20,6).
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
glcdlib_chr (Driver *drvthis, int x, int y, char c)
|
||||||
|
{
|
||||||
|
debug (RPT_DEBUG, "Char out\n");
|
||||||
|
y--;
|
||||||
|
x--;
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
glcddriverDrawCharacter(pPD->glcdDriver, x, y, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Sets an icon...
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
glcdlib_icon (Driver *drvthis, int x, int y, int icon)
|
||||||
|
{
|
||||||
|
debug (RPT_DEBUG, "GLCDLIB: set icon %d", icon);
|
||||||
|
y--;
|
||||||
|
x--;
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
return glcddriverDrawIcon(pPD->glcdDriver, x, y, icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// provides some info about this driver
|
||||||
|
//
|
||||||
|
MODULE_EXPORT char *
|
||||||
|
glcdlib_get_info (Driver *drvthis)
|
||||||
|
{
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
strcpy(pPD->info, "Meta driver which adds support for displays supported by graphlcd-base ");
|
||||||
|
return pPD->info;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Returns the display's cell width
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
glcdlib_cellwidth (Driver *drvthis)
|
||||||
|
{
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
return glcddriverCellWidth(pPD->glcdDriver);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Returns the display's cell height
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
glcdlib_cellheight (Driver *drvthis)
|
||||||
|
{
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
return glcddriverCellHeight(pPD->glcdDriver);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Returns the maximum number of custom char slots (not how many
|
||||||
|
// are free at a moment, maybe this isn't even needed...
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
glcdlib_get_free_chars (Driver *drvthis)
|
||||||
|
{
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
return glcddriverMaxCustomChars(pPD->glcdDriver);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Retrieves brightness (in promille ??????)
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
glcdlib_get_brightness(Driver *drvthis)
|
||||||
|
{
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
return 10 * glcddriverGetBrightness(pPD->glcdDriver);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Sets brightness (in promille ??????)
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
glcdlib_set_brightness(Driver *drvthis, int promille)
|
||||||
|
{
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
glcddriverSetBrightness(pPD->glcdDriver, promille/10);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Sets a custom character from 0 to glcdlib_get_free_chars - 1
|
||||||
|
// The input is an array of characters [cellheight x cellwidth]
|
||||||
|
// (0 & 1 according to pixels) ordered by rows
|
||||||
|
MODULE_EXPORT void
|
||||||
|
glcdlib_set_char (Driver *drvthis, int n, char *dat)
|
||||||
|
{
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
glcddriverSetCustomChar(pPD->glcdDriver, n, dat);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////
|
||||||
|
// Draws a big (4-row) number.
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
glcdlib_num (Driver *drvthis, int x, int num)
|
||||||
|
{
|
||||||
|
x--;
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
glcddriverDrawBigNum(pPD->glcdDriver, x, num);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Draws a horizontal bar to the right.
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
glcdlib_hbar (Driver *drvthis, int x, int y, int len, int promille, int options)
|
||||||
|
{
|
||||||
|
y--;
|
||||||
|
x--;
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
glcddriverDrawBarH(pPD->glcdDriver, x, y, len, promille, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Draws a vertical bar, from the bottom of the screen up.
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
glcdlib_vbar (Driver *drvthis, int x, int y, int len, int promille, int options)
|
||||||
|
{
|
||||||
|
y--;
|
||||||
|
x--;
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
glcddriverDrawBarV(pPD->glcdDriver, x, y, len, promille, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Turns backlight on/off
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
glcdlib_backlight(Driver *drvthis, int on)
|
||||||
|
{
|
||||||
|
glcdlibPD * pPD = drvthis->private_data;
|
||||||
|
}
|
||||||
|
*/
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* This so-called "meta-driver" extends LCDproc's supported drivers by
|
||||||
|
* all the drivers supported by graphlcd-base, which you can get from
|
||||||
|
* http://graphlcd.berlios.de.
|
||||||
|
* In order to be able to use it, you have to get and install the glcdprocdriver
|
||||||
|
* from http://www.muresan.de/graphlcd/lcdproc.
|
||||||
|
*
|
||||||
|
* This file is released under the GNU General Public License. Refer to the
|
||||||
|
* COPYING file distributed with this package.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2005 Lucian Muresan <lucianm AT users.sourceforge.net>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef GLCDLIBLCDPROCDRIVER_H
|
||||||
|
#define GLCDLIBLCDPROCDRIVER_H
|
||||||
|
|
||||||
|
#include "lcd.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef unsigned short u16;
|
||||||
|
typedef unsigned char u8;
|
||||||
|
|
||||||
|
// ****************************************************************************************
|
||||||
|
// * F U N C T I O N S *
|
||||||
|
// ****************************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
MODULE_EXPORT int glcdlib_init (Driver *drvthis, char *args);
|
||||||
|
MODULE_EXPORT void glcdlib_close (Driver *drvthis);
|
||||||
|
MODULE_EXPORT int glcdlib_width (Driver *drvthis);
|
||||||
|
MODULE_EXPORT int glcdlib_height (Driver *drvthis);
|
||||||
|
MODULE_EXPORT void glcdlib_clear (Driver *drvthis);
|
||||||
|
MODULE_EXPORT void glcdlib_flush (Driver *drvthis);
|
||||||
|
MODULE_EXPORT void glcdlib_string (Driver *drvthis, int x, int y, char string[]);
|
||||||
|
MODULE_EXPORT void glcdlib_chr (Driver *drvthis, int x, int y, char c);
|
||||||
|
MODULE_EXPORT int glcdlib_icon (Driver *drvthis, int x, int y, int icon);
|
||||||
|
MODULE_EXPORT int glcdlib_cellwidth (Driver *drvthis);
|
||||||
|
MODULE_EXPORT int glcdlib_cellheight (Driver *drvthis);
|
||||||
|
MODULE_EXPORT int glcdlib_get_free_chars (Driver *drvthis);
|
||||||
|
MODULE_EXPORT char * glcdlib_get_info (Driver *drvthis);
|
||||||
|
MODULE_EXPORT int glcdlib_get_brightness(Driver *drvthis);
|
||||||
|
MODULE_EXPORT void glcdlib_set_brightness(Driver *drvthis, int promille);
|
||||||
|
MODULE_EXPORT void glcdlib_set_char (Driver *drvthis, int n, char *dat);
|
||||||
|
MODULE_EXPORT void glcdlib_num (Driver *drvthis, int x, int num);
|
||||||
|
MODULE_EXPORT void glcdlib_vbar (Driver *drvthis, int x, int y, int len, int promille, int options);
|
||||||
|
MODULE_EXPORT void glcdlib_hbar (Driver *drvthis, int x, int y, int len, int promille, int options);
|
||||||
|
//MODULE_EXPORT void glcdlib_backlight(Driver *drvthis, int on);
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user