]> git.webhop.me Git - lcd4linux.git/commitdiff
[lcd4linux @ 2006-01-06 08:12:19 by reinelt]
authorreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Fri, 6 Jan 2006 08:12:19 +0000 (08:12 +0000)
committerreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Fri, 6 Jan 2006 08:12:19 +0000 (08:12 +0000)
GPO's for Crystalfontz

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

drv_Crystalfontz.c
lcd4linux.conf.sample

index 82f3cb40d5e5661d6f2ad63ddd9da44098bda1d2..31688cd499afa5cbcd5adc6b1cc99732a8ffc941 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_Crystalfontz.c,v 1.36 2005/09/07 06:51:44 reinelt Exp $
+/* $Id: drv_Crystalfontz.c,v 1.37 2006/01/06 08:12:19 reinelt Exp $
  *
  * new style driver for Crystalfontz display modules
  *
@@ -23,6 +23,9 @@
  *
  *
  * $Log: drv_Crystalfontz.c,v $
+ * Revision 1.37  2006/01/06 08:12:19  reinelt
+ * GPO's for Crystalfontz
+ *
  * Revision 1.36  2005/09/07 06:51:44  reinelt
  * Support for CF635 added
  *
 #include "widget_bar.h"
 #include "drv.h"
 #include "drv_generic_text.h"
+#include "drv_generic_gpio.h"
 #include "drv_generic_serial.h"
 
 
@@ -225,33 +229,29 @@ static double Fan_RPM[4] = { 0.0, };
 static double Temperature[32] = { 0.0, };
 
 
-/* Fixme: GPO's not yet implemented */
-/* static int GPO[8]; */
-static int GPOS;
-
-
 typedef struct {
     int type;
     char *name;
     int rows;
     int cols;
+    int gpis;
     int gpos;
     int protocol;
     int payload;
 } MODEL;
 
-/* Fixme #1: number of gpo's should be verified */
+/* Fixme #1: number of GPI's & GPO's should be verified */
 /* Fixme #2: protocol should be verified */
 
 static MODEL Models[] = {
-    {626, "626", 2, 16, 0, 1, 0},
-    {631, "631", 2, 20, 0, 3, 22},
-    {632, "632", 2, 16, 0, 1, 0},
-    {633, "633", 2, 16, 0, 2, 18},
-    {634, "634", 4, 20, 0, 1, 0},
-    {635, "635", 4, 20, 0, 3, 22},
-    {636, "636", 2, 16, 0, 1, 0},
-    {-1, "Unknown", -1, -1, 0, 0, 0}
+    {626, "626", 2, 16, 0, 0, 1, 0},
+    {631, "631", 2, 20, 0, 0, 3, 22},
+    {632, "632", 2, 16, 0, 0, 1, 0},
+    {633, "633", 2, 16, 4, 4, 2, 18},
+    {634, "634", 4, 20, 0, 0, 1, 0},
+    {635, "635", 4, 20, 0, 0, 3, 22},
+    {636, "636", 2, 16, 0, 0, 1, 0},
+    {-1, "Unknown", -1, -1, 0, 0, 0, 0}
 };
 
 
@@ -658,26 +658,27 @@ static int drv_CF_backlight(int backlight)
 }
 
 
-static int drv_CF_fan_pwm(int fan, int power)
+static int drv_CF_GPI(const int num)
 {
-    static unsigned char PWM[4] = { 100, };
+    if (num < 0 || num > 3) {
+       return 0;
+    }
+    return Fan_RPM[num];
+}
 
-    /* sanity check */
-    if (fan < 1 || fan > 4)
-       return -1;
 
-    /* fan ranges from 1 to 4 */
-    fan--;
+static int drv_CF_GPO(const int num, const int val)
+{
+    static unsigned char PWM[4] = { 0, };
+
+    int v = val;
 
-    /* -1 is used to query the current power */
-    if (power == -1)
-       return PWM[fan];
+    if (v < 0)
+       v = 0;
+    if (v > 100)
+       v = 100;
 
-    if (power < 0)
-       power = 0;
-    if (power > 100)
-       power = 100;
-    PWM[fan] = power;
+    PWM[num] = v;
 
     switch (Protocol) {
     case 2:
@@ -685,7 +686,7 @@ static int drv_CF_fan_pwm(int fan, int power)
        break;
     }
 
-    return PWM[fan];
+    return v;
 }
 
 
@@ -909,6 +910,7 @@ static int drv_CF_start(const char *section)
     /* initialize global variables */
     DROWS = Models[Model].rows;
     DCOLS = Models[Model].cols;
