head	1.2;
access;
symbols
	perseant-exfatfs-base-20250801:1.2
	perseant-exfatfs-base-20240630:1.2
	perseant-exfatfs:1.2.0.22
	perseant-exfatfs-base:1.2
	cjep_sun2x:1.2.0.20
	cjep_sun2x-base:1.2
	cjep_staticlib_x-base1:1.2
	cjep_staticlib_x:1.2.0.18
	cjep_staticlib_x-base:1.2
	phil-wifi-20200421:1.2
	phil-wifi-20200411:1.2
	phil-wifi-20200406:1.2
	pgoyette-compat-merge-20190127:1.2
	pgoyette-compat-20190127:1.2
	pgoyette-compat-20190118:1.2
	pgoyette-compat-1226:1.2
	pgoyette-compat-1126:1.2
	pgoyette-compat-1020:1.2
	pgoyette-compat-0930:1.2
	pgoyette-compat-0906:1.2
	pgoyette-compat-0728:1.2
	pgoyette-compat-0625:1.2
	pgoyette-compat-0521:1.2
	pgoyette-compat-0502:1.2
	pgoyette-compat-0422:1.2
	pgoyette-compat-0415:1.2
	pgoyette-compat-0407:1.2
	pgoyette-compat-0330:1.2
	pgoyette-compat-0322:1.2
	pgoyette-compat-0315:1.2
	pgoyette-compat:1.2.0.16
	pgoyette-compat-base:1.2
	prg-localcount2-base3:1.2
	prg-localcount2-base2:1.2
	prg-localcount2-base1:1.2
	prg-localcount2:1.2.0.14
	prg-localcount2-base:1.2
	pgoyette-localcount-20170426:1.2
	bouyer-socketcan-base1:1.2
	pgoyette-localcount-20170320:1.2
	bouyer-socketcan:1.2.0.12
	bouyer-socketcan-base:1.2
	pgoyette-localcount-20170107:1.2
	pgoyette-localcount-20161104:1.2
	localcount-20160914:1.2
	pgoyette-localcount-20160806:1.2
	pgoyette-localcount-20160726:1.2
	pgoyette-localcount:1.2.0.10
	pgoyette-localcount-base:1.2
	netbsd-5-2-3-RELEASE:1.1.1.2
	netbsd-5-1-5-RELEASE:1.1.1.2
	yamt-pagecache-base9:1.2
	yamt-pagecache-tag8:1.2
	tls-earlyentropy:1.2.0.6
	tls-earlyentropy-base:1.2
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.2
	riastradh-drm2-base3:1.2
	netbsd-5-2-2-RELEASE:1.1.1.2
	netbsd-5-1-4-RELEASE:1.1.1.2
	netbsd-5-2-1-RELEASE:1.1.1.2
	netbsd-5-1-3-RELEASE:1.1.1.2
	agc-symver:1.2.0.8
	agc-symver-base:1.2
	tls-maxphys-base:1.2
	yamt-pagecache-base8:1.2
	netbsd-5-2:1.1.1.2.0.2
	yamt-pagecache-base7:1.2
	netbsd-5-2-RELEASE:1.1.1.2
	netbsd-5-2-RC1:1.1.1.2
	yamt-pagecache-base6:1.2
	yamt-pagecache-base5:1.2
	yamt-pagecache-base4:1.2
	netbsd-5-1-2-RELEASE:1.1.1.2
	netbsd-5-1-1-RELEASE:1.1.1.2
	yamt-pagecache-base3:1.2
	yamt-pagecache-base2:1.2
	yamt-pagecache:1.2.0.4
	yamt-pagecache-base:1.2
	bouyer-quota2-nbase:1.2
	bouyer-quota2:1.2.0.2
	bouyer-quota2-base:1.2
	matt-nb5-mips64-premerge-20101231:1.1.1.2
	matt-nb5-pq3:1.1.1.2.0.14
	matt-nb5-pq3-base:1.1.1.2
	netbsd-5-1:1.1.1.2.0.12
	netbsd-5-1-RELEASE:1.1.1.2
	netbsd-5-1-RC4:1.1.1.2
	matt-nb5-mips64-k15:1.1.1.2
	netbsd-5-1-RC3:1.1.1.2
	netbsd-5-1-RC2:1.1.1.2
	netbsd-5-1-RC1:1.1.1.2
	netbsd-5-0-2-RELEASE:1.1.1.2
	matt-nb5-mips64-premerge-20091211:1.1.1.2
	matt-premerge-20091211:1.1.1.2
	matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.1.1.2
	matt-nb4-mips64-k7-u2a-k9b:1.1.1.2
	matt-nb5-mips64-u1-k1-k5:1.1.1.2
	matt-nb5-mips64:1.1.1.2.0.10
	netbsd-5-0-1-RELEASE:1.1.1.2
	jym-xensuspend-nbase:1.1.1.2
	netbsd-5-0:1.1.1.2.0.8
	netbsd-5-0-RELEASE:1.1.1.2
	netbsd-5-0-RC4:1.1.1.2
	netbsd-5-0-RC3:1.1.1.2
	netbsd-5-0-RC2:1.1.1.2
	jym-xensuspend:1.1.1.2.0.6
	jym-xensuspend-base:1.1.1.2
	netbsd-5-0-RC1:1.1.1.2
	netbsd-5:1.1.1.2.0.4
	netbsd-5-base:1.1.1.2
	matt-mips64-base2:1.1.1.2
	wrstuden-revivesa-base-3:1.1.1.2
	wrstuden-revivesa-base-2:1.1.1.2
	v0_6_4:1.1.1.2
	wrstuden-revivesa-base-1:1.1.1.1
	yamt-pf42-base4:1.1.1.1
	yamt-pf42-base3:1.1.1.1
	hpcarm-cleanup-nbase:1.1.1.1
	hpcarm-cleanup-base:1.1.1.1
	yamt-pf42-baseX:1.1.1.1
	yamt-pf42-base2:1.1.1.1
	wrstuden-revivesa:1.1.1.1.0.8
	wrstuden-revivesa-base:1.1.1.1
	yamt-pf42:1.1.1.1.0.6
	yamt-pf42-base:1.1.1.1
	matt-armv6:1.1.1.1.0.4
	matt-armv6-nbase:1.1.1.1
	keiichi-mipv6:1.1.1.1.0.2
	keiichi-mipv6-base:1.1.1.1
	v0_6_2:1.1.1.1
	MALINEN:1.1.1;
