diff options
| author | reinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2004-01-27 08:13:39 +0000 | 
|---|---|---|
| committer | reinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2004-01-27 08:13:39 +0000 | 
| commit | 78322209fc48165a0e7b097908f959d537b7b3a8 (patch) | |
| tree | 24a1ae58c9190ce9d5dd762f474e9fe328021636 | |
| parent | 927b0b86ce4fffd3fc1645d6ece156fdd6bc31fc (diff) | |
| download | lcd4linux-78322209fc48165a0e7b097908f959d537b7b3a8.tar.gz | |
[lcd4linux @ 2004-01-27 08:13:39 by reinelt]
ported PPP token to plugin_ppp
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@342 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
| -rw-r--r-- | Makefile.am | 1 | ||||
| -rw-r--r-- | Makefile.in | 14 | ||||
| -rw-r--r-- | lcd4linux.conf.sample | 1 | ||||
| -rw-r--r-- | plugin.c | 10 | ||||
| -rw-r--r-- | plugin_i2c_sensors.c | 6 | ||||
| -rw-r--r-- | plugin_ppp.c | 133 | ||||
| -rw-r--r-- | plugin_proc_stat.c | 9 | 
7 files changed, 160 insertions, 14 deletions
| diff --git a/Makefile.am b/Makefile.am index afbcac4..718b5fd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -38,6 +38,7 @@ plugin_proc_stat.c \  plugin_cpuinfo.c \  plugin_meminfo.c \  plugin_netdev.c \ +plugin_ppp.c \  plugin_i2c_sensors.c \  plugin_xmms.c \  system.c system.h \ diff --git a/Makefile.in b/Makefile.in index 16a6dc5..4a08afc 100644 --- a/Makefile.in +++ b/Makefile.in @@ -106,7 +106,7 @@ lcd4linux_LDADD = @DRIVERS@ @DRVLIBS@  #remove next line for liblcd4linux  lcd4linux_DEPENDENCIES = @DRIVERS@ -lcd4linux_SOURCES =  lcd4linux.c pid.c pid.h hash.c hash.h parser.c parser.h processor.c processor.h layout.c layout.h timer.c timer.h evaluator.c evaluator.h widget.c      widget.h widget_text.c widget_text.h widget_bar.c  widget_bar.h widget_icon.c widget_icon.h plugin.c plugin.h plugin_math.c plugin_string.c plugin_cfg.c plugin_uname.c plugin_loadavg.c plugin_proc_stat.c plugin_cpuinfo.c plugin_meminfo.c plugin_netdev.c plugin_i2c_sensors.c plugin_xmms.c system.c system.h isdn.c isdn.h wifi.c wifi.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h exec.c exec.h expr.c expr.h mail2.c socket.c socket.h imon.c imon.h display.c display.h drv.c drv.h drv_generic_serial.c  drv_generic_serial.h drv_generic_parport.c drv_generic_parport.h drv_generic_text.c    drv_generic_text.h debug.c debug.h cfg.c cfg.h lock.c lock.h pixmap.c pixmap.h bar.c bar.h icon.c icon.h fontmap.c fontmap.h udelay.c udelay.h +lcd4linux_SOURCES =  lcd4linux.c pid.c pid.h hash.c hash.h parser.c parser.h processor.c processor.h layout.c layout.h timer.c timer.h evaluator.c evaluator.h widget.c      widget.h widget_text.c widget_text.h widget_bar.c  widget_bar.h widget_icon.c widget_icon.h plugin.c plugin.h plugin_math.c plugin_string.c plugin_cfg.c plugin_uname.c plugin_loadavg.c plugin_proc_stat.c plugin_cpuinfo.c plugin_meminfo.c plugin_netdev.c plugin_ppp.c plugin_i2c_sensors.c plugin_xmms.c system.c system.h isdn.c isdn.h wifi.c wifi.h mail.c mail.h seti.c seti.h battery.c battery.h dvb.c dvb.h filter.c filter.h exec.c exec.h expr.c expr.h mail2.c socket.c socket.h imon.c imon.h display.c display.h drv.c drv.h drv_generic_serial.c  drv_generic_serial.h drv_generic_parport.c drv_generic_parport.h drv_generic_text.c    drv_generic_text.h debug.c debug.h cfg.c cfg.h lock.c lock.h pixmap.c pixmap.h bar.c bar.h icon.c icon.h fontmap.c fontmap.h udelay.c udelay.h  #liblcd4linux_la_DEPENDENCIES = @DRIVERS@ @@ -153,7 +153,7 @@ widget_bar.$(OBJEXT) widget_icon.$(OBJEXT) plugin.$(OBJEXT) \  plugin_math.$(OBJEXT) plugin_string.$(OBJEXT) plugin_cfg.$(OBJEXT) \  plugin_uname.$(OBJEXT) plugin_loadavg.$(OBJEXT) \  plugin_proc_stat.$(OBJEXT) plugin_cpuinfo.$(OBJEXT) \ -plugin_meminfo.$(OBJEXT) plugin_netdev.$(OBJEXT) \ +plugin_meminfo.$(OBJEXT) plugin_netdev.$(OBJEXT) plugin_ppp.$(OBJEXT) \  plugin_i2c_sensors.$(OBJEXT) plugin_xmms.$(OBJEXT) system.$(OBJEXT) \  isdn.$(OBJEXT) wifi.$(OBJEXT) mail.$(OBJEXT) seti.$(OBJEXT) \  battery.$(OBJEXT) dvb.$(OBJEXT) filter.$(OBJEXT) exec.$(OBJEXT) \ @@ -190,11 +190,11 @@ DEP_FILES =  .deps/BeckmannEgle.P .deps/Crystalfontz.P .deps/Cwlinux.P \  .deps/mail.P .deps/mail2.P .deps/parport.P .deps/parser.P .deps/pid.P \  .deps/pixmap.P .deps/plugin.P .deps/plugin_cfg.P .deps/plugin_cpuinfo.P \  .deps/plugin_i2c_sensors.P .deps/plugin_loadavg.P .deps/plugin_math.P \ -.deps/plugin_meminfo.P .deps/plugin_netdev.P .deps/plugin_proc_stat.P \ -.deps/plugin_string.P .deps/plugin_uname.P .deps/plugin_xmms.P \ -.deps/processor.P .deps/seti.P .deps/socket.P .deps/system.P \ -.deps/timer.P .deps/udelay.P .deps/widget.P .deps/widget_bar.P \ -.deps/widget_icon.P .deps/widget_text.P .deps/wifi.P +.deps/plugin_meminfo.P .deps/plugin_netdev.P .deps/plugin_ppp.P \ +.deps/plugin_proc_stat.P .deps/plugin_string.P .deps/plugin_uname.P \ +.deps/plugin_xmms.P .deps/processor.P .deps/seti.P .deps/socket.P \ +.deps/system.P .deps/timer.P .deps/udelay.P .deps/widget.P \ +.deps/widget_bar.P .deps/widget_icon.P .deps/widget_text.P .deps/wifi.P  SOURCES = $(lcd4linux_SOURCES) $(EXTRA_lcd4linux_SOURCES)  OBJECTS = $(lcd4linux_OBJECTS) diff --git a/lcd4linux.conf.sample b/lcd4linux.conf.sample index 94797f9..92cfd11 100644 --- a/lcd4linux.conf.sample +++ b/lcd4linux.conf.sample @@ -13,6 +13,7 @@ Display CF631 {      Driver 'Crystalfontz'      Model '631'      Port '/dev/usb/tts/0' +    Port '/dev/tts/0'      Speed 115200  } @@ -1,4 +1,4 @@ -/* $Id: plugin.c,v 1.14 2004/01/25 05:30:09 reinelt Exp $ +/* $Id: plugin.c,v 1.15 2004/01/27 08:13:39 reinelt Exp $   *   * plugin handler for the Evaluator   * @@ -22,6 +22,9 @@   *   *   * $Log: plugin.c,v $ + * Revision 1.15  2004/01/27 08:13:39  reinelt + * ported PPP token to plugin_ppp + *   * Revision 1.14  2004/01/25 05:30:09  reinelt   * plugin_netdev for parsing /proc/net/dev added   * @@ -127,6 +130,7 @@ int plugin_init_proc_stat (void);  int plugin_init_cpuinfo (void);  int plugin_init_meminfo (void);  int plugin_init_netdev (void); +int plugin_init_ppp (void);  int plugin_init_i2c_sensors (void);  int plugin_init_xmms (void); @@ -142,8 +146,8 @@ int plugin_init (void)    plugin_init_cpuinfo();    plugin_init_meminfo();    plugin_init_netdev(); -  // MR: segfaults here -  // plugin_init_i2c_sensors(); +  plugin_init_ppp(); +  plugin_init_i2c_sensors();    plugin_init_xmms();    return 0; diff --git a/plugin_i2c_sensors.c b/plugin_i2c_sensors.c index 72d856e..ee49f30 100644 --- a/plugin_i2c_sensors.c +++ b/plugin_i2c_sensors.c @@ -1,4 +1,4 @@ -/* $Id: plugin_i2c_sensors.c,v 1.2 2004/01/27 05:06:10 reinelt Exp $ +/* $Id: plugin_i2c_sensors.c,v 1.3 2004/01/27 08:13:39 reinelt Exp $   *   * I2C sensors plugin   * @@ -22,6 +22,9 @@   *   *   * $Log: plugin_i2c_sensors.c,v $ + * Revision 1.3  2004/01/27 08:13:39  reinelt + * ported PPP token to plugin_ppp + *   * Revision 1.2  2004/01/27 05:06:10  reinelt   * i2c update from Xavier   * @@ -151,6 +154,7 @@ void my_i2c_sensors_path(void)    int done;    fd1 = opendir(base); +  if (fd1==NULL) return;    while((dir = readdir(fd1)))   {      // Skip '.' and '..'      if (strcmp(dir->d_name, "." )==0 || diff --git a/plugin_ppp.c b/plugin_ppp.c new file mode 100644 index 0000000..4445dbc --- /dev/null +++ b/plugin_ppp.c @@ -0,0 +1,133 @@ +/* $Id: plugin_ppp.c,v 1.1 2004/01/27 08:13:39 reinelt Exp $ + * + * plugin for ppp throughput + * + * Copyright 2003 Michael Reinelt <reinelt@eunet.at> + * Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net> + * + * This file is part of LCD4Linux. + * + * LCD4Linux is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * LCD4Linux is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * + * $Log: plugin_ppp.c,v $ + * Revision 1.1  2004/01/27 08:13:39  reinelt + * ported PPP token to plugin_ppp + * + */ + +/*  + * exported functions: + * + * int plugin_init_ppp (void) + *  adds ppp() function + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <sys/ioctl.h> + +#ifdef HAVE_NET_IF_PPP_H +#include <net/if_ppp.h> +#else +#warning if_ppp.h not found. PPP support deactivated. +#endif + +#include "debug.h" +#include "plugin.h" +#include "hash.h" + + +#ifdef HAVE_NET_IF_PPP_H + +static HASH PPP = { 0, }; + +static int get_ppp_stats (void) +{ +  int age; +  int unit; +  unsigned ibytes, obytes; +  static int fd=-2; +  struct ifpppstatsreq req; +  char key[8]; + +  // reread every 10 msec only +  age=hash_age(&PPP, NULL, NULL); +  if (age>0 && age<=10) return 0; +   +  // open socket only once +  if (fd==-2) { +    fd = socket(AF_INET, SOCK_DGRAM, 0); +    if (fd==-1) { +      error ("socket() failed: %s", strerror(errno)); +      return -1; +    } +  } +   +  for (unit=0; unit<8; unit++) { +    debug ("query unit %d", unit); +    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) { +      ibytes=req.stats.p.ppp_ibytes; +      obytes=req.stats.p.ppp_obytes; +    } else { +      debug ("ioctl() retuned 0"); +      ibytes=obytes=0; +    } +    // Fixme: hash_set_delta wants a string, we already have an integer +    snprintf (key, sizeof(key), "Rx:%d", unit); +    hash_set_delta (&PPP, key, ibytes); +    snprintf (key, sizeof(key), "Tx:%d", unit); +    hash_set_delta (&PPP, key, obytes); + +  } +  return 0; +} + + +static void my_ppp (RESULT *result, RESULT *arg1, RESULT *arg2) +{ +  double value; +   +  debug ("get stats..."); +  if (get_ppp_stats()<0) { +    SetResult(&result, R_STRING, "");  +    return; +  } +  debug ("get stats done."); +   +  value=hash_get_delta(&PPP, R2S(arg1), R2N(arg2)); +  SetResult(&result, R_NUMBER, &value);  +} + +#endif + + +int plugin_init_ppp (void) +{ +#ifdef HAVE_NET_IF_PPP_H +  AddFunction ("ppp", 3, my_ppp); +#endif +  return 0; +} + diff --git a/plugin_proc_stat.c b/plugin_proc_stat.c index 37d7c85..1cc6be4 100644 --- a/plugin_proc_stat.c +++ b/plugin_proc_stat.c @@ -1,4 +1,4 @@ -/* $Id: plugin_proc_stat.c,v 1.11 2004/01/25 05:30:09 reinelt Exp $ +/* $Id: plugin_proc_stat.c,v 1.12 2004/01/27 08:13:39 reinelt Exp $   *   * plugin for /proc/stat parsing   * @@ -23,6 +23,9 @@   *   *   * $Log: plugin_proc_stat.c,v $ + * Revision 1.12  2004/01/27 08:13:39  reinelt + * ported PPP token to plugin_ppp + *   * Revision 1.11  2004/01/25 05:30:09  reinelt   * plugin_netdev for parsing /proc/net/dev added   * @@ -185,12 +188,12 @@ static void my_proc_stat (RESULT *result, int argc, RESULT *argv[])  {    char  *string;    double number; - +      if (parse_proc_stat()<0) {      SetResult(&result, R_STRING, "");       return;    } - +      switch (argc) {    case 1:      string=hash_get(&Stat, R2S(argv[0])); | 
