fi
dnl
+dnl Wireless extensions
+dnl
+
+AC_ARG_ENABLE([wlan],
+ AC_HELP_STRING([--enable-wlan], [enable if you want wireless support @<:@default=no@:>@]),
+ [want_wlan="$enableval"], [want_wlan=no])
+#
+AM_CONDITIONAL(BUILD_RSS, test x$want_wlan = xyes)
+if test x$want_wlan = xyes; then
+ LIBS="$LIBS -liw"
+ AC_DEFINE(HAVE_IWLIB, 1, [Define if you want wireless support])
+fi
+
+dnl
dnl IMLIB2
dnl
hddtemp: $want_hddtemp
portmon: $want_portmon
RSS: $want_rss
+ wireless: $want_wlan
EOF
OBJ_pb_battery,
OBJ_voltage_mv,
OBJ_voltage_v,
+ OBJ_wireless_essid,
+ OBJ_wireless_mode,
+ OBJ_wireless_bitrate,
+ OBJ_wireless_link_qual,
+ OBJ_wireless_link_qual_max,
+ OBJ_wireless_link_bar,
+ OBJ_wireless_ap,
#endif /* __linux__ */
OBJ_if_empty,
OBJ_if_existing,
obj->data.cpu_index=atoi(&arg[0]);
}
obj->a = 1;
+
+#ifdef HAVE_IWLIB
+ END OBJ(wireless_essid, INFO_NET)
+ if(arg)
+ obj->data.net = get_net_stat(arg);
+ else
+ CRIT_ERR("wireless_essid: needs an argument");
+ END OBJ(wireless_mode, INFO_NET)
+ if(arg)
+ obj->data.net = get_net_stat(arg);
+ else
+ CRIT_ERR("wireless_mode: needs an argument");
+ END OBJ(wireless_ap, INFO_NET)
+ if(arg)
+ obj->data.net = get_net_stat(arg);
+ else
+ CRIT_ERR("wireless_ap: needs an argument");
+ END OBJ(wireless_bitrate, INFO_NET)
+ if(arg)
+ obj->data.net = get_net_stat(arg);
+ else
+ CRIT_ERR("wireless_bitrate: needs an argument");
+ END OBJ(wireless_link_qual, INFO_NET)
+ if(arg)
+ obj->data.net = get_net_stat(arg);
+ else
+ CRIT_ERR("wireless_link_qual: needs an argument");
+ END OBJ(wireless_link_qual_max, INFO_NET)
+ if(arg)
+ obj->data.net = get_net_stat(arg);
+ else
+ CRIT_ERR("wireless_link_qual_max: needs an argument");
+ END OBJ(wireless_link_bar, INFO_NET)
+ if(arg) {
+ arg = scan_bar(arg, &obj->a, &obj->b);
+ obj->data.net = get_net_stat(arg);
+ } else
+ CRIT_ERR("wireless_link_bar: needs an argument");
+#endif /* HAVE_IWLIB */
+
#endif /* __linux__ */
END OBJ(freq_dyn, 0);
END OBJ(freq_dyn_g, 0);
obj->a = get_voltage(p, p_max_size, "%'.3f", 1000, obj->data.cpu_index);
}
}
+#ifdef HAVE_IWLIB
+ OBJ(wireless_essid) {
+ snprintf(p, p_max_size, "%s", obj->data.net->essid);
+ }
+ OBJ(wireless_mode) {
+ snprintf(p, p_max_size, "%s", obj->data.net->mode);
+ }
+ OBJ(wireless_bitrate) {
+ snprintf(p, p_max_size, "%s", obj->data.net->bitrate);
+ }
+ OBJ(wireless_ap) {
+ snprintf(p, p_max_size, "%s", obj->data.net->ap);
+ }
+ OBJ(wireless_link_qual) {
+ snprintf(p, p_max_size, "%d", obj->data.net->link_qual);
+ }
+ OBJ(wireless_link_qual_max) {
+ snprintf(p, p_max_size, "%d", obj->data.net->link_qual_max);
+ }
+ OBJ(wireless_link_bar) {
+ new_bar(p, obj->a, obj->b, ((double)obj->data.net->link_qual/obj->data.net->link_qual_max)*255.0);
+ }
+#endif /* HAVE_IWLIB */
+
#endif /* __linux__ */
OBJ(freq_dyn) {
struct sockaddr addr;
int linkstatus;
double net_rec[15], net_trans[15];
+ // wireless extensions
+ char essid[32];
+ char bitrate[16];
+ char mode[16];
+ char ap[18];
+ int link_qual;
+ int link_qual_max;
};
unsigned int diskio_value;
#include <net/if.h>
#include <math.h>
+#ifdef HAVE_IWLIB
+#include <iwlib.h>
+#endif
+
#define SHORTSTAT_TEMPL "%*s %llu %llu %llu"
#define LONGSTAT_TEMPL "%*s %llu %llu %llu "
char buf[256];
double delta;
+#ifdef HAVE_IWLIB
+ // wireless info variables
+ int skfd, has_bitrate = 0, link_qual = 0, link_qual_max = 0;
+ struct wireless_info *winfo;
+ struct iwreq wrq;
+#endif
+
/* get delta */
delta = current_update_time - last_update_time;
if (delta <= 0.0001)
}
}
+#ifdef HAVE_IWLIB
+ /* update wireless info */
+ winfo = malloc(sizeof(struct wireless_info));
+ memset(winfo, 0, sizeof(struct wireless_info));
+
+ skfd = iw_sockets_open();
+ if(iw_get_basic_config(skfd, s, &(winfo->b)) > -1) {
+
+ // set present winfo variables
+ if(iw_get_stats(skfd, s, &(winfo->stats), &winfo->range, winfo->has_range) >= 0)
+ winfo->has_stats = 1;
+ if(iw_get_range_info(skfd, s, &(winfo->range)) >= 0)
+ winfo->has_range = 1;
+ if(iw_get_ext(skfd, s, SIOCGIWAP, &wrq) >= 0) {
+ winfo->has_ap_addr = 1;
+ memcpy(&(winfo->ap_addr), &(wrq.u.ap_addr), sizeof (sockaddr));
+ }
+
+ // get bitrate
+ if(iw_get_ext(skfd, s, SIOCGIWRATE, &wrq) >= 0) {
+ memcpy(&(winfo->bitrate), &(wrq.u.bitrate), sizeof(iwparam));
+ iw_print_bitrate(ns->bitrate, 16, winfo->bitrate.value);
+ has_bitrate = 1;
+ }
+
+ // get link quality
+ if(winfo->has_range && winfo->has_stats && ((winfo->stats.qual.level != 0) || (winfo->stats.qual.updated & IW_QUAL_DBM))) {
+ if(!(winfo->stats.qual.updated & IW_QUAL_QUAL_INVALID)) {
+ ns->link_qual = winfo->stats.qual.qual;
+ ns->link_qual_max = winfo->range.max_qual.qual;
+ }
+ }
+
+ // get ap mac
+ if(winfo->has_ap_addr) {
+ iw_sawap_ntop(&winfo->ap_addr, ns->ap);
+ }
+
+ // get essid
+ if(winfo->b.has_essid) {
+ if(winfo->b.essid_on)
+ snprintf(ns->essid, 32, "%s", winfo->b.essid);
+ else
+ snprintf(ns->essid, 32, "off/any");
+ }
+
+ snprintf(ns->mode, 16, "%s", iw_operation_mode[winfo->b.mode]);
+ }
+ iw_sockets_close(skfd);
+ free(winfo);
+#endif
}
fclose(net_dev_fp);
sscanf(p, "%*d %d. %d. %d", &l, &m, &n);
ns->linkstatus = (int) (log(MIN(MAX(l,1),92)) / log(92) * 100);
-
}
/*** end wireless patch ***/
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#ifdef RSS
+
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <string.h>
free(result);
return NULL;
}
+
+#endif
* new rss.c written by hifi (Toni Spets)
*/
+#ifdef RSS
+
#include <stdio.h>
#include <string.h>
#include <time.h>
return curdata;
}
+
+#endif