diff -u -urN xosview-1.8.1/Xdefaults xosview-1.8.1.wireless/Xdefaults --- xosview-1.8.1/Xdefaults 2003-10-20 03:29:40.000000000 +0200 +++ xosview-1.8.1.wireless/Xdefaults 2004-12-29 17:46:02.000000000 +0100 @@ -188,6 +188,17 @@ 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 +xosview*wirelessDecay: True + ! Disk Meter Resources xosview*disk: True diff -u -urN xosview-1.8.1/Xdefaults.in xosview-1.8.1.wireless/Xdefaults.in --- xosview-1.8.1/Xdefaults.in 2004-12-29 17:41:25.000000000 +0100 +++ xosview-1.8.1.wireless/Xdefaults.in 2004-12-29 17:46:02.000000000 +0100 @@ -189,6 +189,17 @@ *batteryPriority: 50 *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 +xosview*wirelessDecay: True + ! Disk Meter Resources *disk: False diff -u -urN xosview-1.8.1/Xrmcommandline.h xosview-1.8.1.wireless/Xrmcommandline.h --- xosview-1.8.1/Xrmcommandline.h 2002-03-25 00:13:54.000000000 +0100 +++ xosview-1.8.1.wireless/Xrmcommandline.h 2004-12-29 17:46:02.000000000 +0100 @@ -48,6 +48,9 @@ // Batterymeter resources { "-battery", "*battery", XrmoptionNoArg, "False" }, { "+battery", "*battery", XrmoptionNoArg, "True" }, +// Wirelessmeter resources +{ "-wireless", "*wireless", XrmoptionNoArg, "False" }, +{ "+wireless", "*wireless", XrmoptionNoArg, "True" }, // GFX resources { "-gfx", "*gfx", XrmoptionNoArg, "False" }, { "+gfx", "*gfx", XrmoptionNoArg, "True" }, diff -u -urN xosview-1.8.1/config/Makefile.linux.in xosview-1.8.1.wireless/config/Makefile.linux.in --- xosview-1.8.1/config/Makefile.linux.in 2004-12-29 17:41:19.000000000 +0100 +++ xosview-1.8.1.wireless/config/Makefile.linux.in 2004-12-29 17:46:02.000000000 +0100 @@ -18,6 +18,7 @@ intmeter.o \ loadmeter.o \ btrymeter.o \ +wirelessmeter.o \ diskmeter.o \ raidmeter.o \ lmstemp.o \ diff -u -urN xosview-1.8.1/config/configure.in xosview-1.8.1.wireless/config/configure.in --- xosview-1.8.1/config/configure.in 2003-10-12 19:46:06.000000000 +0200 +++ xosview-1.8.1.wireless/config/configure.in 2004-12-29 17:46:02.000000000 +0100 @@ -271,6 +271,14 @@ BTRYMETER=btrymeter.o AC_DEFINE(HAVE_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.8.1/configure xosview-1.8.1.wireless/configure --- xosview-1.8.1/configure 2003-10-20 03:29:00.000000000 +0200 +++ xosview-1.8.1.wireless/configure 2004-12-29 17:46:56.000000000 +0100 @@ -5085,6 +5085,19 @@ _ACEOF 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 @@ -5873,6 +5886,7 @@ s,@EGREP@,$EGREP,;t t s,@LINUX_SMP@,$LINUX_SMP,;t t s,@BTRYMETER@,$BTRYMETER,;t t +s,@WIRELESSMETER@,$WIRELESSMETER,;t t s,@EXTRA_CXXFLAGS@,$EXTRA_CXXFLAGS,;t t s,@EXTRALIBS@,$EXTRALIBS,;t t s,@ELF_LINK_FLAGS@,$ELF_LINK_FLAGS,;t t diff -u -urN xosview-1.8.1/linux/MeterMaker.cc xosview-1.8.1.wireless/linux/MeterMaker.cc --- xosview-1.8.1/linux/MeterMaker.cc 2004-12-29 17:41:25.000000000 +0100 +++ xosview-1.8.1.wireless/linux/MeterMaker.cc 2004-12-29 17:53:46.000000000 +0100 @@ -18,6 +18,9 @@ #include "serialmeter.h" #include "loadmeter.h" #include "btrymeter.h" +#include "wirelessmeter.h" +#include +using namespace std; #include "diskmeter.h" #include "raidmeter.h" #include "lmstemp.h" @@ -80,6 +83,18 @@ 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")){ int RAIDCount = atoi(_xos->getResource("RAIDdevicecount")); diff -u -urN xosview-1.8.1/linux/wirelessmeter.cc xosview-1.8.1.wireless/linux/wirelessmeter.cc --- xosview-1.8.1/linux/wirelessmeter.cc 1970-01-01 01:00:00.000000000 +0100 +++ xosview-1.8.1.wireless/linux/wirelessmeter.cc 2005-01-12 17:04:48.000000000 +0100 @@ -0,0 +1,172 @@ +// +// 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 +#include + +using namespace std; + +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" ) ); + dodecay_ = parent_->isResourceTrue( "wirelessDecay" ); + 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_ ); + lastqualitystate = qualitystate; + } + + if ( fields_[0] >= 250 ) { fields_[0] = 0; qualitystate = 0; } + + total_ = 240; + + if ( fields_[0] < 210) + total_ = 210; + + if ( fields_[0] < 180) + total_ = 180; + + if ( fields_[0] < 150) + total_ = 150; + + if ( fields_[0] < 120) + total_ = 120; + + if ( fields_[0] < 90) + 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]; + std::ostringstream str; + + str << "WL"; + if (num != 1) + str << (num); + str << std::ends; + + strncpy(buffer, str.str().c_str(), 32); + buffer[31] = '\0'; + + return buffer; +} diff -u -urN xosview-1.8.1/linux/wirelessmeter.h xosview-1.8.1.wireless/linux/wirelessmeter.h --- xosview-1.8.1/linux/wirelessmeter.h 1970-01-01 01:00:00.000000000 +0100 +++ xosview-1.8.1.wireless/linux/wirelessmeter.h 2004-12-29 16:00:01.000000000 +0100 @@ -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.8.1/xosview.1 xosview-1.8.1.wireless/xosview.1 --- xosview-1.8.1/xosview.1 2004-12-29 17:41:25.000000000 +0100 +++ xosview-1.8.1.wireless/xosview.1 2004-12-29 17:46:02.000000000 +0100 @@ -194,6 +194,13 @@ array(s). Linux : Disk0 Disk1 Disk2 .. DiskN | Rebuild Progress +\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 @@ -280,6 +287,9 @@ .\" Handle -/+gfx .pm gfx +.\" Handle -/+wireless +.pm wireless + .\" Handle -/+net .pm net @@ -806,6 +816,43 @@ .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 +.dc wireless +.uf wireless + + \fBDisk Meter Resources\fP .\" Do the disk: True resource. @@ -1014,6 +1061,11 @@ Many cosmetic fixes. .RE +Tim Ehlers (tehlers@gwdg.de) +.RS +Wireless Link-Meter for Linux. +.RE + Leopold Toetsch .RS Linux lms temp meter.