]> git.webhop.me Git - lcd4linux.git/commitdiff
[lcd4linux @ 2000-05-21 06:20:35 by reinelt]
authorreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Sun, 21 May 2000 06:20:35 +0000 (06:20 +0000)
committerreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Sun, 21 May 2000 06:20:35 +0000 (06:20 +0000)
added ppp throughput
token is '%t[iomt]' at the moment, but this will change in the near future

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

README.Drivers
lcd4linux.conf.sample
parser.c
parser.h
processor.c
system.c
system.h

index c8163a55a520c759cbbea3b6700b217eb7915593..1e8ce4954fea371c43b83a174bea9417100af153 100644 (file)
@@ -1,5 +1,5 @@
 #
-# $Id: README.Drivers,v 1.2 2000/03/26 18:46:28 reinelt Exp $
+# $Id: README.Drivers,v 1.3 2000/05/21 06:20:35 reinelt Exp $
 #
 
 How to write new display drivers for lcd4linux
@@ -23,7 +23,14 @@ this guidelines:
 
 * create a LCD table at the bottom of your driver, and fill it with the
   appropriate values. Take care that you specify the correct bar capabilities
-  of your display or driver!
+  of your display or driver:
+
+  BAR_L:  horizontal bars headed left
+  BAR_R:  horizontal bars headed right
+  BAR_H2: driver supports horizontal dual-bars
+  BAR_U:  vertical bars bottom-up
+  BAR_D:  vertical bars top-down
+  BAR_V2: driver supports vertical dual-bars
 
 * edit display.c and create a reference to your LCD table:
 
index 79f1d7633cb4da923892e1f6c6e13bd91bf9e8c6..87400b6f9c286551d62c2f18a341d2347e895296 100644 (file)
@@ -1,7 +1,7 @@
-#Display LCD2041
-#Port /dev/ttyS2
-#Speed 19200
-#Contrast 160
+Display LCD2041
+Port /dev/ttyS2
+Speed 19200
+Contrast 160
 
 #Display HD44780
 #Port 0x378
 #Port /dev/ttyS2
 #Type 20x4
 
-Display PalmPilot
-Port /dev/ttyS2
-Speed 4800
-size 20x4
-font 6x8
-pixel 1+0
-gap 0x0
-border 2
+#Display PalmPilot
+#Port /dev/ttyS2
+#Speed 4800
+#size 20x4
+#font 6x8
+#pixel 1+0
+#gap 0x0
+#border 2
 
 #Display PPM
 #size 20x4
@@ -49,9 +49,11 @@ border 2
 Row1 "Load %l1%L$r10cs+cb"
 Row2 "Disk %dm $R10dr+dw"
 Row3 "Net  %nm $R10nr+nw"
-Row4 "ISDN %im $r10ii+io"
+#Row4 "ISDN %im $r10ii+io"
 Row5 "Temp %s2°$r10s1+s2"
 
+Row4 "DSL %tm $r10ti+to"
+
 #Row1 "$u3l1$u3cb$u3cs $u3mu$u3ma$u3ms $u3dr$u3dw $u3nr$u3nw $u3ii$u3io"
 #Row2 " "
 #Row3 " "
