示例#1
0
static void print_assoclist(const struct iwinfo_ops *iw, const char *ifname)
{
	int i, len;
	char buf[IWINFO_BUFSIZE];
	struct iwinfo_assoclist_entry *e;

	if (iw->assoclist(ifname, buf, &len))
	{
		printf("No information available\n");
		return;
	}
	else if (len <= 0)
	{
		printf("No station connected\n");
		return;
	}

	for (i = 0; i < len; i += sizeof(struct iwinfo_assoclist_entry))
	{
		e = (struct iwinfo_assoclist_entry *) &buf[i];

		printf("%s  %s / %s (SNR %d)\n",
			format_bssid(e->mac),
			format_signal(e->signal),
			format_noise(e->noise),
			(e->signal - e->noise));
	}
}
示例#2
0
static char * format_monitor(struct iwinfo_assoclist_entry *e,bool *isAlive) {
    static char buf[256];
    
    *isAlive = false;
    memset (buf,0x00,256);
    if (NULL == e) {
        sprintf(buf,"Station|Rssi/Nf/Snr|na|MCS r/t|Mbps r/t |load| online |R rate|T rate");
    } else {
//        unsigned char   qlen = 0x000000ff & e->drop_qlen;
//        unsigned int    drop = 0x00fffff & (e->drop_qlen >> 24);
        unsigned int    drop = 0;
        unsigned char   qlen = get_queue_length();
        uint32_t delta_tx_packets = e->tx_packets - last_tx_packets;
        uint32_t delta_tx_failed = (drop + e->tx_failed) - last_tx_failed;
        int     tx_KBps = 0;
        int     rx_KBps = 0;
        struct timeval current_time;
        
        gettimeofday (&current_time,NULL);
        time_t diff_in_ms = (current_time.tv_sec - last_count_time.tv_sec) * 1000 +
                            (current_time.tv_usec - last_count_time.tv_usec) / 1000;
        last_count_time.tv_sec = current_time.tv_sec;
        last_count_time.tv_usec = current_time.tv_usec;
        
        last_tx_packets = e->tx_packets;
        last_tx_failed = drop + e->tx_failed;
        if (diff_in_ms > 0) {
            if (last_rx_bytes < e->rx_bytes) rx_KBps = (e->rx_bytes - last_rx_bytes) / diff_in_ms;
            if (last_tx_bytes < e->tx_bytes) tx_KBps = (e->tx_bytes - last_tx_bytes) / diff_in_ms;
            last_rx_bytes = e->rx_bytes;
            last_tx_bytes = e->tx_bytes;
        }
        *isAlive = (e->inactive <= MAX_INACTIVE_MS) ? true : false;
        sprintf(buf,"%s|% 11s|%s|% 7s|% 9s|%3d%%|%8s|% 6s|% 6s",
                format_bssid(e->mac),
                format_snr(e->signal,e->noise),
                format_timer(e->inactive),
                format_mcs(&e->rx_rate,&e->tx_rate),
                format_bps(&e->rx_rate,&e->tx_rate),
                100 * qlen / MAX_QUEUE_LEN,
                format_online_time(e->t_connect),
                format_throughput_rx(8 * rx_KBps),
                format_throughput_tx(8 * tx_KBps)
                );
    }
    return buf;
}
示例#3
0
文件: iwinfo_cli.c 项目: 7LK/McWRT
static void print_assoclist(const struct iwinfo_ops *iw, const char *ifname)
{
	int i, len;
	char buf[IWINFO_BUFSIZE];
	struct iwinfo_assoclist_entry *e;

	if (iw->assoclist(ifname, buf, &len))
	{
		printf("No information available\n");
		return;
	}
	else if (len <= 0)
	{
		printf("No station connected\n");
		return;
	}

	for (i = 0; i < len; i += sizeof(struct iwinfo_assoclist_entry))
	{
		e = (struct iwinfo_assoclist_entry *) &buf[i];

		printf("%s  %s / %s (SNR %d)  %d ms ago\n",
			format_bssid(e->mac),
			format_signal(e->signal),
			format_noise(e->noise),
			(e->signal - e->noise),
			e->inactive);

		printf("	RX: %-38s  %8d Pkts.\n",
			format_assocrate(&e->rx_rate),
			e->rx_packets
		);

		printf("	TX: %-38s  %8d Pkts.\n\n",
			format_assocrate(&e->tx_rate),
			e->tx_packets
		);
	}
}
示例#4
0
static void print_scanlist(const struct iwinfo_ops *iw, const char *ifname)
{
	int i, x, len;
	char buf[IWINFO_BUFSIZE];
	struct iwinfo_scanlist_entry *e;

	if (iw->scanlist(ifname, buf, &len))
	{
		printf("Scanning not possible\n\n");
		return;
	}
	else if (len <= 0)
	{
		printf("No scan results\n\n");
		return;
	}

	for (i = 0, x = 1; i < len; i += sizeof(struct iwinfo_scanlist_entry), x++)
	{
		e = (struct iwinfo_scanlist_entry *) &buf[i];

		printf("Cell %02d - Address: %s\n",
			x,
			format_bssid(e->mac));
		printf("          ESSID: %s\n",
			format_ssid(e->ssid));
		printf("          Mode: %s  Channel: %s\n",
			e->mode ? (char *)e->mode : "unknown",
			format_channel(e->channel));
		printf("          Signal: %s  Quality: %s/%s\n",
			format_signal(e->signal - 0x100),
			format_quality(e->quality),
			format_quality_max(e->quality_max));
		printf("          Encryption: %s\n\n",
			format_encryption(&e->crypto));
	}
}