/* $Id: fontmap.h,v 1.2 2003/10/05 17:58:50 reinelt Exp $
*
* 5x8 font
*
* Copyright 1999, 2000 Michael Reinelt <reinelt@eunet.at>
*
* This file is part of LCD4Linux.
*
* LCD4Linux is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
pre { line-height: 125%; margin: 0; }
td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long *//* $Id: drv.c,v 1.9 2004/02/24 05:55:04 reinelt Exp $
*
* new framework for display drivers
*
* Copyright 1999-2003 Michael Reinelt <reinelt@eunet.at>
* Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
*
* This file is part of LCD4Linux.
*
* LCD4Linux is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* LCD4Linux is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*
* $Log: drv.c,v $
* Revision 1.9 2004/02/24 05:55:04 reinelt
*
* X11 driver ported
*
* Revision 1.8 2004/02/15 21:43:43 reinelt
* T6963 driver nearly finished
* framework for graphic displays done
* i2c_sensors patch from Xavier
* some more old generation files removed
*
* Revision 1.7 2004/02/15 08:22:47 reinelt
* ported USBLCD driver to NextGeneration
* added drv_M50530.c (I forgot yesterday, sorry)
* removed old drivers M50530.c and USBLCD.c
*
* Revision 1.6 2004/02/14 11:56:17 reinelt
* M50530 driver ported
* changed lots of 'char' to 'unsigned char'
*
* Revision 1.5 2004/01/27 06:34:14 reinelt
* Cwlinux driver portet to NextGeneration (compiles, but not tested!)
*
* Revision 1.4 2004/01/21 12:36:19 reinelt
* Crystalfontz NextGeneration driver added
*
* Revision 1.3 2004/01/20 15:32:49 reinelt
* first version of Next Generation HD44780 (untested! but it compiles...)
* some cleanup in the other drivers
*
* Revision 1.2 2004/01/10 10:20:22 reinelt
* new MatrixOrbital changes
*
* Revision 1.1 2004/01/09 17:03:07 reinelt
* initiated transfer to new driver architecture
* new file 'drv.c' will someday replace 'display.c'
* new file 'drv_MatrixOrbital.c' will replace 'MatrixOrbital.c'
* due to this 'soft' transfer lcd4linux should stay usable during the switch
* (at least I hope so)
*
*/
/*
* exported functions:
*
* drv_list (void)
* lists all available drivers to stdout
*
* drv_init (char *driver)
* initializes the named driver
*
* drv_query (int *rows, int *cols, int *xres, int *yres, int *bars, int *gpos)
* queries the attributes of the selected driver
*
* drv_clear ()
* clears the display
*
* int drv_put (int row, int col, char *text)
* writes text at row, col
*
* int drv_bar (int type, int row, int col, int max, int len1, int len2)
* draws a specified bar at row, col with len
*
* int drv_icon (int num, int seq, int row, int col)
* draws icon #num sequence #seq at row, col
*
* int drv_gpo (int num, int val)
* sets GPO #num to val
*
* int drv_flush (void)
* flushes the framebuffer to the display
*
* int drv_quit (void)
* de-initializes the driver
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "debug.h"
#include "cfg.h"
#include "drv.h"
extern DRIVER drv_BeckmannEgle;
extern DRIVER drv_Crystalfontz;
extern DRIVER drv_Cwlinux;
extern DRIVER drv_HD44780;
extern DRIVER drv_M50530;
extern DRIVER drv_T6963;
extern DRIVER drv_USBLCD;
extern DRIVER drv_MatrixOrbital;
extern DRIVER drv_MilfordInstruments;
extern DRIVER drv_PalmPilot;
extern DRIVER drv_Raster;
extern DRIVER drv_X11;
extern DRIVER drv_Text;
// output file for Raster driver
// has to be defined here because it's referenced
// even if the raster driver is not included!
char *output=NULL;
DRIVER *Driver[] = {
#ifdef WITH_MATRIXORBITAL
&drv_MatrixOrbital,
#endif
/* Fixme
#ifdef WITH_BECKMANNEGLE
&BeckmannEgle,
#endif
*/
#ifdef WITH_CRYSTALFONTZ
&drv_Crystalfontz,
#endif
#ifdef WITH_CWLINUX
&drv_Cwlinux,
#endif
#ifdef WITH_HD44780
&drv_HD44780,
#endif
#ifdef WITH_M50530
&drv_M50530,
#endif
#ifdef WITH_T6963
&drv_T6963,
#endif
#ifdef WITH_USBLCD
&drv_USBLCD,
#endif
/* Fixme
#ifdef WITH_MATRIXORBITAL
&MatrixOrbital,
#endif
#ifdef WITH_MILINST
&MilfordInstruments,
#endif
#ifdef WITH_PALMPILOT
&PalmPilot,
#endif
#if defined (WITH_PNG) || defined(WITH_PPM)
&Raster,
#endif
*/
#ifdef WITH_X11
&drv_X11,
#endif
/* Fixme
#ifdef WITH_TEXT
&Text,
#endif
*/
NULL,
};
static DRIVER *Drv = NULL;
int drv_list (void)
{
int i;
printf ("available display drivers:");
for (i=0; Driver[i]; i++) {
printf ("\n %-20s: ", Driver[i]->name);
if (Driver[i]->list) Driver[i]->list();
}
printf ("\n");
return 0;
}
int drv_init (char *section, char *driver)
{
int i;
for (i=0; Driver[i]; i++) {
if (strcmp (Driver[i]->name, driver)==0) {
Drv=Driver[i];
if (Drv->init==NULL) return 0;
return Drv->init(section);
}
}
error ("drv_init(%s) failed: no such driver", driver);
return -1;
}
int drv_quit (void)
{
if (Drv->quit==NULL) return 0;
return Drv->quit();
}