index f9ff7e1b25cd9d833db6a3107b92788314e963e0..b15eb4f3d6ab07b8f8957ac93caea90253243aeb 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -1,4 +1,4 @@
-/* $Id: parser.c,v 1.5 2000/03/24 11:36:56 reinelt Exp $
+/* $Id: parser.c,v 1.6 2000/05/21 06:20:35 reinelt Exp $
  *
  * row definition parser
  *
  *
  *
  * $Log: parser.c,v $
+ * Revision 1.6  2000/05/21 06:20:35  reinelt
+ *
+ * added ppp throughput
+ * token is '%t[iomt]' at the moment, but this will change in the near future
+ *
  * Revision 1.5  2000/03/24 11:36:56  reinelt
  *
  * new syntax for raster configuration
@@ -101,14 +106,18 @@ static SYMTAB Symtab[] = {{ "%",  T_PERCENT,    C_GENERIC, 0 },
                          { "dw", T_DISK_WRITE, C_DISK,    1 },
                          { "dt", T_DISK_TOTAL, C_DISK,    1 },
                          { "dm", T_DISK_MAX,   C_DISK,    1 },
-                         { "nr", T_NET_RX,     C_NET,     1 },
-                         { "nw", T_NET_TX,     C_NET,     1 },
-                         { "nt", T_NET_TOTAL,  C_NET,     1 },
-                         { "nm", T_NET_MAX,    C_NET,     1 },
+                         { "nr", T_ETH_RX,     C_ETH,     1 },
+                         { "nw", T_ETH_TX,     C_ETH,     1 },
+                         { "nt", T_ETH_TOTAL,  C_ETH,     1 },
+                         { "nm", T_ETH_MAX,    C_ETH,     1 },
                          { "ii", T_ISDN_IN,    C_ISDN,    1 },
                          { "io", T_ISDN_OUT,   C_ISDN,    1 },
                          { "it", T_ISDN_TOTAL, C_ISDN,    1 },
                          { "im", T_ISDN_MAX,   C_ISDN,    1 },
+                         { "ti", T_PPP_RX,     C_PPP,     1 },
+                         { "to", T_PPP_TX,     C_PPP,     1 },
+                         { "tt", T_PPP_TOTAL,  C_PPP,     1 },
+                         { "tm", T_PPP_MAX,    C_PPP,     1 },
                          { "s1", T_SENSOR_1,   C_SENSOR,  1 },
                          { "s2", T_SENSOR_2,   C_SENSOR,  1 },
                          { "s3", T_SENSOR_3,   C_SENSOR,  1 },
index 877f2532c39ff2373d4c81e05628885a895fe30f..948c676eb04c44538e7966c27841b7d0430b601c 100644 (file)
--- a/parser.h
+++ b/parser.h
@@ -1,4 +1,4 @@
-/* $Id: parser.h,v 1.4 2000/03/19 08:41:28 reinelt Exp $
+/* $Id: parser.h,v 1.5 2000/05/21 06:20:35 reinelt Exp $
  *
  * row definition parser
  *
  *
  *
  * $Log: parser.h,v $
+ * Revision 1.5  2000/05/21 06:20:35  reinelt
+ *
+ * added ppp throughput
+ * token is '%t[iomt]' at the moment, but this will change in the near future
+ *
  * Revision 1.4  2000/03/19 08:41:28  reinelt
  *
  * documentation available! README, README.MatrixOrbital, README.Drivers
@@ -54,14 +59,15 @@ typedef enum {
   T_LOAD_1, T_LOAD_2, T_LOAD_3, T_OVERLOAD, 
   T_CPU_USER, T_CPU_NICE, T_CPU_SYSTEM, T_CPU_BUSY, T_CPU_IDLE,
   T_DISK_READ, T_DISK_WRITE, T_DISK_TOTAL, T_DISK_MAX,
-  T_NET_RX, T_NET_TX, T_NET_TOTAL, T_NET_MAX,
+  T_ETH_RX, T_ETH_TX, T_ETH_TOTAL, T_ETH_MAX,
+  T_PPP_RX, T_PPP_TX, T_PPP_TOTAL, T_PPP_MAX,
   T_ISDN_IN, T_ISDN_OUT, T_ISDN_TOTAL, T_ISDN_MAX,
   T_SENSOR_1, T_SENSOR_2, T_SENSOR_3, T_SENSOR_4, T_SENSOR_5, 
   T_SENSOR_6, T_SENSOR_7, T_SENSOR_8, T_SENSOR_9
 } TOKEN;
 
 typedef enum {
-  C_GENERIC, C_MEM, C_LOAD, C_CPU, C_DISK, C_NET, C_ISDN, C_SENSOR
+  C_GENERIC, C_MEM, C_LOAD, C_CPU, C_DISK, C_ETH, C_PPP, C_ISDN, C_SENSOR
 } CLASS;
 
 char *parse (char *string, int supported_bars, int usage[]);
index 6a4b71531e98ec5f52afc66caf251c6a8bf49e66..f77aa3de6ad0dbad688b540001a89fb8439dd322 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: processor.c,v 1.5 2000/04/15 11:56:35 reinelt Exp $
+/* $Id: processor.c,v 1.6 2000/05/21 06:20:35 reinelt Exp $
  *
  * main data processing
  *
  *
  *
  * $Log: processor.c,v $
+ * Revision 1.6  2000/05/21 06:20:35  reinelt
+ *
+ * added ppp throughput
+ * token is '%t[iomt]' at the moment, but this will change in the near future
+ *
  * Revision 1.5  2000/04/15 11:56:35  reinelt
  *
  * more debug messages
@@ -84,6 +89,7 @@ struct { double user, nice, system, idle; } busy;
 struct { int read, write, total, max, peak; } disk;
 struct { int rx, tx, total, max, peak; } net;
 struct { int usage, in, out, total, max, peak; } isdn;
+struct { int rx, tx, total, max, peak; } ppp;
 struct { double val, min, max; } sensor[SENSORS];
 
 
@@ -133,13 +139,13 @@ static double query (int token)
   case T_DISK_MAX:
     return disk.max;
     
-  case T_NET_RX:
+  case T_ETH_RX:
     return net.rx;
-  case T_NET_TX:
+  case T_ETH_TX:
     return net.tx;
-  case T_NET_TOTAL:
+  case T_ETH_TOTAL:
     return net.total;
-  case T_NET_MAX:
+  case T_ETH_MAX:
     return net.max;
     
   case T_ISDN_IN:
@@ -151,6 +157,15 @@ static double query (int token)
   case T_ISDN_MAX:
     return isdn.max;
 
+  case T_PPP_RX:
+    return ppp.rx;
+  case T_PPP_TX:
+    return ppp.tx;
+  case T_PPP_TOTAL:
+    return ppp.total;
+  case T_PPP_MAX:
+    return ppp.max;
+    
   case T_SENSOR_1:
   case T_SENSOR_2:
   case T_SENSOR_3:
@@ -193,11 +208,11 @@ static double query_bar (int token)
   case T_DISK_TOTAL:
     return value/disk.peak/2.0;
     
-  case T_NET_RX:
-  case T_NET_TX:
-  case T_NET_MAX:
+  case T_ETH_RX:
+  case T_ETH_TX:
+  case T_ETH_MAX:
     return value/net.peak;
-  case T_NET_TOTAL:
+  case T_ETH_TOTAL:
     return value/net.peak/2.0;
     
   case T_ISDN_IN:
@@ -207,6 +222,13 @@ static double query_bar (int token)
   case T_ISDN_TOTAL:
     return value/isdn.peak/2.0;
 
+  case T_PPP_RX:
+  case T_PPP_TX:
+  case T_PPP_MAX:
+    return value/ppp.peak;
+  case T_PPP_TOTAL:
+    return value/ppp.peak/2.0;
+    
   case T_SENSOR_1:
   case T_SENSOR_2:
   case T_SENSOR_3:
@@ -294,6 +316,12 @@ static void print_token (int token, char **p)
     else
       *p+=sprintf (*p, "----");
     break;
+  case T_PPP_RX:
+  case T_PPP_TX:
+  case T_PPP_MAX:
+  case T_PPP_TOTAL:
+    *p+=sprintf (*p, "%5.0f", query(token));
+    break;
   default:
       *p+=sprintf (*p, "%4.0f", query(token));
   }
@@ -324,7 +352,7 @@ static void collect_data (void)
     if (disk.max>disk.peak) disk.peak=disk.max;
   }
   
-  if (token_usage[C_NET]) {
+  if (token_usage[C_ETH]) {
     Net (&net.rx, &net.tx);
     net.total=net.rx+net.tx;
     net.max=net.rx>net.tx?net.rx:net.tx;
@@ -338,6 +366,13 @@ static void collect_data (void)
     if (isdn.max>isdn.peak) isdn.peak=isdn.max;
   }
 
+  if (token_usage[C_PPP]) {
+    PPP (0, &ppp.rx, &ppp.tx);
+    ppp.total=ppp.rx+ppp.tx;
+    ppp.max=ppp.rx>ppp.tx?ppp.rx:ppp.tx;
+    if (ppp.max>ppp.peak) ppp.peak=ppp.max;
+  }
+
   for (i=1; i<SENSORS; i++) {
     if (token_usage[T_SENSOR_1+i-1]) {
       Sensor (i, &sensor[i].val, &sensor[i].min, &sensor[i].max);
index 5db5c1b838a3ba5e0bbdc680550e65cae8817b0b..5d9f3d3ee71c72cbebf8b47e3959a3e32432e538 100644 (file)
--- a/system.c
+++ b/system.c
@@ -1,4 +1,4 @@
-/* $Id: system.c,v 1.11 2000/04/15 11:56:35 reinelt Exp $
+/* $Id: system.c,v 1.12 2000/05/21 06:20:35 reinelt Exp $
  *
  * system status retreivement
  *
  *
  *
  * $Log: system.c,v $
+ * Revision 1.12  2000/05/21 06:20:35  reinelt
+ *
+ * added ppp throughput
+ * token is '%t[iomt]' at the moment, but this will change in the near future
+ *
  * Revision 1.11  2000/04/15 11:56:35  reinelt
  *
  * more debug messages
  *   sets number of packets received and transmitted
  *   returns 0 if ok, -1 on error
  *
+ * int PPP (int unit, int *rx, int *tx);
+ *   sets number of packets received and transmitted
+ *   returns 0 if ok, -1 on error
+ *
  * int Sensor (int index, double *val, double *min, double *max)
  *   sets the current value of the index'th sensor and
  *   the minimum and maximum values from the config file
 #include <sys/types.h>
 #include <sys/utsname.h>
 #include <sys/param.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <net/if_ppp.h>
 
 #include "debug.h"
 #include "cfg.h"
@@ -548,6 +560,42 @@ int Net (int *rx, int *tx)
   return 0;
 }
 
+int PPP (int unit, int *rx, int *tx)
+{
+  static int fd=-2;
+  struct ifpppstatsreq req;
+  char buffer[16];
+  
+  *rx=0;
+  *tx=0;
+
+  if (fd==-1) return -1;
+  
+  if (fd==-2) {
+    fd = socket(AF_INET, SOCK_DGRAM, 0);
+    if (fd==-1) {
+      perror ("socket() failed");
+      return -1;
+    }
+    debug ("socket()=%d\n", fd);
+  }
+
+  memset (&req, 0, sizeof (req));
+  req.stats_ptr = (caddr_t) &req.stats;
+  snprintf (req.ifr__name, sizeof(req.ifr__name), "ppp%d", unit);
+  
+  if (ioctl(fd, SIOCGPPPSTATS, &req) < 0)
+    return 0;
+  
+  snprintf (buffer, sizeof(buffer), "ppp%d_rx", unit);
+  *rx=smooth(buffer, 500, req.stats.p.ppp_ibytes);
+
+  snprintf (buffer, sizeof(buffer), "ppp%d_tx", unit);
+  *tx=smooth(buffer, 500, req.stats.p.ppp_obytes);
+
+  return 0;
+}
+
 int Sensor (int index, double *val, double *min, double *max)
 {
   char buffer[32];
index 1c8dd30fe348573b25e3da3585318d94631a4728..d8870f95b6e1591ff4a98d2faacc9cbacc05237a 100644 (file)
--- a/system.h
+++ b/system.h
@@ -1,4 +1,4 @@
-/* $Id: system.h,v 1.6 2000/04/13 06:09:52 reinelt Exp $
+/* $Id: system.h,v 1.7 2000/05/21 06:20:35 reinelt Exp $
  *
  * system status retreivement
  *
  *
  *
  * $Log: system.h,v $
+ * Revision 1.7  2000/05/21 06:20:35  reinelt
+ *
+ * added ppp throughput
+ * token is '%t[iomt]' at the moment, but this will change in the near future
+ *
  * Revision 1.6  2000/04/13 06:09:52  reinelt
  *
  * added BogoMips() to system.c (not used by now, maybe sometimes we can
@@ -61,6 +66,7 @@ int    Load (double *load1, double *load2, double *load3);
 int    Busy (double *user, double *nice, double *system, double *idle);
 int    Disk (int *r, int *w);
 int    Net (int *rx, int *tx);
+int    PPP (int unit, int *rx, int *tx);
 int    Sensor (int index, double *val, double *min, double *max);
 
 #endif