From c97b6d95897c59e2098e45ee58aab61ec3703d22 Mon Sep 17 00:00:00 2001 From: reinelt <> Date: Mon, 13 Mar 2000 15:58:24 +0000 Subject: [lcd4linux @ 2000-03-13 15:58:24 by reinelt] release 0.9 moved row parsing to parser.c all basic work finished --- MatrixOrbital.c | 127 ++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 91 insertions(+), 36 deletions(-) (limited to 'MatrixOrbital.c') diff --git a/MatrixOrbital.c b/MatrixOrbital.c index f59a81e..510ae26 100644 --- a/MatrixOrbital.c +++ b/MatrixOrbital.c @@ -1,4 +1,4 @@ -/* $Id: MatrixOrbital.c,v 1.4 2000/03/10 17:36:02 reinelt Exp $ +/* $Id: MatrixOrbital.c,v 1.5 2000/03/13 15:58:24 reinelt Exp $ * * driver for Matrix Orbital serial display modules * @@ -20,6 +20,12 @@ * * * $Log: MatrixOrbital.c,v $ + * Revision 1.5 2000/03/13 15:58:24 reinelt + * + * release 0.9 + * moved row parsing to parser.c + * all basic work finished + * * Revision 1.4 2000/03/10 17:36:02 reinelt * * first unstable but running release @@ -46,12 +52,16 @@ #include "cfg.h" #include "display.h" +#define SPEED 19200 #define XRES 5 #define YRES 8 #define CHARS 8 +#define BARS ( BAR_L | BAR_R | BAR_H2 ) +// Fixme: BAR_U, BAR_D static DISPLAY Display; static char *Port=NULL; +static speed_t Speed; static int Device=-1; typedef struct { @@ -92,7 +102,7 @@ static int MO_open (void) return -1; } cfmakeraw(&portset); - cfsetospeed(&portset, B19200); + cfsetospeed(&portset, Speed); if (tcsetattr(fd, TCSANOW, &portset)==-1) { fprintf (stderr, "MatrixOrbital: tcsetattr(%s) failed: %s\n", Port, strerror(errno)); return -1; @@ -117,7 +127,7 @@ static int MO_contrast (void) char buffer[4]; int contrast; - contrast=atoi(cfg_get("contrast")); + contrast=atoi(cfg_get("Contrast")); if (contrast==0) contrast=160; snprintf (buffer, 4, "\376P%c", contrast); MO_write (buffer, 3); @@ -222,10 +232,9 @@ static void MO_compact_bars (void) static void MO_define_chars (void) { - int i, j, c; + int c, i, j; char buffer[12]="\376N"; - char Pixel[] = {0, 16, 24, 28, 30, 31}; - + for (i=2; imax) len1=max; if (len2<1) len2=1; else if (len2>max) len2=max; - while (max>0 && col<=Display.cols) { - Bar[row][col].type=type; - Bar[row][col].segment=-1; - if (len1>=XRES) { - Bar[row][col].len1=XRES; - len1-=XRES; - } else { - Bar[row][col].len1=len1; - len1=0; - } - if (len2>=XRES) { - Bar[row][col].len2=XRES; - len2-=XRES; - } else { - Bar[row][col].len2=len2; - len2=0; + switch (type & (BAR_L | BAR_R | BAR_U | BAR_D)) { + case BAR_L: + len1=max-len1; + len2=max-len2; + rev=1; + + case BAR_R: + while (max>0 && col<=Display.cols) { + Bar[row][col].type=type; + Bar[row][col].segment=-1; + if (len1>=XRES) { + Bar[row][col].len1=rev?0:XRES; + len1-=XRES; + } else { + Bar[row][col].len1=rev?XRES-len1:len1; + len1=0; + } + if (len2>=XRES) { + Bar[row][col].len2=rev?0:XRES; + len2-=XRES; + } else { + Bar[row][col].len2=rev?XRES-len2:len2; + len2=0; + } + max-=XRES; + col++; } - max-=XRES; - col++; + break; + + case BAR_U: + break; + + case BAR_D: + break; + } return 0; } @@ -379,8 +436,6 @@ int MO_flush (void) } -#define BARS ( BAR_L | BAR_R | BAR_U | BAR_D | BAR_S ) - DISPLAY MatrixOrbital[] = { { "LCD0821", 2, 8, XRES, YRES, BARS, MO_init, MO_clear, MO_put, MO_bar, MO_flush }, { "LCD1621", 2, 16, XRES, YRES, BARS, MO_init, MO_clear, MO_put, MO_bar, MO_flush }, -- cgit v1.2.3