Date: Tue, 15 Jul 2003 20:53:00 +0200 (CEST) From: Hendrik Scholz <hendrik@scholz.net> To: FreeBSD-gnats-submit@FreeBSD.org Cc: bms@spc.org Subject: ports/54511: patch: net/wmwave: more portable data gathering Message-ID: <200307151853.h6FIr0kt052243@goanna.lan.raisdorf.net> Resent-Message-ID: <200307151910.h6FJAF3U092631@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 54511 >Category: ports >Synopsis: patch: net/wmwave: more portable data gathering >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Jul 15 12:10:14 PDT 2003 >Closed-Date: >Last-Modified: >Originator: Hendrik Scholz >Release: FreeBSD 5.1-RELEASE i386 >Organization: >Environment: System: FreeBSD goanna.lan.raisdorf.net 5.1-RELEASE FreeBSD 5.1-RELEASE #4: Sat Jun 7 12:12:29 CEST 2003 hscholz@goanna.lan.raisdorf.net:/usr/src/sys/i386/compile/GOANNA i386 >Description: wmwave works on Prism cards but not on Lucent ones (minipci and PCMCIA tested) since wireq.wi_val is empty. I've patched it to use a more portable way for data acquisition known from gkrellm and other tools. I've tested this with my Lucent mini PCI card and a PCMCIA Prism card. Please DO TEST this before commiting. The attached file is a diff between the file after 'make patch' has been executed (and already patches by the port!). A complete diff against the distribution source can be found here: http://www.raisdorf.net/files/FreeBSD/wmwave-diff.patch diff against already patch file: http://www.raisdorf.net/files/FreeBSD/wmwave-patched-diff.patch Additionally I renamed the three values to more common names. >How-To-Repeat: Try to use wmwave with an Orinoco based card. >Fix: --- wmwave-patched-diff.patch begins here --- --- wmwave.c Tue Jul 15 20:39:20 2003 +++ /home/hscholz/note/wmwave.c Mon Jul 7 09:43:55 2003 @@ -1,11 +1,13 @@ /* * $Id$ * - * wmtop.c -- WindowMaker process view dock app + * wmwave.c -- WindowMaker IEEE802.11 status dock app + * based on wmtop.c from Dan Piponi * * This software is licensed through the GNU General Public License. * * Authors (in reverse chronological order): + * Hendrik Scholz <hscholz@raisdorf.net> * Bruce M. Simpson <bms@spc.org> * Carsten Schuermann <carsten@schuermann.org> * Dan Piponi <dan@tanelorn.demon.co.uk> @@ -66,11 +68,11 @@ int wmwave_mask_height = 64; #define WMWAVE_DEFAULT_INTERFACE "wi0" -#define WMWAVE_VERSION "0.4_FreeBSD" +#define WMWAVE_VERSION "0.4_FreeBSD-2" int update_rate = 100000; char *ProgName; -char *iface = WMWAVE_DEFAULT_INTERFACE; +char *iface = WMWAVE_DEFAULT_INTERFACE; time_t curtime; time_t prevtime; int mode = 0; /* default: no card detected */ @@ -165,32 +167,27 @@ MODE_HAVE_CARD = 1 }; - s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - if (s == -1) - errx(errno, "socket"); - bzero(&ifr, sizeof(ifr)); - strncpy(ifr.ifr_name, iface, strlen(iface)); - bzero(&wireq, sizeof(wireq)); - wireq.wi_type = WI_RID_READ_CACHE; - wireq.wi_len = WI_MAX_DATALEN; - ifr.ifr_data = (void *) &wireq; + s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + if (s == -1) + errx(errno, "socket"); + bzero(&ifr, sizeof(ifr)); + strncpy(ifr.ifr_name, iface, strlen(iface)); + bzero(&wireq, sizeof(wireq)); + wireq.wi_type = WI_RID_COMMS_QUALITY; + wireq.wi_len = WI_MAX_DATALEN; + ifr.ifr_data = (void *) &wireq; - err = ioctl(s, SIOCGWAVELAN, (caddr_t)&ifr); - if (err < 0) { + err = ioctl(s, SIOCGWAVELAN, (caddr_t)&ifr); + if (err < 0) { mode = MODE_NO_CARD; goto draw; - } - wisigsnp = (int *) &wireq.wi_val; - if (*wisigsnp < 1) { - mode = MODE_NO_CARD; - goto draw; - } + } mode = MODE_HAVE_CARD; - wisigsp = (struct wi_sigcache *) (wisigsnp+1); - link = wisigsp->quality * 1.0; - level = wisigsp->signal * -1.0; - noise = wisigsp->noise * -1.0; + link = wireq.wi_val[0]; + level = wireq.wi_val[1]; + noise = wireq.wi_val[2]; + draw: /* * Print channel information, and signal ratio @@ -205,9 +202,9 @@ } else { DrawGreenDot(); }; - BlitString("Link ", 4, 18); + BlitString("Quality ", 4, 18); DrawBar(_fmin((int)(link * 1.8), 100.0), 4, 27); - BlitString("Level ", 4, 32); + BlitString("Signal ", 4, 32); DrawGreenBar(_fmin((int)(level * 0.3), 100.0), 4, 41); BlitString("Noise ", 4, 46); DrawGreenBar(_fmin((int)(noise * 0.3), 100.0), 4, 55); --- wmwave-patched-diff.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200307151853.h6FIr0kt052243>