+    GPIS = Models[Model].gpis;
     GPOS = Models[Model].gpos;
     Protocol = Models[Model].protocol;
     Payload = Models[Model].payload;
@@ -996,25 +998,6 @@ static void plugin_backlight(RESULT * result, const int argc, RESULT * argv[])
 }
 
 
-static void plugin_fan_pwm(RESULT * result, const int argc, RESULT * argv[])
-{
-    double pwm;
-
-    switch (argc) {
-    case 1:
-       pwm = drv_CF_fan_pwm(R2N(argv[0]), -1);
-       SetResult(&result, R_NUMBER, &pwm);
-       break;
-    case 2:
-       pwm = drv_CF_fan_pwm(R2N(argv[0]), R2N(argv[1]));
-       SetResult(&result, R_NUMBER, &pwm);
-       break;
-    default:
-       error("%s.pwm(): wrong number of parameters");
-       SetResult(&result, R_STRING, "");
-    }
-}
-
 /* Fixme: other plugins for Fans, Temperature sensors, ... */
 
 
@@ -1026,6 +1009,7 @@ static void plugin_fan_pwm(RESULT * result, const int argc, RESULT * argv[])
 /* using drv_generic_text_draw(W) */
 /* using drv_generic_text_icon_draw(W) */
 /* using drv_generic_text_bar_draw(W) */
+/* using drv_generic_gpio_draw(W) */
 
 
 /****************************************/
@@ -1074,12 +1058,16 @@ int drv_CF_init(const char *section, const int quiet)
        GOTO_COST = -1;         /* there is no goto on 633 */
        drv_generic_text_real_write = drv_CF_write2;
        drv_generic_text_real_defchar = drv_CF_defchar23;
+       drv_generic_gpio_real_get = drv_CF_GPI;
+       drv_generic_gpio_real_set = drv_CF_GPO;
        break;
     case 3:
        CHAR0 = 0;              /* ASCII of first user-defineable char */
        GOTO_COST = 3;          /* number of bytes a goto command requires */
        drv_generic_text_real_write = drv_CF_write3;
        drv_generic_text_real_defchar = drv_CF_defchar23;
+       drv_generic_gpio_real_get = drv_CF_GPI;
+       drv_generic_gpio_real_set = drv_CF_GPO;
        break;
     }
 
@@ -1109,6 +1097,10 @@ int drv_CF_init(const char *section, const int quiet)
     if (Protocol == 2)
        drv_generic_text_bar_add_segment(255, 255, 255, 255);   /* ASCII 255 = block */
 
+    /* initialize generic GPIO driver */
+    if ((ret = drv_generic_gpio_init(section, Name)) != 0)
+       return ret;
+
     /* register text widget */
     wc = Widget_Text;
     wc.draw = drv_generic_text_draw;
@@ -1127,9 +1119,6 @@ int drv_CF_init(const char *section, const int quiet)
     /* register plugins */
     AddFunction("LCD::contrast", -1, plugin_contrast);
     AddFunction("LCD::backlight", -1, plugin_backlight);
-    if (Protocol == 2) {
-       AddFunction("LCD::fan_pwm", -1, plugin_fan_pwm);
-    }
 
     return 0;
 }
@@ -1139,9 +1128,10 @@ int drv_CF_init(const char *section, const int quiet)
 int drv_CF_quit(const int quiet)
 {
 
-    info("%s: shutting down.", Name);
+    info("%s: shutting down display.", Name);
 
     drv_generic_text_quit();
+    drv_generic_gpio_quit();
 
     /* clear display */
     drv_CF_clear();
index 355830b42032763151c7fdb137ec83d0c754395f..06c423e03dcf81b5a9363d3be8ec9f352f141f39 100644 (file)
@@ -90,7 +90,7 @@ Display CF632 {
 }
 
 Display CF633 {
-    Icons 4
+    Icons 1
     Driver 'Crystalfontz'
     Model '633'
     Port '/dev/tts/0'
@@ -923,13 +923,13 @@ Layout testMySQL {
 #Display 'MI240'
 #Display 'CW12232'
 #Display 'HD44780-generic'
-Display 'HD44780-WinAmp'
+#Display 'HD44780-WinAmp'
 #Display 'WDC2704M'
 #Display 'SC1602D'
 #Display 'LCM-162'
 #Display 'CF631'
 #Display 'CF632'
-#Display 'CF633'
+Display 'CF633'
 #Display 'Curses'
 #Display 'M50530-24x8'
 #Display 'LCDTerm'