diff options
author | Jörg Bornkessel <hd_brummy@gentoo.org> | 2006-10-11 18:36:49 +0000 |
---|---|---|
committer | Jörg Bornkessel <hd_brummy@gentoo.org> | 2006-10-11 18:36:49 +0000 |
commit | 5ceb6627f0c5930b2856dd955e156054598a3385 (patch) | |
tree | ac50a1820cc95920a660cd2e6c3ea1f4a597c112 /app-misc/graphlcd-base | |
parent | Added patch to fix building with ghc-6.6 (diff) | |
download | gentoo-2-5ceb6627f0c5930b2856dd955e156054598a3385.tar.gz gentoo-2-5ceb6627f0c5930b2856dd955e156054598a3385.tar.bz2 gentoo-2-5ceb6627f0c5930b2856dd955e156054598a3385.zip |
added support for g15daemon driver, enabled by use-flag g15
(Portage version: 2.1.1)
Diffstat (limited to 'app-misc/graphlcd-base')
4 files changed, 412 insertions, 1 deletions
diff --git a/app-misc/graphlcd-base/ChangeLog b/app-misc/graphlcd-base/ChangeLog index 1e17ba25eb4b..8703a5ee3f06 100644 --- a/app-misc/graphlcd-base/ChangeLog +++ b/app-misc/graphlcd-base/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for app-misc/graphlcd-base # Copyright 2000-2006 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-misc/graphlcd-base/ChangeLog,v 1.6 2006/10/02 11:53:31 hd_brummy Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-misc/graphlcd-base/ChangeLog,v 1.7 2006/10/11 18:36:49 hd_brummy Exp $ + +*graphlcd-base-0.1.3-r1 (11 Oct 2006) + + 11 Oct 2006; Joerg Bornkessel <hd_brummy@gentoo.org> + +files/graphlcd-base-0.1.3_g15daemon_drv.patch, + +graphlcd-base-0.1.3-r1.ebuild: + added support for g15daemon driver, enabled by use-flag g15 02 Oct 2006; Joerg Bornkessel <hd_brummy@gentoo.org> +files/graphlcd-base-0.1.3-nostrip.patch, graphlcd-base-0.1.3.ebuild: diff --git a/app-misc/graphlcd-base/files/digest-graphlcd-base-0.1.3-r1 b/app-misc/graphlcd-base/files/digest-graphlcd-base-0.1.3-r1 new file mode 100644 index 000000000000..b2988c0a706d --- /dev/null +++ b/app-misc/graphlcd-base/files/digest-graphlcd-base-0.1.3-r1 @@ -0,0 +1,3 @@ +MD5 3c981a57b3903748d60cf35cef4ca476 graphlcd-base-0.1.3.tgz 86758 +RMD160 739c6da22cf6b5416c7b0a5b27769a55b273c56e graphlcd-base-0.1.3.tgz 86758 +SHA256 bd6cc235486c702ce97699a15b3a5dcfd4a2acec1304e9f6a70b03bd04fb4051 graphlcd-base-0.1.3.tgz 86758 diff --git a/app-misc/graphlcd-base/files/graphlcd-base-0.1.3_g15daemon_drv.patch b/app-misc/graphlcd-base/files/graphlcd-base-0.1.3_g15daemon_drv.patch new file mode 100644 index 000000000000..9f4ce64291bb --- /dev/null +++ b/app-misc/graphlcd-base/files/graphlcd-base-0.1.3_g15daemon_drv.patch @@ -0,0 +1,352 @@ +http://svn.sourceforge.net/viewvc/g15daemon/trunk/g15daemon/patches/graphlcd-1.3_g15daemon_drv.patch?revision=1&view=markup + +patch add driver for LCD Display e.g on Logitech G15 Keyboard +small rewrite by myself + +Joerg Bornkessel <hd_brummy@gentoo.or> 10 Oct 2006 +diff -Naur graphlcd-base-0.1.3.orig/glcddrivers/drivers.c graphlcd-base-0.1.3/glcddrivers/drivers.c +--- graphlcd-base-0.1.3.orig/glcddrivers/drivers.c 2006-10-10 12:37:23.197579018 +0200 ++++ graphlcd-base-0.1.3/glcddrivers/drivers.c 2006-10-10 12:39:02.035211454 +0200 +@@ -26,6 +26,7 @@ + #include "noritake800.h" + #include "avrctl.h" + #include "serdisp.h" ++#include "g15daemon.h" + + namespace GLCD + { +@@ -46,6 +47,7 @@ + {"noritake800", kDriverNoritake800}, + {"avrctl", kDriverAvrCtl}, + {"serdisp", kDriverSerDisp}, ++ {"g15daemon", kDriverG15daemon}, + {"", kDriverUnknown} + }; + +@@ -82,6 +84,7 @@ + case kDriverNoritake800 : return new cDriverNoritake800(config); + case kDriverAvrCtl : return new cDriverAvrCtl(config); + case kDriverSerDisp : return new cDriverSerDisp(config); ++ case kDriverG15daemon : return new cDriverG15daemon(config); + case kDriverUnknown : + default : return NULL; + } +diff -Naur graphlcd-base-0.1.3.orig/glcddrivers/drivers.h graphlcd-base-0.1.3/glcddrivers/drivers.h +--- graphlcd-base-0.1.3.orig/glcddrivers/drivers.h 2006-10-10 12:37:23.169577421 +0200 ++++ graphlcd-base-0.1.3/glcddrivers/drivers.h 2006-10-10 12:39:32.912971078 +0200 +@@ -37,7 +37,8 @@ + kDriverImage = 11, + kDriverNoritake800 = 12, + kDriverAvrCtl = 13, +- kDriverSerDisp = 100 ++ kDriverSerDisp = 100, ++ kDriverG15daemon = 200 + }; + + struct tDriver +diff -Naur graphlcd-base-0.1.3.orig/glcddrivers/g15daemon.c graphlcd-base-0.1.3/glcddrivers/g15daemon.c +--- graphlcd-base-0.1.3.orig/glcddrivers/g15daemon.c 1970-01-01 01:00:00.000000000 +0100 ++++ graphlcd-base-0.1.3/glcddrivers/g15daemon.c 2006-10-10 12:44:38.706397251 +0200 +@@ -0,0 +1,218 @@ ++/* ++* GraphLCD driver library ++* ++* g15daemon.c - pseudo device for the g15daemon meta driver ++* Output goes to the g15daemon which then displays it ++* ++* This file is released under the GNU General Public License. Refer ++* to the COPYING file distributed with this package. ++* ++*/ ++ ++#include <fcntl.h> ++#include <stdio.h> ++#include <syslog.h> ++#include <unistd.h> ++#include <sys/mman.h> ++#include <sys/ioctl.h> ++#include <poll.h> ++#include <arpa/inet.h> ++#include <unistd.h> ++ ++#include "common.h" ++#include "config.h" ++ ++#include "g15daemon.h" ++ ++#define G15SERVER_PORT 15550 ++#define G15SERVER_ADDR "127.0.0.1" ++ ++#define G15_WIDTH 160 ++#define G15_HEIGHT 43 ++ ++ ++static int g15_send(int sock, char *buf, int len) ++{ ++ int total = 0; ++ int retval = 0; ++ int bytesleft = len; ++ ++ while(total < len) { ++ retval = send(sock, buf+total, bytesleft, 0); ++ if (retval == -1) { ++ break; ++ } ++ bytesleft -= retval; ++ total += retval; ++ } ++ return retval==-1?-1:0; ++} ++ ++static int g15_recv(int sock, char *buf, int len) ++{ ++ int total = 0; ++ int retval = 0; ++ int bytesleft = len; ++ ++ while(total < len) { ++ retval = recv(sock, buf+total, bytesleft, 0); ++ if (retval < 1) { ++ break; ++ } ++ total += retval; ++ bytesleft -= retval; ++ } ++ return total; ++} ++ ++static int open_g15_daemon() ++{ ++ int g15screen_fd; ++ struct sockaddr_in serv_addr; ++ ++ char buffer[256]; ++ ++ g15screen_fd = socket(AF_INET, SOCK_STREAM, 0); ++ if (g15screen_fd < 0) ++ return -1; ++ ++ memset(&serv_addr, 0, sizeof(serv_addr)); ++ serv_addr.sin_family = AF_INET; ++ inet_aton (G15SERVER_ADDR, &serv_addr.sin_addr); ++ serv_addr.sin_port = htons(G15SERVER_PORT); ++ ++ if (connect(g15screen_fd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0) ++ return -1; ++ ++ memset(buffer,0,256); ++ if(g15_recv(g15screen_fd, buffer, 16)<0) ++ return -1; ++ ++ /* here we check that we're really talking to the g15daemon */ ++ if(strcmp(buffer,"G15 daemon HELLO") != 0) ++ return -1; ++ ++ /* we want to use a pixelbuffer */ ++ g15_send(g15screen_fd,"GBUF",4); ++ ++ return g15screen_fd; ++} ++ ++ ++namespace GLCD ++{ ++ ++ cDriverG15daemon::cDriverG15daemon(cDriverConfig * config) ++ : config(config), ++ offbuff(0), ++ sockfd(-1) ++ { ++ oldConfig = new cDriverConfig(*config); ++ } ++ ++ cDriverG15daemon::~cDriverG15daemon() ++ { ++ delete oldConfig; ++ } ++ ++ int cDriverG15daemon::Init() ++ { ++ // default values ++ width = config->width; ++ if (width !=G15_WIDTH) ++ width = G15_WIDTH; ++ height = config->height; ++ if (height !=G15_HEIGHT) ++ height = G15_HEIGHT; ++ ++ for (unsigned int i = 0; i < config->options.size(); i++) { ++ if (config->options[i].name == "") { ++ } ++ } ++ ++ screensize = 6880; ++ ++ if((sockfd = open_g15_daemon())<0) ++ return -1; ++ // reserve memory to draw into ++ offbuff = new char[6880]; ++ ++ *oldConfig = *config; ++ ++ // clear display ++ Refresh(true); ++ ++ syslog(LOG_INFO, "%s: g15daemon initialized.\n", config->name.c_str()); ++ return 0; ++ } ++ ++ int cDriverG15daemon::DeInit() ++ { ++ if (offbuff); ++ delete[] offbuff; ++ if (-1 != sockfd) ++ close(sockfd); ++ ++ return 0; ++ } ++ ++ int cDriverG15daemon::CheckSetup() ++ { ++ if (config->device != oldConfig->device || ++ config->port != oldConfig->port || ++ config->width != oldConfig->width || ++ config->height != oldConfig->height) ++ { ++ DeInit(); ++ Init(); ++ return 0; ++ } ++ ++ if (config->upsideDown != oldConfig->upsideDown || ++ config->invert != oldConfig->invert) ++ { ++ oldConfig->upsideDown = config->upsideDown; ++ oldConfig->invert = config->invert; ++ return 1; ++ } ++ return 0; ++ } ++ ++ void cDriverG15daemon::SetPixel(int x, int y) ++ { ++ if (x >= width || y >= height) ++ return; ++ ++ if (config->upsideDown) ++ { ++ x = width - 1 - x; ++ y = height - 1 - y; ++ } ++ ++ offbuff[x + (width * y)] = 1; ++ } ++ ++ void cDriverG15daemon::Clear() ++ { ++ memset(offbuff, 0, screensize); ++ } ++ ++ void cDriverG15daemon::Set8Pixels(int x, int y, unsigned char data) ++ { ++ int n; ++ ++ x &= 0xFFF8; ++ ++ for (n = 0; n < 8; ++n) ++ { ++ if (data & (0x80 >> n)) // if bit is set ++ SetPixel(x + n, y); ++ } ++ } ++ ++ void cDriverG15daemon::Refresh(bool refreshAll) ++ { ++ g15_send(sockfd, offbuff, screensize); ++ } ++ ++} // end of namespace +diff -Naur graphlcd-base-0.1.3.orig/glcddrivers/g15daemon.h graphlcd-base-0.1.3/glcddrivers/g15daemon.h +--- graphlcd-base-0.1.3.orig/glcddrivers/g15daemon.h 1970-01-01 01:00:00.000000000 +0100 ++++ graphlcd-base-0.1.3/glcddrivers/g15daemon.h 2006-10-10 12:46:05.663352647 +0200 +@@ -0,0 +1,49 @@ ++/* ++ * GraphLCD driver library ++ * ++ * g15daemon.h - pseudo device for the g15daemon ++ * Output goes to the g15daemon which then displays it ++ * ++ */ ++ ++#ifndef _GLCDDRIVERS_G15DAEMON_H_ ++#define _GLCDDRIVERS_G15DAEMON_H_ ++ ++#include "driver.h" ++ ++ ++namespace GLCD ++{ ++ ++class cDriverConfig; ++ ++class cDriverG15daemon : public cDriver ++{ ++private: ++ unsigned char ** LCD; ++ cDriverConfig * config; ++ cDriverConfig * oldConfig; ++ char *offbuff; ++ int sockfd; ++ long int screensize; ++ char *fbp; ++ int zoom; ++ ++ int CheckSetup(); ++ void SetPixel(int x, int y); ++ ++public: ++ cDriverG15daemon(cDriverConfig * config); ++ virtual ~cDriverG15daemon(); ++ ++ virtual int Init(); ++ virtual int DeInit(); ++ ++ virtual void Clear(); ++ virtual void Set8Pixels(int x, int y, unsigned char data); ++ virtual void Refresh(bool refreshAll = false); ++}; ++ ++} // end of namespace ++ ++#endif +diff -Naur graphlcd-base-0.1.3.orig/glcddrivers/Makefile graphlcd-base-0.1.3/glcddrivers/Makefile +--- graphlcd-base-0.1.3.orig/glcddrivers/Makefile 2006-10-10 12:37:23.197579018 +0200 ++++ graphlcd-base-0.1.3/glcddrivers/Makefile 2006-10-10 12:47:40.048731363 +0200 +@@ -12,9 +12,9 @@ + + LIBNAME = $(BASENAME).$(VERMAJOR).$(VERMINOR).$(VERMICRO) + +-OBJS = common.o config.o driver.o drivers.o port.o simlcd.o framebuffer.o gu140x32f.o gu256x64-372.o gu256x64-3900.o hd61830.o ks0108.o image.o sed1330.o sed1520.o t6963c.o noritake800.o serdisp.o avrctl.o ++OBJS = common.o config.o driver.o drivers.o port.o g15daemon.o simlcd.o framebuffer.o gu140x32f.o gu256x64-372.o gu256x64-3900.o hd61830.o ks0108.o image.o sed1330.o sed1520.o t6963c.o noritake800.o serdisp.o avrctl.o + +-HEADERS = config.h driver.h drivers.h port.h simlcd.h framebuffer.h gu140x32f.h gu256x64-372.h gu256x64-3900.h hd61830.h ks0108.h image.h sed1330.h sed1520.h t6963c.h noritake800.h serdisp.h avrctl.h ++HEADERS = config.h driver.h drivers.h port.h g15daemon.h simlcd.h framebuffer.h gu140x32f.h gu256x64-372.h gu256x64-3900.h hd61830.h ks0108.h image.h sed1330.h sed1520.h t6963c.h noritake800.h serdisp.h avrctl.h + + + ### Implicit rules: +diff -Naur graphlcd-base-0.1.3.orig/graphlcd.conf graphlcd-base-0.1.3/graphlcd.conf +--- graphlcd-base-0.1.3.orig/graphlcd.conf 2006-10-10 12:37:23.217580160 +0200 ++++ graphlcd-base-0.1.3/graphlcd.conf 2006-10-10 12:48:38.864083058 +0200 +@@ -457,3 +457,12 @@ + Brightness=50 + RefreshDisplay=1 + ++################################################################################# ++ ++[g15daemon] ++# This is a driver module for the LCD display on Logitech G15 Keybords ++# ++Driver=g15daemon ++Width=160 ++Height=43 ++ diff --git a/app-misc/graphlcd-base/graphlcd-base-0.1.3-r1.ebuild b/app-misc/graphlcd-base/graphlcd-base-0.1.3-r1.ebuild new file mode 100644 index 000000000000..31e9c0e81988 --- /dev/null +++ b/app-misc/graphlcd-base/graphlcd-base-0.1.3-r1.ebuild @@ -0,0 +1,49 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-misc/graphlcd-base/graphlcd-base-0.1.3-r1.ebuild,v 1.1 2006/10/11 18:36:49 hd_brummy Exp $ + +inherit eutils flag-o-matic + +DESCRIPTION="Graphical LCD Driver" +HOMEPAGE="http://graphlcd.berlios.de/" +SRC_URI="http://download.berlios.de/graphlcd/${P}.tgz" + +KEYWORDS="~amd64 ~x86" +SLOT="0" +LICENSE="GPL-2" +IUSE="truetype g15" + +DEPEND="" + +RDEPEND="truetype? ( media-libs/freetype + media-fonts/corefonts ) + g15? ( app-misc/g15daemon )" + +src_unpack() { + + unpack ${A} + cd ${S} + + sed -i Make.config -e "s:usr\/local:usr:" -e "s:FLAGS *=:FLAGS ?=:" + epatch ${FILESDIR}/${P}-nostrip.patch + + use !truetype && sed -i "s:HAVE_FREETYPE2:#HAVE_FREETYPE2:" Make.config + use g15 && epatch ${FILESDIR}/${P}_g15daemon_drv.patch +} + +src_compile() { + + append-flags -fPIC + + emake || die "emake failed" +} + +src_install() { + + make DESTDIR=${D}/usr install || die "make install failed" + + insinto /etc + doins graphlcd.conf + + dodoc docs/* +} |