Diffstat (limited to 'noncore/net/opiestumbler/stumbler.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/net/opiestumbler/stumbler.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/noncore/net/opiestumbler/stumbler.cpp b/noncore/net/opiestumbler/stumbler.cpp new file mode 100644 index 0000000..cda6b99 --- a/dev/null +++ b/noncore/net/opiestumbler/stumbler.cpp @@ -0,0 +1,80 @@ +#include <qstring.h> +#include <qtimer.h> +#include <qapplication.h> + +//#include <opie2/onetutils.h> +#include <opie2/onetwork.h> +#include <opie2/odebug.h> + +#include "stumbler.h" + +using namespace Opie::Net; + +Stumbler::Stumbler(const QString &iface, QObject *parent, const char *name) + :QObject(parent, name), m_interval(5000), + m_wifaceName(iface), + m_timer(new QTimer(this)) +{ + m_wiface = static_cast<OWirelessNetworkInterface*>(ONetwork::instance()->interface(m_wifaceName)); + connect(m_timer, SIGNAL(timeout()), this, SLOT(slotRefresh())); +} + + +void Stumbler::start() +{ + if (!m_wiface) { + odebug << "Error, interface " << m_wifaceName << " does not exist" << oendl; + return; + } + + if (!ONetwork::instance()->isWirelessInterface(m_wifaceName.ascii())) { + odebug << "Error, " << m_wifaceName << " is not a wireless interface" << oendl; + //FIXME: Tell the user about this + return; + } + + if (!m_timer->isActive()) { + odebug << "Starting stumbler" << oendl; + m_wiface->setUp(FALSE); + m_wiface->setSSID("any"); + m_wiface->setAssociatedAP( OMacAddress::broadcast ); + m_wiface->setUp(TRUE); + m_timer->start(m_interval); + } +} + +void Stumbler::stop() +{ + if (m_timer->isActive()) { + odebug << "Stoping stumbler" << oendl; + m_timer->stop(); + } +} + +void Stumbler::setInterval(int msec) +{ + m_interval = msec; + if (m_timer->isActive()) { + m_timer->stop(); + m_timer->start(m_interval); + } +} + +void Stumbler::setIface(const QString &iface) +{ + m_wifaceName = iface; + m_wiface = static_cast<OWirelessNetworkInterface*>(ONetwork::instance()->interface(m_wifaceName)); +} + +void Stumbler::slotRefresh() +{ + m_stationList = m_wiface->scanNetwork(); + if ( qApp ) + qApp->processEvents(); + emit (newdata()); +} + +Opie::Net::OStationList * Stumbler::stations() +{ + return m_stationList; +} |