]> git.webhop.me Git - lcd4linux.git/commitdiff
[lcd4linux @ 2004-05-31 05:38:02 by reinelt]
authorreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Mon, 31 May 2004 05:38:02 +0000 (05:38 +0000)
committerreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Mon, 31 May 2004 05:38:02 +0000 (05:38 +0000)
fixed possible bugs with user-defined chars (clear high bits)
thanks to Andy Baxter for debugging the MilfordInstruments driver!

git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@449 3ae390bd-cb1e-0410-b409-cd5a39f66f1f

drv_BeckmannEgle.c
drv_Crystalfontz.c
drv_Cwlinux.c
drv_HD44780.c
drv_M50530.c
drv_MatrixOrbital.c
drv_MilfordInstruments.c
drv_USBLCD.c

index c7bb05a2db88a4e36c8d0f6869514eb8c8ed2c10..375d7b6da654b92b766f68c09dc73454aa79f39d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_BeckmannEgle.c,v 1.1 2004/05/28 14:36:10 reinelt Exp $
+/* $Id: drv_BeckmannEgle.c,v 1.2 2004/05/31 05:38:02 reinelt Exp $
  *
  * driver for Beckmann+Egle mini terminals
  * Copyright 2000 Michael Reinelt <reinelt@eunet.at>
  *
  *
  * $Log: drv_BeckmannEgle.c,v $
+ * Revision 1.2  2004/05/31 05:38:02  reinelt
+ *
+ * fixed possible bugs with user-defined chars (clear high bits)
+ * thanks to Andy Baxter for debugging the MilfordInstruments driver!
+ *
  * Revision 1.1  2004/05/28 14:36:10  reinelt
  *
  * added drv_BeckmannEgle.c (forgotten at first check in :-)
@@ -102,7 +107,7 @@ static void drv_BE_write (int row, int col, unsigned char *data, int len)
 }
 
 
-static void drv_BE_defchar (int ascii, unsigned char *buffer)
+static void drv_BE_defchar (int ascii, unsigned char *matrix)
 {
   int  i;
   char cmd[32];
@@ -111,14 +116,14 @@ static void drv_BE_defchar (int ascii, unsigned char *buffer)
   p = cmd;
   *p++ = '\033';
   *p++ = '&';
-  *p++ = 'T';            // enter transparent mode
-  *p++ = '\0';           // write cmd
-  *p++ = 0x40|8*ascii;   // write CGRAM
+  *p++ = 'T';                  // enter transparent mode
+  *p++ = '\0';                 // write cmd
+  *p++ = 0x40|8*ascii;         // write CGRAM
   for (i = 0; i < YRES; i++) {
-    *p++ = '\1';         // write data
-    *p++ = buffer[i];    // character bitmap
+    *p++ = '\1';               // write data
+    *p++ = matrix[i] & 0x1f;   // character bitmap
   }
-  *p++ = '\377';         // leave transparent mode
+  *p++ = '\377';               // leave transparent mode
 
   drv_generic_serial_write (cmd, p-cmd);
 }
index 1d6d977fe0628e1ff2c42e76102597338ab14d27..f6c7ccaa6bf1c1705a5999b61ccb9f800c160d69 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_Crystalfontz.c,v 1.19 2004/05/30 08:25:50 reinelt Exp $
+/* $Id: drv_Crystalfontz.c,v 1.20 2004/05/31 05:38:02 reinelt Exp $
  *
  * new style driver for Crystalfontz display modules
  *
  *
  *
  * $Log: drv_Crystalfontz.c,v $
+ * Revision 1.20  2004/05/31 05:38:02  reinelt
+ *
+ * fixed possible bugs with user-defined chars (clear high bits)
+ * thanks to Andy Baxter for debugging the MilfordInstruments driver!
+ *
  * Revision 1.19  2004/05/30 08:25:50  reinelt
  *
  * Crystalfontz 631 driver finished
@@ -413,29 +418,31 @@ static void drv_CF_write3 (int row, int col, unsigned char *data, int len)
 }
 
 
-static void drv_CF_defchar1 (int ascii, unsigned char *buffer)
+static void drv_CF_defchar1 (int ascii, unsigned char *matrix)
 {
-  char cmd[2]="\031n"; // set custom char bitmap
+  int i;
+  char cmd[10]="\031n"; // set custom char bitmap
   
   // user-defineable chars start at 128, but are defined at 0
   cmd[1]=(char)(ascii-CHAR0); 
-  drv_generic_serial_write (cmd, 2);
-  drv_generic_serial_write (buffer, 8);
+  for (i = 0; i < 8; i++) {
+    cmd[i+2] = matrix[i] & 0x3f;
+  }
+  drv_generic_serial_write (cmd, 10);
 }
 
 
 static void drv_CF_defchar23 (int ascii, unsigned char *matrix)
 {
-  char buffer[9];
   int i;
+  char buffer[9];
   
   // user-defineable chars start at 128, but are defined at 0
   buffer[0] = (char)(ascii-CHAR0); 
-  memcpy(buffer+1, matrix, 8);
-
+  
   // clear bit 6 and 7 of the bitmap (blinking)
   for (i = 0; i < 8; i++) {
-    buffer[1+i] &= 0x3f;
+    buffer[i+1] = matrix[i] & 0x3f;
   }
   
   drv_CF_send (9, 9, buffer);
index 1c6f2439d2079e45eef6a482a0fd320a6cf5a13f..8d7d09661b92e09b1be662cf0657db578de42691 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_Cwlinux.c,v 1.7 2004/05/28 13:51:42 reinelt Exp $
+/* $Id: drv_Cwlinux.c,v 1.8 2004/05/31 05:38:02 reinelt Exp $
  *
  * new style driver for Cwlinux display modules
  *
  *
  *
  * $Log: drv_Cwlinux.c,v $
+ * Revision 1.8  2004/05/31 05:38:02  reinelt
+ *
+ * fixed possible bugs with user-defined chars (clear high bits)
+ * thanks to Andy Baxter for debugging the MilfordInstruments driver!
+ *
  * Revision 1.7  2004/05/28 13:51:42  reinelt
  *
  * ported driver for Beckmann+Egle Mini-Terminals
@@ -133,7 +138,7 @@ static void drv_CW1602_defchar (int ascii, unsigned char *buffer)
   cmd[2]=(char)(ascii+1);
 
   for (i=0; i<8; i++) {
-    cmd[3+i]=buffer[i];
+    cmd[3+i] = buffer[i] & 0x1f;
   }
   drv_generic_serial_write(cmd,12);
   usleep(20);  // delay for cw1602 to settle the character defined!
index 4450438c4eaa467270f94ad6edf54e19455d0ef7..122a158409f2d892ff0112ebbd1e9287da617e8c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_HD44780.c,v 1.22 2004/05/27 03:39:47 reinelt Exp $
+/* $Id: drv_HD44780.c,v 1.23 2004/05/31 05:38:02 reinelt Exp $
  *
  * new style driver for HD44780-based displays
  *
  *
  *
  * $Log: drv_HD44780.c,v $
+ * Revision 1.23  2004/05/31 05:38:02  reinelt
+ *
+ * fixed possible bugs with user-defined chars (clear high bits)
+ * thanks to Andy Baxter for debugging the MilfordInstruments driver!
+ *
  * Revision 1.22  2004/05/27 03:39:47  reinelt
  *
  * changed function naming scheme to plugin::function
@@ -518,8 +523,15 @@ static void drv_HD_write (int row, int col, unsigned char *data, int len)
 }
 
 
-static void drv_HD_defchar (int ascii, unsigned char *buffer)
+static void drv_HD_defchar (int ascii, unsigned char *matrix)
 {
+  int i;
+  unsigned char buffer[8];
+
+  for (i = 0; i < 8; i++) {
+    buffer[i] = matrix[i] & 0x1f;
+  }
+  
   // define chars on *both* controllers!
   drv_HD_command (allControllers, 0x40|8*ascii, T_EXEC);
   drv_HD_data (allControllers, buffer, 8, T_WRCG);
index a60ad4cf70ee3a555f605204f05fb75921d9b52a..978781895350955f5177e98d19eb4ed6f49ea78e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_M50530.c,v 1.5 2004/05/29 15:53:28 reinelt Exp $
+/* $Id: drv_M50530.c,v 1.6 2004/05/31 05:38:02 reinelt Exp $
  *
  * new style driver for M50530-based displays
  *
  *
  *
  * $Log: drv_M50530.c,v $
+ * Revision 1.6  2004/05/31 05:38:02  reinelt
+ *
+ * fixed possible bugs with user-defined chars (clear high bits)
+ * thanks to Andy Baxter for debugging the MilfordInstruments driver!
+ *
  * Revision 1.5  2004/05/29 15:53:28  reinelt
  *
  * M50530: reset parport signals on exit
@@ -153,7 +158,7 @@ static void drv_M5_write (int row, int col, unsigned char *data, int len)
 }
 
 
-static void drv_M5_defchar (int ascii, unsigned char *buffer)
+static void drv_M5_defchar (int ascii, unsigned char *matrix)
 {
   int i;
   
@@ -162,7 +167,7 @@ static void drv_M5_defchar (int ascii, unsigned char *buffer)
   // Fixme: looks like the M50530 cannot control the bottom line
   // therefore we have only 7 bytes here
   for (i=0; i<7; i++) {
-    drv_M5_command (0x100|buffer[i], 20);
+    drv_M5_command (0x100|(matrix[i] & 0x3f), 20);
   }
 }
 
index 573b683414be98d0b12c455235a7e256652841ad..5a65c54b6713e998d9571c3a19f28c68a8b54dc5 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_MatrixOrbital.c,v 1.24 2004/05/28 13:51:42 reinelt Exp $
+/* $Id: drv_MatrixOrbital.c,v 1.25 2004/05/31 05:38:02 reinelt Exp $
  *
  * new style driver for Matrix Orbital serial display modules
  *
  *
  *
  * $Log: drv_MatrixOrbital.c,v $
+ * Revision 1.25  2004/05/31 05:38:02  reinelt
+ *
+ * fixed possible bugs with user-defined chars (clear high bits)
+ * thanks to Andy Baxter for debugging the MilfordInstruments driver!
+ *
  * Revision 1.24  2004/05/28 13:51:42  reinelt
  *
  * ported driver for Beckmann+Egle Mini-Terminals
@@ -217,13 +222,16 @@ static void drv_MO_write (int row, int col, unsigned char *data, int len)
 }
 
 
-static void drv_MO_defchar (int ascii, unsigned char *buffer)
+static void drv_MO_defchar (int ascii, unsigned char *matrix)
 {
-  char cmd[3]="\376N";
+  int i;
+  char cmd[11]="\376N";
 
   cmd[2]=(char)ascii;
-  drv_generic_serial_write (cmd, 3);
-  drv_generic_serial_write (buffer, 8);
+  for (i = 0; i < 8; i++) {
+    cmd[i+3] = matrix[i] & 0x1f;
+  }
+  drv_generic_serial_write (cmd, 11);
 }
 
 
index 4cbf9bed913298eaef66218b2f9af7482aced486..d68f3eb7d950eb73e13910cb01ea7d589e18865f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_MilfordInstruments.c,v 1.4 2004/05/31 01:31:01 andy-b Exp $
+/* $Id: drv_MilfordInstruments.c,v 1.5 2004/05/31 05:38:02 reinelt Exp $
  *
  * driver for Milford Instruments 'BPK' piggy-back serial interface board
  * for standard Hitachi 44780 compatible lcd modules.
  *
  *
  * $Log: drv_MilfordInstruments.c,v $
+ * Revision 1.5  2004/05/31 05:38:02  reinelt
+ *
+ * fixed possible bugs with user-defined chars (clear high bits)
+ * thanks to Andy Baxter for debugging the MilfordInstruments driver!
+ *
  * Revision 1.4  2004/05/31 01:31:01  andy-b
  *
  *
@@ -108,17 +113,17 @@ static void drv_MI_write (int row, int col, unsigned char *data, int len)
 }
 
 
-static void drv_MI_defchar (int ascii, unsigned char *buffer)
+static void drv_MI_defchar (int ascii, unsigned char *matrix)
 {
   int i;
-  char cmd[2]="\376x";
+  char cmd[10]="\376x";
+
   if (ascii<8) {
     cmd[1]=(char)(64+ascii*8);
     for ( i=0; i<8; i++) {
-       buffer[i]&=0x1f;
-       };
-    drv_generic_serial_write (cmd, 2);
-    drv_generic_serial_write (buffer, 8);
+      cmd[i+2] = matrix[i] & 0x1f;
+    };
+    drv_generic_serial_write (cmd, 10);
   }
 }
 
@@ -144,7 +149,7 @@ static int drv_MI_start (char *section)
   Model=i;
   info ("%s: using model '%s'", Name, Models[Model].name);
   
-  if (drv_generic_serial_open(section, Name)<0) return -1;
+  if (drv_generic_serial_open(section, Name, 0) < 0) return -1;
   
   // initialize global variables
   DROWS    = Models[Model].rows;
@@ -221,7 +226,7 @@ int drv_MI_init (char *section)
     return ret;
   
   // initialize generic bar driver
-  if ((ret=drv_generic_text_bar_init())!=0)
+  if ((ret=drv_generic_text_bar_init(0))!=0)
     return ret;
   
   // add fixed chars to the bar driver
index 1fbad54b98957b1a9ed732d7b8c9935ac93a32f8..17c2cd208c62f7f9cea4997edf44f073af14067a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_USBLCD.c,v 1.4 2004/05/26 11:37:36 reinelt Exp $
+/* $Id: drv_USBLCD.c,v 1.5 2004/05/31 05:38:02 reinelt Exp $
  *
  * new style driver for USBLCD displays
  *
  *
  *
  * $Log: drv_USBLCD.c,v $
+ * Revision 1.5  2004/05/31 05:38:02  reinelt
+ *
+ * fixed possible bugs with user-defined chars (clear high bits)
+ * thanks to Andy Baxter for debugging the MilfordInstruments driver!
+ *
  * Revision 1.4  2004/05/26 11:37:36  reinelt
  *
  * Curses driver ported.
@@ -135,15 +140,15 @@ static void drv_UL_write (int row, int col, unsigned char *data, int len)
   drv_UL_send();
 }
 
-static void drv_UL_defchar (int ascii, unsigned char *buffer)
+static void drv_UL_defchar (int ascii, unsigned char *matrix)
 {
   int i;
   
   drv_UL_command (0x40|8*ascii);
 
   for (i = 0; i < 8; i++) {
-    if(*buffer == 0) *BufPtr++ = 0;
-    *BufPtr++ = *buffer++;
+    if(*matrix == 0) *BufPtr++ = 0;
+    *BufPtr++ = *matrix++ & 0x1f;
   }
 
   drv_UL_send();