diff -u -urN xosview-1.7.3/Xdefaults xosview-1.7.3-v1.4/Xdefaults --- xosview-1.7.3/Xdefaults Thu Jun 7 22:31:51 2001 +++ xosview-1.7.3-v1.4/Xdefaults Thu Feb 21 15:39:11 2002 @@ -159,6 +159,16 @@ xosview*batteryPriority: 50 xosview*batteryUsedFormat: percent +! Wireless Meter Resources + +xosview*wireless: True +xosview*PoorQualityColor: red +xosview*FairQualityColor: yellow +xosview*GoodQualityColor: green +xosview*wirelessUsedColor: blue +xosview*wirelessPriority: 1 +xosview*wirelessUsedFormat: autoscale + ! Disk Meter Resources xosview*disk: False diff -u -urN xosview-1.7.3/Xrmcommandline.h xosview-1.7.3-v1.4/Xrmcommandline.h --- xosview-1.7.3/Xrmcommandline.h Wed Nov 17 06:53:02 1999 +++ xosview-1.7.3-v1.4/Xrmcommandline.h Thu Feb 21 15:39:11 2002 @@ -44,6 +44,9 @@ // Batterymeter resources { "-battery", "*battery", XrmoptionNoArg, "False" }, { "+battery", "*battery", XrmoptionNoArg, "True" }, +// Wirelessmeter resources +{ "-wireless", "*wireless", XrmoptionNoArg, "False" }, +{ "+wireless", "*wireless", XrmoptionNoArg, "True" }, // Networkmeter resources { "-net", "*net", XrmoptionNoArg, "False" }, diff -u -urN xosview-1.7.3/config/Makefile.linux.in xosview-1.7.3-v1.4/config/Makefile.linux.in --- xosview-1.7.3/config/Makefile.linux.in Thu Jun 7 22:32:04 2001 +++ xosview-1.7.3-v1.4/config/Makefile.linux.in Thu Feb 21 15:39:11 2002 @@ -18,6 +18,7 @@ intmeter.o \ loadmeter.o \ btrymeter.o \ +wirelessmeter.o \ diskmeter.o \ raidmeter.o \ MeterMaker.o diff -u -urN xosview-1.7.3/config/configure.in xosview-1.7.3-v1.4/config/configure.in --- xosview-1.7.3/config/configure.in Wed Nov 17 08:08:20 1999 +++ xosview-1.7.3-v1.4/config/configure.in Thu Feb 21 15:39:11 2002 @@ -213,6 +213,14 @@ else AC_MSG_WARN([no /dev/apm -- disabling the battery meter.]) fi + # Only enable the wireless meter if it appears we support it. + if test -e /proc/net/wireless ; then + WIRELESSMETER=wirelessmeter.o + AC_DEFINE(HAVE_WIRELESS_METER) + AC_MSG_WARN([/proc/net/wireless detected -- enabling the wireless meter!]) + else + AC_MSG_WARN([no /proc/net/wireless -- disabling the wireless meter.]) + fi ;; esac diff -u -urN xosview-1.7.3/configure xosview-1.7.3-v1.4/configure --- xosview-1.7.3/configure Wed Nov 17 08:16:57 1999 +++ xosview-1.7.3-v1.4/configure Thu Feb 21 15:39:11 2002 @@ -1846,6 +1846,19 @@ else echo "configure: warning: no /dev/apm -- disabling the battery meter." 1>&2 fi + + + # Only enable the wireless meter if it appears we support it. + if test -e /proc/net/wireless ; then + WIRELESSMETER=wirelessmeter.o + cat >> confdefs.h <<\EOF +#define HAVE_WIRELESS_METER 1 +EOF + + echo "configure: warning: /proc/net/wireless detected -- enabling the wireless meter!" 1>&2 + else + echo "configure: warning: no /dev/net/wireless -- disabling the wireless meter." 1>&2 + fi ;; esac @@ -2095,6 +2108,7 @@ s%@AUTODEPEND@%$AUTODEPEND%g s%@LINUX_SMP@%$LINUX_SMP%g s%@BTRYMETER@%$BTRYMETER%g +s%@WIRELESSMETER@%$WIRELESSMETER%g s%@EXTRALIBS@%$EXTRALIBS%g s%@ELF_LINK_FLAGS@%$ELF_LINK_FLAGS%g s%@INSTALL_ARGS@%$INSTALL_ARGS%g diff -u -urN xosview-1.7.3/linux/MeterMaker.cc xosview-1.7.3-v1.4/linux/MeterMaker.cc --- xosview-1.7.3/linux/MeterMaker.cc Thu Jun 7 22:32:07 2001 +++ xosview-1.7.3-v1.4/linux/MeterMaker.cc Thu Feb 21 15:39:11 2002 @@ -20,6 +20,8 @@ #endif #include "loadmeter.h" #include "btrymeter.h" +#include "wirelessmeter.h" +#include #include "diskmeter.h" #include "raidmeter.h" @@ -78,6 +80,18 @@ // check for the battery meter if (_xos->isResourceTrue("battery")) push(new BtryMeter(_xos)); + + // check for the wireless meter +static const char WLFILENAME[] = "/proc/net/wireless"; +ifstream stats( WLFILENAME ); +if ( stats ) { + if (_xos->isResourceTrue("wireless")){ + int wirelessCount = WirelessMeter::countdevices(); + int start = (wirelessCount == 0) ? 0 : 1; + if (wirelessCount != 0) { + for (int i = start ; i <= wirelessCount ; i++) + push(new WirelessMeter(_xos, i, WirelessMeter::wirelessStr(i))); + } } } // check for the RAID meter if (_xos->isResourceTrue("RAID")){ diff -u -urN xosview-1.7.3/linux/wirelessmeter.cc xosview-1.7.3-v1.4/linux/wirelessmeter.cc --- xosview-1.7.3/linux/wirelessmeter.cc Thu Jan 1 01:00:00 1970 +++ xosview-1.7.3-v1.4/linux/wirelessmeter.cc Thu Jul 11 14:48:42 2002 @@ -0,0 +1,150 @@ +// +// Copyright (c) 2001 by Tim Ehlers ( tehlers@gwdg.de ) +// +// This file may be distributed under terms of the GPL +// +// +// $Id: wirelessmeter.cc,v 1.3 2001/06/13 +// +#include "wirelessmeter.h" +#include "xosview.h" +#include +#include +#include +#include +#include + +static const char WLFILENAME[] = "/proc/net/wireless"; + +WirelessMeter::WirelessMeter( XOSView *parent, int ID, const char *wlID) + : FieldMeterGraph( parent, 2, wlID, "/Link-Quality", 1, 1, 0 ), _number(ID) { + lastqualitystate = -1; + strcpy(devname, "0"); +} + +WirelessMeter::~WirelessMeter( void ){ +} + +void WirelessMeter::checkResources( void ){ + FieldMeterGraph::checkResources(); + + poorqualcol_ = parent_->allocColor(parent_->getResource( "PoorQualityColor" )); + fairqualcol_ = parent_->allocColor(parent_->getResource( "FairQualityColor" )); + goodqualcol_ = parent_->allocColor(parent_->getResource( "GoodQualityColor" )); + + setfieldcolor( 1, parent_->getResource( "wirelessUsedColor" ) ); + + priority_ = atoi (parent_->getResource( "wirelessPriority" ) ); + SetUsedFormat(parent_->getResource( "wirelessUsedFormat" ) ); +} + +void WirelessMeter::checkevent( void ){ + getpwrinfo(); + + drawfields(); +} + + +void WirelessMeter::getpwrinfo( void ){ + ifstream loadinfo( WLFILENAME ); + + if ( !loadinfo ){ + cerr <<"Can not open file : " <done(1); + return; + } + + char buff[256]; + + for (int i = 1 ; i < 2 ; i++) + loadinfo.getline(buff, 256); + + int linkq = 0; + +if (strncmp(devname, "0", 1)) { + + while (!loadinfo.eof()){ + loadinfo.getline(buff, 256); + if (!loadinfo.eof()){ + loadinfo >> buff; + if (!strncmp(buff, devname, strlen(devname))) { + loadinfo >> buff >> linkq; } + +} } } + +if (!strncmp(devname, "0", 1)) { + + for (int i = 0 ; i < _number; ) { + loadinfo.getline(buff, 256); + loadinfo >> devname >> buff >> linkq; + if (!loadinfo.eof()){ + if ( linkq != 0 ) i++; } + if ( loadinfo.eof() ) break; } + +} + + fields_[0] = linkq; + + if ( fields_[0] < 7 ) qualitystate = 0; + if ( fields_[0] >= 7 ) qualitystate = 1; + if ( fields_[0] >= 15 ) qualitystate = 2; + + if ( qualitystate != lastqualitystate ){ + if ( qualitystate == 0 ) setfieldcolor( 0, poorqualcol_ ); + if ( qualitystate == 1 ) setfieldcolor( 0, fairqualcol_ ); + if ( qualitystate == 2 ) setfieldcolor( 0, goodqualcol_ ); + if ( fields_[0] >= 200 ) { fields_[0] = 0; qualitystate = 0; } + lastqualitystate = qualitystate; + } + + total_ = 90; + + if ( fields_[0] < 60) + total_ = 60; + + if ( fields_[0] < 30) + total_ = 30; + + fields_[1] = fields_[0]; + + setUsed (fields_[0], total_); +} + +int WirelessMeter::countdevices(void){ + ifstream stats( WLFILENAME ); + + if ( !stats ){ + cerr <<"Can not open file : " <> buf >> buf >> linkq; +if (!stats.eof()){ + if ( linkq != 0 ) + wirelessCount++; + }} + + return wirelessCount; +} + +const char *WirelessMeter::wirelessStr(int num){ + static char buffer[32]; + ostrstream str(buffer, 32); + + str << "WL"; + if (num != 1) + str << (num); + str << ends; + + return buffer; +} + diff -u -urN xosview-1.7.3/linux/wirelessmeter.h xosview-1.7.3-v1.4/linux/wirelessmeter.h --- xosview-1.7.3/linux/wirelessmeter.h Thu Jan 1 01:00:00 1970 +++ xosview-1.7.3-v1.4/linux/wirelessmeter.h Thu Feb 21 15:39:11 2002 @@ -0,0 +1,36 @@ +// +// Copyright (c) 1997 by Mike Romberg ( romberg@fsl.noaa.gov ) +// +// This file may be distributed under terms of the GPL +// +// +// $Id: btrymeter.h,v 1.1 1997/02/26 23:44:50 mromberg Exp $ +// +#ifndef _WIRELESSMETER_H_ +#define _WIRELESSMETER_H_ + + +#include "fieldmetergraph.h" + + +class WirelessMeter : public FieldMeterGraph { +public: + WirelessMeter( XOSView *parent, int ID = 1, const char *wlID = "WL"); + ~WirelessMeter( void ); + + const char *name( void ) const { return "WirelessMeter"; } + void checkevent( void ); + + void checkResources( void ); + static int countdevices(void); + static const char *wirelessStr(int num); + char devname[256]; +protected: + + void getpwrinfo( void ); + unsigned long poorqualcol_, fairqualcol_, goodqualcol_; +private: + int alarmThreshold, qualitystate, lastqualitystate, _number; +}; + +#endif diff -u -urN xosview-1.7.3/xosview.1 xosview-1.7.3-v1.4/xosview.1 --- xosview-1.7.3/xosview.1 Thu Jun 7 22:31:57 2001 +++ xosview-1.7.3-v1.4/xosview.1 Thu Feb 21 15:39:11 2002 @@ -198,6 +198,13 @@ OpenBSD: < Not Supported > HPUX : < Not Supported > +\fBWireless Link\fP + Shows the current Linkquality + of wireless connections. + Linux : linkquality | of 30,60 or 90 + *BSD : < Not Supported > + HPUX : < Not Supported > + .SH OPTIONS Most of these command line options are just a convenient way to set one or @@ -281,6 +288,9 @@ .\" Handle -/+battery .pm battery +.\" Handle -/+wireless +.pm wireless + .\" Handle -/+net .pm net @@ -686,6 +696,42 @@ .pp battery .uf battery +\fBWireless Meter Resources\fP + + +xosview*wireless: (True or False) +.RS +If True then xosview will display the link-Quality of wireless connections. +Note that the graph will *never* schow up, if you don't have any wireless +Devices, or no wireless extensions in Kernel (/proc/net/wireless). +Default is true. +.RE + +xosview*PoorQualityColor: \fIcolor\fP +.RS +This is the color for the Link-Graph with Quality between 0 and 6. +.RE + +xosview*FairQualityColor: \fIcolor\fP +.RS +This is the color for the Link-Graph with Quality between 7 and 14. +.RE + +xosview*GoodQualityColor: \fIcolor\fP +.RS +This is the color for the Link-Graph with Quality higher than 14. +.RE + +xosview*wirelessUsedColor: \fIcolor\fP +.RS +This is the background color. +.RE + +.\" Do the priority resource +.pp wireless +.uf wireless + + \fBDisk Meter Resources\fP .\" Do the disk: True resource. @@ -853,6 +899,11 @@ .RS Linux raid meter, bitfieldmeter. Many cosmetic fixes. +.RE + +Tim Ehlers (tehlers@gwdg.de) +.RS +Wireless Link-Meter for Linux. .RE And many others who have sent in small fixes and improvements.