locks; strict;
comment	@// @;


1.2
date	2010.08.26.14.59.20;	author christos;	state dead;
branches;
next	1.1;

1.1
date	2008.01.26.21.39.59;	author christos;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2008.01.26.21.39.59;	author christos;	state Exp;
branches
	1.1.1.1.4.1
	1.1.1.1.8.1;
next	1.1.1.2;

1.1.1.2
date	2008.08.30.07.26.32;	author christos;	state Exp;
branches;
next	;

1.1.1.1.4.1
date	2008.01.26.21.39.59;	author matt;	state dead;
branches;
next	1.1.1.1.4.2;

1.1.1.1.4.2
date	2008.03.23.00.17.32;	author matt;	state Exp;
branches;
next	;

1.1.1.1.8.1
date	2008.09.18.04.44.54;	author wrstuden;	state Exp;
branches;
next	;


desc
@@


1.2
log
@bye old wpa
@
text
@/*
 * wpa_gui - ScanResults class
 * Copyright (c) 2005-2006, Jouni Malinen <j@@w1.fi>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * Alternatively, this software may be distributed under the terms of BSD
 * license.
 *
 * See README and COPYING for more details.
 */

#include <QTimer>

#include "scanresults.h"
#include "wpagui.h"
#include "networkconfig.h"


ScanResults::ScanResults(QWidget *parent, const char *, bool, Qt::WFlags)
	: QDialog(parent)
{
	setupUi(this);

	connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
	connect(scanButton, SIGNAL(clicked()), this, SLOT(scanRequest()));
	connect(scanResultsWidget,
		SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this,
		SLOT(bssSelected(QTreeWidgetItem *)));

	wpagui = NULL;
	scanResultsWidget->setItemsExpandable(FALSE);
	scanResultsWidget->setRootIsDecorated(FALSE);
}


ScanResults::~ScanResults()
{
	delete timer;
}


void ScanResults::languageChange()
{
	retranslateUi(this);
}


void ScanResults::setWpaGui(WpaGui *_wpagui)
{
	wpagui = _wpagui;
	updateResults();
    
	timer = new QTimer(this);
	connect(timer, SIGNAL(timeout()), SLOT(getResults()));
	timer->setSingleShot(FALSE);
	timer->start(10000);
}


