aboutsummaryrefslogtreecommitdiffstats
path: root/drv.h (follow)
AgeCommit message (Expand)AuthorFilesLines
2009-11-20special commandline parameters for X11volker1-0/+8
2007-09-09email address changedmichael1-1/+1
2007-01-14removed all tagsmichael1-47/+0
2007-01-14svn properties fixedmichael1-1/+2
2005-05-08[lcd4linux @ 2005-05-08 04:32:43 by reinelt]reinelt1-8/+11
2005-01-18[lcd4linux @ 2005-01-18 06:30:21 by reinelt]reinelt1-3/+6
2004-06-26[lcd4linux @ 2004-06-26 12:04:59 by reinelt]reinelt1-2/+6
2004-06-26[lcd4linux @ 2004-06-26 09:27:20 by reinelt]reinelt1-4/+11
2004-06-20[lcd4linux @ 2004-06-20 10:09:52 by reinelt]reinelt1-5/+9
2004-06-06[lcd4linux @ 2004-06-06 06:51:59 by reinelt]reinelt1-4/+7
2004-06-02[lcd4linux @ 2004-06-02 09:41:19 by reinelt]reinelt1-5/+10
2004-01-20[lcd4linux @ 2004-01-20 15:32:48 by reinelt]reinelt1-11/+5
2004-01-10[lcd4linux @ 2004-01-10 20:22:33 by reinelt]reinelt1-2/+8
2004-01-09[lcd4linux @ 2004-01-09 17:03:06 by reinelt]reinelt1-0/+65
a> 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
/* $Id$
 * $URL$
 *
 * NULL driver (for testing)
 *
 * Copyright (C) 2004 Michael Reinelt <michael@reinelt.co.at>
 * Copyright (C) 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.
 *
 */

/* 
 *
 * exported fuctions:
 *
 * struct DRIVER drv_NULL
 *
 */

#include "config.h"

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "debug.h"
#include "cfg.h"
#include "plugin.h"
#include "widget.h"
#include "widget_text.h"
#include "widget_bar.h"
#include "drv.h"
#include "drv_generic_text.h"


static char Name[] = "NULL";


/****************************************/
/***  hardware dependant functions    ***/
/****************************************/

static void drv_NULL_write(const __attribute__ ((unused))
			   int row, const __attribute__ ((unused))
			   int col, const __attribute__ ((unused))
			   char *data, const __attribute__ ((unused))
			   int len)
{
    /* empty */
}


static void drv_NULL_defchar(const __attribute__ ((unused))
			     int ascii, const __attribute__ ((unused))
			     unsigned char *matrix)
{
    /* empty */
}


static int drv_NULL_start(const char *section)
{
    char *s;

    s = cfg_get(section, "Size", "20x4");
    if (s == NULL || *s == '\0') {
	error("%s: no '%s.Size' entry from %s", Name, section, cfg_source());
	free(s);
	return -1;
    }
    if (sscanf(s, "%dx%d", &DCOLS, &DROWS) != 2 || DROWS < 1 || DCOLS < 1) {
	error("%s: bad %s.Size '%s' from %s", Name, section, s, cfg_source());
	free(s);
	return -1;
    }
    free(s);

    return 0;
}


/****************************************/
/***            plugins               ***/
/****************************************/

/* none at the moment... */


/****************************************/
/***        widget callbacks          ***/
/****************************************/

/* using drv_generic_text_draw(W) */
/* using drv_generic_text_bar_draw(W) */


/****************************************/
/***        exported functions        ***/
/****************************************/


/* list models */
int drv_NULL_list(void)
{
    printf("NULL driver for testing purposes");
    return 0;
}


/* initialize driver & display */
int drv_NULL_init(const char *section, const __attribute__ ((unused))
		  int quiet)
{
    WIDGET_CLASS wc;
    int ret;

    info("%s: %s", Name, "$Rev$");

    /* display preferences */
    XRES = 6;			/* pixel width of one char  */
    YRES = 8;			/* pixel height of one char  */
    CHARS = 8;			/* number of user-defineable characters */
    CHAR0 = 0;			/* ASCII of first user-defineable char */
    GOTO_COST = 2;		/* number of bytes a goto command requires */

    /* real worker functions */
    drv_generic_text_real_write = drv_NULL_write;
    drv_generic_text_real_defchar = drv_NULL_defchar;

    /* start display */
    if ((ret = drv_NULL_start(section)) != 0)
	return ret;

    /* initialize generic text driver */
    if ((ret = drv_generic_text_init(section, Name)) != 0)
	return ret;

    /* initialize generic bar driver */
    if ((ret = drv_generic_text_bar_init(1)) != 0)
	return ret;

    /* add fixed chars to the bar driver */
    drv_generic_text_bar_add_segment(0, 0, 255, 32);	/* ASCII  32 = blank */
    drv_generic_text_bar_add_segment(255, 255, 255, '*');	/* asterisk */

    /* register text widget */
    wc = Widget_Text;
    wc.draw = drv_generic_text_draw;
    widget_register(&wc);

    /* register bar widget */
    wc = Widget_Bar;
    wc.draw = drv_generic_text_bar_draw;
    widget_register(&wc);

    /* register plugins */
    /* none at the moment... */

    return 0;
}


/* close driver & display */
int drv_NULL_quit(const __attribute__ ((unused))
		  int quiet)
{

    info("%s: shutting down.", Name);
    drv_generic_text_quit();

    return (0);
}


DRIVER drv_NULL = {
    .name = Name,
    .list = drv_NULL_list,
    .init = drv_NULL_init,
    .quit = drv_NULL_quit,
};