Author: czarny                       Date: Mon Nov  6 21:59:26 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- adds support for iMON LCD panel used in various, mostly HTPC, cases 
(including my new Thermalake Mozart Silver ;)
- extracted ouf of tweaked lcdproc from http://venky.ws/projects/imon/

---- Files affected:
SOURCES:
   lcdproc-imon.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/lcdproc-imon.patch
diff -u /dev/null SOURCES/lcdproc-imon.patch:1.1
--- /dev/null   Mon Nov  6 22:59:26 2006
+++ SOURCES/lcdproc-imon.patch  Mon Nov  6 22:59:20 2006
@@ -0,0 +1,365 @@
+diff -urN lcdproc-0.4.5/acconfig.h lcdproc-0.4.5-imon/acconfig.h
+--- lcdproc-0.4.5/acconfig.h   2004-03-14 16:50:22.000000000 +0100
++++ lcdproc-0.4.5-imon/acconfig.h      2005-01-24 01:48:31.000000000 +0100
+@@ -74,6 +74,8 @@
+ 
+ #undef T6963_DRV
+ 
++#undef IMON_DRV
++
+ /* Define the package name */
+ #undef PACKAGE
+ 
+diff -urN lcdproc-0.4.5/acinclude.m4 lcdproc-0.4.5-imon/acinclude.m4
+--- lcdproc-0.4.5/acinclude.m4 2004-03-14 16:50:22.000000000 +0100
++++ lcdproc-0.4.5-imon/acinclude.m4    2005-01-24 01:48:31.000000000 +0100
+@@ -8,13 +8,13 @@
+       [                    mtxorb,cfontz,cwlnx,curses,text,lb216,]
+       [                    hd44780,joy,irman,lircin,bayrad,glk,]
+       [                    stv5730,sed1330,sed1520,svgalib,lcdm001,]
+-      [                    t6963,wirz-sli,sgx120]
++      [                    t6963,wirz-sli,sgx120,imon]
+       [                  \"all\" compiles all drivers],
+       drivers="$enableval", 
+-      
drivers=[lcdm001,mtxorb,cfontz,cwlnx,curses,text,lb216,bayrad,glk,sgx120])
++      
drivers=[lcdm001,mtxorb,cfontz,cwlnx,curses,text,lb216,bayrad,glk,sgx120,imon])
+ 
+ if test "$drivers" = "all"; then
+-      
drivers=[mtxorb,cfontz,cwlnx,curses,text,lb216,hd44780,joy,irman,lircin,bayrad,glk,stv5730,sed1330,sed1520,svgalib,lcdm001,t6963,wirz-sli,sgx120]
++      
drivers=[mtxorb,cfontz,cwlnx,curses,text,lb216,hd44780,joy,irman,lircin,bayrad,glk,stv5730,sed1330,sed1520,svgalib,lcdm001,t6963,wirz-sli,sgx120,imon]
+ fi
+ 
+       drivers=`echo $drivers | sed 's/,/ /g'`
+@@ -121,6 +121,11 @@
+                       AC_DEFINE(TEXT_DRV)
+                       actdrivers=["$actdrivers text"]
+                       ;;
++              imon)
++                      DRIVERS="$DRIVERS imon.o"
++                      AC_DEFINE(IMON_DRV)
++                      actdrivers=["$actdrivers imon"]
++                      ;;
+               lb216)
+                       DRIVERS="$DRIVERS lb216.o"
+                       AC_DEFINE(LB216_DRV)
+diff -urN lcdproc-0.4.5/LCDd.conf lcdproc-0.4.5-imon/LCDd.conf
+--- lcdproc-0.4.5/LCDd.conf    2004-03-14 16:50:22.000000000 +0100
++++ lcdproc-0.4.5-imon/LCDd.conf       2005-01-24 01:48:31.000000000 +0100
+@@ -40,7 +40,7 @@
+ [server]
+ # Server section with all kinds of settings for the LCDd server
+ 
+-Driver=none
++Driver=imon
+ #Driver=curses
+ #Driver=HD44780
+ #Driver=lcdm001
+@@ -78,7 +78,7 @@
+ # yes      : always,
+ # no     : when there are no other screens active.
+ 
+-Foreground=yes
++Foreground=no
+ # The server will stay in the foreground if set to true.
+ # Otherwise the server will fork to background and report
+ # to syslog
+@@ -537,7 +537,11 @@
+ # display size [20x4]
+ size=20x4
+ 
++[imon]
++# Ahanix/Soundgraph IMON driver
+ 
++Size=16x2
++Device=/dev/lcd0
+ 
+ 
+ [Wirz-sli]
+diff -urN lcdproc-0.4.5/server/drivers/imon.c 
lcdproc-0.4.5-imon/server/drivers/imon.c
+--- lcdproc-0.4.5/server/drivers/imon.c        1970-01-01 01:00:00.000000000 
+0100
++++ lcdproc-0.4.5-imon/server/drivers/imon.c   2005-01-24 01:48:31.000000000 
+0100
+@@ -0,0 +1,224 @@
++/**
++ * Driver for Ahanix/Soundgraph IMON IR/VFD Module
++ *
++ * (C) 2004, Venky Raju <[EMAIL PROTECTED]>
++ *
++ * This source code is being released under the GPL.
++ * Please see the file COPYING in this package for details.
++ *
++ * Inspired by:
++ *    TextMode driver (LCDproc authors?)
++ *    Sasem driver    (Oliver Stabel)
++ */
++
++#include <stdlib.h>
++#include <stdio.h>
++#include <unistd.h>
++#include <termios.h>
++#include <fcntl.h>
++#include <string.h>
++#include <sys/errno.h>
++#include <syslog.h>
++
++#include "lcd.h"
++#include "imon.h"
++#include "drv_base.h"
++#include "shared/report.h"
++#include "configfile.h"
++
++#define PAD                   '#'
++#define DEFAULT_DEVICE                "/dev/usb/lcd"
++#define DEFAULT_SIZE          "16x2"
++
++/**
++ * Function prototypes
++ */
++static void imon_close ();
++static void imon_clear ();
++static void imon_flush ();
++static void imon_string (int x, int y, char string[]);
++static void imon_chr (int x, int y, char c);
++/* static int imon_contrast (int contrast); */
++/* static void imon_backlight (int on); */
++/* static void imon_init_vbar (); */
++/* static void imon_init_hbar (); */
++/* static void imon_init_num (); */
++static void imon_vbar (int x, int len);
++static void imon_hbar (int x, int y, int len);
++/* static void imon_num (int x, int num); */
++/* static void imon_set_char (int n, char *dat); */
++/* static void imon_flush_box (int lft, int top, int rgt, int bot); */
++static void imon_draw_frame (char *dat);
++
++lcd_logical_driver *imon;
++static int imon_fd;
++
++                              
++/* The two value below are fake, we don't support custom char. */
++#define VFD_DEFAULT_CELL_WIDTH 5
++#define VFD_DEFAULT_CELL_HEIGHT 8
++
++int imon_init (lcd_logical_driver * driver, char *args)
++{
++      char buf[256];
++      int width=0, height=0;
++
++      imon = driver;
++
++      /* TODO?: replace DriverName with driver->name when that field exists.*/
++      #define DriverName "imon"
++
++      /* Get settings from config file*/
++
++      /* Get device */
++      strncpy (buf, config_get_string (DriverName, "device", 0, 
DEFAULT_DEVICE), sizeof (buf));
++      buf [sizeof(buf)-1] = 0;
++      report (RPT_INFO, "imon: using device %s", buf);
++
++      /* Open device for writing */
++      if ((imon_fd = open (buf, O_WRONLY)) < 0) {
++
++              report (RPT_ERR, "imon: error opening %s (%s)", buf, strerror 
(errno));
++              return -1;
++      }
++
++      /* Get size settings*/
++      strncpy (buf, config_get_string (DriverName , "Size" , 0 , 
DEFAULT_SIZE), sizeof(buf));
++      buf[sizeof(buf)-1] = 0;
++      if (sscanf(buf , "%dx%d", &width, &height ) != 2 || (width <= 0) || 
(height <= 0)) {
++              report (RPT_WARNING, "imon: cannot read size: %s. Using default 
value %s.\n", 
++                              buf, DEFAULT_SIZE);
++              sscanf (DEFAULT_SIZE , "%dx%d", &width, &height );
++      }
++
++      imon->wid = width;
++      imon->hgt = height;
++
++      /* Make sure the frame buffer is there... */
++      if (!imon->framebuf)
++              imon->framebuf = (unsigned char *) malloc (imon->wid * 
imon->hgt);
++      memset (imon->framebuf, ' ', imon->wid * imon->hgt);
++
++      imon->cellwid = VFD_DEFAULT_CELL_WIDTH;
++      imon->cellhgt = VFD_DEFAULT_CELL_HEIGHT;
++
++      /* Set the functions the driver supports */
++      imon->clear = imon_clear;
++      imon->string = imon_string;
++      imon->chr = imon_chr;
++      imon->vbar = imon_vbar;
++      imon->hbar = imon_hbar;
++      /* imon->init_vbar = NULL; */
++      /* imon->init_hbar = NULL; */
++      /* imon->num = imon_num; */
++      /* imon->init_num = NULL; */
++      imon->init = imon_init;
++      imon->close = imon_close;
++      imon->flush = imon_flush;
++      /* imon->flush_box = NULL; */ 
++      /* imon->contrast = NULL; */ 
++      /* imon->backlight = NULL; */
++      /* imon->set_char = NULL; */
++      /* imon->icon = NULL; */
++      imon->draw_frame = imon_draw_frame;
++      /* imon->getkey = NULL; */
++
++      return !0;               
++}
++
++static void imon_close ()
++{
++      if (imon->framebuf != NULL)
++              free (imon->framebuf);
++
++      imon->framebuf = NULL;
++      close (imon_fd);
++}
++
++/** 
++ * Clears the VFD screen 
++ */
++static void imon_clear ()
++{
++      memset (imon->framebuf, ' ', imon->wid * imon->hgt);
++}
++
++/**
++ * Flushes all output to the VFD...  
++ */
++static void imon_flush ()
++{
++      imon_draw_frame (imon->framebuf);
++}
++
++/**
++ * Prints a string on the VFD display, at position (x,y).
++ * The upper-left is (1,1) and the lower right is (16, 2).  
++ */
++static void imon_string (int x, int y, char string[])
++{
++      int i;
++
++      for (i = 0; string[i]; i++)
++              imon_chr (x+i, y, string [i]);
++}
++
++
++/**
++ * Prints a character on the VFD display, at position (x,y).
++ * The upper-left is (1,1) and the lower right is (16,2).
++ */
++static void imon_chr (int x, int y, char ch)
++{
++      y--; x--;
++
++      switch (ch) {
++
++              case 0:
++              case -1:        
++                      ch = PAD;
++                      break;
++              default:
++                      ;
++      }
++
++      imon->framebuf[(y * imon->wid) + x] = ch;
++}
++
++/**
++ * Draws a vertical bar; erases entire column onscreen.
++ */
++static void imon_vbar (int x, int len)
++{
++      int y;
++      for (y = imon->hgt; y > 0 && len > 0; y--) {
++
++              imon_chr (x, y, '|');
++              len -= imon->cellhgt;
++      }
++
++}
++
++/**
++ * Draws a horizontal bar to the right.
++ */
++static void imon_hbar (int x, int y, int len)
++{
++      for (; x <= imon->wid && len > 0; x++) {
++
++              imon_chr (x, y, '-');
++              len -= imon->cellwid;
++      }
++
++}
++
++static void imon_flush_box (int lft, int top, int rgt, int bot)
++{
++      imon_flush ();
++}
++
++static void imon_draw_frame (char *dat)
++{
++      write (imon_fd, dat, 32);
++}
++
+diff -urN lcdproc-0.4.5/server/drivers/imon.h 
lcdproc-0.4.5-imon/server/drivers/imon.h
+--- lcdproc-0.4.5/server/drivers/imon.h        1970-01-01 01:00:00.000000000 
+0100
++++ lcdproc-0.4.5-imon/server/drivers/imon.h   2005-01-24 01:48:31.000000000 
+0100
+@@ -0,0 +1,21 @@
++/**
++ * Driver for Ahanix/Soundgraph IMON IR/VFD Module
++ *
++ * (C) 2004, Venky Raju <[EMAIL PROTECTED]>
++ *
++ * This source code is being released under the GPL.
++ * Please see the file COPYING in this package for details.
++ *
++ * Inspired by:
++ *    TextMode driver (LCDproc authors?)
++ *    Sasem driver    (Oliver Stabel)
++ */
++
++#ifndef IMON_H
++#define IMON_H
++
++extern lcd_logical_driver *imon;
++
++int imon_init (struct lcd_logical_driver *driver, char *args);
++
++#endif
+diff -urN lcdproc-0.4.5/server/drivers/lcd.c 
lcdproc-0.4.5-imon/server/drivers/lcd.c
+--- lcdproc-0.4.5/server/drivers/lcd.c 2004-03-14 16:50:25.000000000 +0100
++++ lcdproc-0.4.5-imon/server/drivers/lcd.c    2005-01-24 01:48:31.000000000 
+0100
+@@ -87,6 +87,10 @@
+ #include "text.h"
+ #endif
+ 
++#ifdef IMON_DRV
++#include "imon.h"
++#endif
++
+ #ifdef DEBUG_DRV
+ #include "debug.h"
+ #endif
+@@ -200,6 +204,9 @@
+ #ifdef TEXT_DRV
+       {"text", text_init,},
+ #endif
++#ifdef IMON_DRV
++      {"imon", imon_init,},
++#endif
+ #ifdef DEBUG_DRV
+       {"debug", debug_init,},
+ #endif
+diff -urN lcdproc-0.4.5/server/drivers/Makefile.am 
lcdproc-0.4.5-imon/server/drivers/Makefile.am
+--- lcdproc-0.4.5/server/drivers/Makefile.am   2004-03-14 16:50:25.000000000 
+0100
++++ lcdproc-0.4.5-imon/server/drivers/Makefile.am      2005-01-24 
01:48:31.000000000 +0100
+@@ -1,6 +1,7 @@
+ noinst_LIBRARIES = libLCDdrivers.a
+ libLCDdrivers_a_SOURCES = lcd.c lcd.h lcd_lib.c lcd_lib.h
+ EXTRA_libLCDdrivers_a_SOURCES = MtxOrb.c MtxOrb.h text.c text.h \
++      imon.c imon.h \
+         lcdm001.c lcdm001.h \
+         curses_drv.c curses_drv.h drv_base.h \
+         hd44780.c hd44780.h lb216.c lb216.h \
================================================================
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to