void ScanResults::updateResults()
{
	char reply[8192];
	size_t reply_len;
    
	if (wpagui == NULL)
		return;

	reply_len = sizeof(reply) - 1;
	if (wpagui->ctrlRequest("SCAN_RESULTS", reply, &reply_len) < 0)
		return;
	reply[reply_len] = '\0';

	scanResultsWidget->clear();

	QString res(reply);
	QStringList lines = res.split(QChar('\n'));
	bool first = true;
	for (QStringList::Iterator it = lines.begin(); it != lines.end(); it++)
	{
		if (first) {
			first = false;
			continue;
		}

		QStringList cols = (*it).split(QChar('\t'));
		QString ssid, bssid, freq, signal, flags;
		bssid = cols.count() > 0 ? cols[0] : "";
		freq = cols.count() > 1 ? cols[1] : "";
		signal = cols.count() > 2 ? cols[2] : "";
		flags = cols.count() > 3 ? cols[3] : "";
		ssid = cols.count() > 4 ? cols[4] : "";

		QTreeWidgetItem *item = new QTreeWidgetItem(scanResultsWidget);
		if (item) {
			item->setText(0, ssid);
			item->setText(1, bssid);
			item->setText(2, freq);
			item->setText(3, signal);
			item->setText(4, flags);
		}
	}
}


void ScanResults::scanRequest()
{
	char reply[10];
	size_t reply_len = sizeof(reply);
    
	if (wpagui == NULL)
		return;
    
	wpagui->ctrlRequest("SCAN", reply, &reply_len);
}


void ScanResults::getResults()
{
	updateResults();
}


void ScanResults::bssSelected(QTreeWidgetItem *sel)
{
	NetworkConfig *nc = new NetworkConfig();
	if (nc == NULL)
		return;
	nc->setWpaGui(wpagui);
	nc->paramsFromScanResults(sel);
	nc->show();
	nc->exec();
}
@


1.1
log
@Initial revision
@
text
@@


1.1.1.1
log
@Import new wpa_supplicant code
@
text
@@


1.1.1.1.8.1
log
@Sync with wrstuden-revivesa-base-2.
@
text
@d15 2
d41 1
d55 5
d65 1
a65 1
	char reply[2048];
d67 8
a74 2
	int index;
	char cmd[20];
