diff options
author | Joerg Bornkessel <hd_brummy@gentoo.org> | 2006-10-11 18:36:49 +0000 |
---|---|---|
committer | Joerg Bornkessel <hd_brummy@gentoo.org> | 2006-10-11 18:36:49 +0000 |
commit | 102a5009a795cf1285064f9f520c9d9e41192c5b (patch) | |
tree | 477b1fbb95ac0935e19dd3f7ca37f748c9a193d6 /app-misc/graphlcd-base/files | |
parent | Added patch to fix building with ghc-6.6 (diff) | |
download | historical-102a5009a795cf1285064f9f520c9d9e41192c5b.tar.gz historical-102a5009a795cf1285064f9f520c9d9e41192c5b.tar.bz2 historical-102a5009a795cf1285064f9f520c9d9e41192c5b.zip |
added support for g15daemon driver, enabled by use-flag g15
Package-Manager: portage-2.1.1
Diffstat (limited to 'app-misc/graphlcd-base/files')
-rw-r--r-- | app-misc/graphlcd-base/files/digest-graphlcd-base-0.1.3-r1 | 3 | ||||
-rw-r--r-- | app-misc/graphlcd-base/files/graphlcd-base-0.1.3_g15daemon_drv.patch | 352 |
2 files changed, 355 insertions, 0 deletions
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 ++ |