d78 9
a86 14
	index = 0;
	while (wpagui) {
		snprintf(cmd, sizeof(cmd), "BSS %d", index++);
		if (index > 1000)
			break;

		reply_len = sizeof(reply) - 1;
		if (wpagui->ctrlRequest(cmd, reply, &reply_len) < 0)
			break;
		reply[reply_len] = '\0';

		QString bss(reply);
		if (bss.isEmpty() || bss.startsWith("FAIL"))
			break;
d88 1
d90 5
a94 19

		QStringList lines = bss.split(QRegExp("\\n"));
		for (QStringList::Iterator it = lines.begin();
		     it != lines.end(); it++) {
			int pos = (*it).indexOf('=') + 1;
			if (pos < 1)
				continue;

			if ((*it).startsWith("bssid="))
				bssid = (*it).mid(pos);
			else if ((*it).startsWith("freq="))
				freq = (*it).mid(pos);
			else if ((*it).startsWith("qual="))
				signal = (*it).mid(pos);
			else if ((*it).startsWith("flags="))
				flags = (*it).mid(pos);
			else if ((*it).startsWith("ssid="))
				ssid = (*it).mid(pos);
		}
a103 3

		if (bssid.isEmpty())
			break;
@


1.1.1.2
log
@Import wpa_supplicant and hostapd
@
text
@d15 2
d41 1
d55 5
d65 1
a65 1
	char reply[2048];
d67 8
a74 2
	int index;
	char cmd[20];
d78 9
a86 14
	index = 0;
	while (wpagui) {
		snprintf(cmd, sizeof(cmd), "BSS %d", index++);
		if (index > 1000)
			break;

		reply_len = sizeof(reply) - 1;
		if (wpagui->ctrlRequest(cmd, reply, &reply_len) < 0)
			break;
		reply[reply_len] = '\0';

		QString bss(reply);
		if (bss.isEmpty() || bss.startsWith("FAIL"))
			break;
d88 1
d90 5
a94 19

		QStringList lines = bss.split(QRegExp("\\n"));
		for (QStringList::Iterator it = lines.begin();
		     it != lines.end(); it++) {
			int pos = (*it).indexOf('=') + 1;
			if (pos < 1)
				continue;

			if ((*it).startsWith("bssid="))
				bssid = (*it).mid(pos);
			else if ((*it).startsWith("freq="))
				freq = (*it).mid(pos);
			else if ((*it).startsWith("qual="))
				signal = (*it).mid(pos);
			else if ((*it).startsWith("flags="))
				flags = (*it).mid(pos);
			else if ((*it).startsWith("ssid="))
				ssid = (*it).mid(pos);
		}
a103 3

		if (bssid.isEmpty())
			break;
@


1.1.1.1.4.1
log
@file scanresults.cpp was added on branch matt-armv6 on 2008-03-23 00:17:32 +0000
@
text
@d1 135
@


1.1.1.1.4.2
log
@sync with HEAD
@
text
@a0 135
/*
 * wpa_gui - ScanResults class
 * Copyright (c) 2005-2006, Jouni Malinen <j@@w1.fi>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * Alternatively, this software may be distributed under the terms of BSD
 * license.
 *
 * See README and COPYING for more details.
 */

#include <QTimer>

#include "scanresults.h"
#include "wpagui.h"
#include "networkconfig.h"


ScanResults::ScanResults(QWidget *parent, const char *, bool, Qt::WFlags)
	: QDialog(parent)
{
	setupUi(this);

	connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
	connect(scanButton, SIGNAL(clicked()), this, SLOT(scanRequest()));
	connect(scanResultsWidget,
		SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this,
		SLOT(bssSelected(QTreeWidgetItem *)));

	wpagui = NULL;
	scanResultsWidget->setItemsExpandable(FALSE);
	scanResultsWidget->setRootIsDecorated(FALSE);
}


ScanResults::~ScanResults()
{
	delete timer;
}


void ScanResults::languageChange()
{
	retranslateUi(this);
}


void ScanResults::setWpaGui(WpaGui *_wpagui)
{
	wpagui = _wpagui;
	updateResults();
    
	timer = new QTimer(this);
	connect(timer, SIGNAL(timeout()), SLOT(getResults()));
	timer->setSingleShot(FALSE);
	timer->start(10000);
}


void ScanResults::updateResults()
{
	char reply[8192];
	size_t reply_len;
    
	if (wpagui == NULL)
		return;

	reply_len = sizeof(reply) - 1;
	if (wpagui->ctrlRequest("SCAN_RESULTS", reply, &reply_len) < 0)
		return;
	reply[reply_len] = '\0';

	scanResultsWidget->clear();

	QString res(reply);
	QStringList lines = res.split(QChar('\n'));
	bool first = true;
	for (QStringList::Iterator it = lines.begin(); it != lines.end(); it++)
	{
		if (first) {
			first = false;
			continue;
		}

		QStringList cols = (*it).split(QChar('\t'));
		QString ssid, bssid, freq, signal, flags;
		bssid = cols.count() > 0 ? cols[0] : "";
		freq = cols.count() > 1 ? cols[1] : "";
		signal = cols.count() > 2 ? cols[2] : "";
		flags = cols.count() > 3 ? cols[3] : "";
		ssid = cols.count() > 4 ? cols[4] : "";

		QTreeWidgetItem *item = new QTreeWidgetItem(scanResultsWidget);
		if (item) {
			item->setText(0, ssid);
			item->setText(1, bssid);
			item->setText(2, freq);
			item->setText(3, signal);
			item->setText(4, flags);
		}
	}
}


void ScanResults::scanRequest()
{
	char reply[10];
	size_t reply_len = sizeof(reply);
    
	if (wpagui == NULL)
		return;
    
	wpagui->ctrlRequest("SCAN", reply, &reply_len);
}


void ScanResults::getResults()
{
	updateResults();
}


void ScanResults::bssSelected(QTreeWidgetItem *sel)
{
	NetworkConfig *nc = new NetworkConfig();
	if (nc == NULL)
		return;
	nc->setWpaGui(wpagui);
	nc->paramsFromScanResults(sel);
	nc->show();
	nc->exec();
}
@
