author | tille <tille> | 2003-06-13 13:32:55 (UTC) |
---|---|---|
committer | tille <tille> | 2003-06-13 13:32:55 (UTC) |
commit | e5d826221bab71c39dc8fc89d91509dd16bc2a8a (patch) (side-by-side diff) | |
tree | 4a0ff06e1e6b43d52fe78a9ab14a7a8f98f41327 | |
parent | c48af71638614aaff280178693448916e0e98102 (diff) | |
download | opie-e5d826221bab71c39dc8fc89d91509dd16bc2a8a.zip opie-e5d826221bab71c39dc8fc89d91509dd16bc2a8a.tar.gz opie-e5d826221bab71c39dc8fc89d91509dd16bc2a8a.tar.bz2 |
qcop channels for start, stop wlan interface works now...
... the qcop handling has to become more general, and this handlet in the interface itself.
-rw-r--r-- | noncore/settings/networksettings/TODO | 6 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/wlanimp2.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/wlanmodule.cpp | 50 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/wlanmodule.h | 7 |
4 files changed, 55 insertions, 10 deletions
diff --git a/noncore/settings/networksettings/TODO b/noncore/settings/networksettings/TODO index 614501f..b28c5a0 100644 --- a/noncore/settings/networksettings/TODO +++ b/noncore/settings/networksettings/TODO @@ -1,48 +1,54 @@ +* make dcop handling portable +* move dcop call for start, stop interfaces from wlan to interface + + +Old TODO of Benmayer: + Types: -Ethernet Connection (Done) -ISDN Connection -Modem COnnection (Started) -xDSL connection -Token Ring Connection -CIPE (VPN) connection (ipsec?) -Wireless Connection (Done) -Bluetooth -IPChains? When Zaurus is in cradle, USB interface is connected and reported as UP by the Network Setting application, clicking on Information button does not popup a window. It used to work before, but now it's broken in the latest feed... -Z hangs on PCMCIA-eject of Symbol 802.11b card (card seems to be in an odd state after first boot following reflash; see Additional Info) test WEP Add WEP transimtion rate 1 or 2 5.5 1 Auto udhcpc needs to output the dhcp information so interfaces can read it interfacesetupimp really doesn't need a interface* pointer PPP module needs to scan pppd.tdb to see what is currently active WLAN - add possiblity to input text or hex without knowing "s:" - Handle "any" and any the same way in config Add a route/DNS editor under the ViewAdvancedInfo button Use a true TCP/IP widget Automaticly update the main list of interfaces: > That would be me. :-D netlink, can you point me in the right > direction where I can get more info on it? (I figured there was some > kenel call) You can look up the meaning of the packets you receive, or you can just go poll for changes you might be interested in each time you receive _any_ packet. Anything's better than periodic polling. Note that you can't do this as non-root on some kernels. There's a patch which can go into the hh.org kernel if it's not already there. diff --git a/noncore/settings/networksettings/wlan/wlanimp2.cpp b/noncore/settings/networksettings/wlan/wlanimp2.cpp index e7b842b..b988822 100644 --- a/noncore/settings/networksettings/wlan/wlanimp2.cpp +++ b/noncore/settings/networksettings/wlan/wlanimp2.cpp @@ -1,91 +1,91 @@ #include "wlanimp2.h" #include "keyedit.h" #include "interfacesetupimp.h" #include <qfile.h> #include <qdir.h> #include <qtextstream.h> #include <qmessagebox.h> #include <qlineedit.h> #include <qlabel.h> #include <qspinbox.h> #include <qradiobutton.h> #include <qcheckbox.h> #include <qtabwidget.h> #include <qcombobox.h> #ifdef QWS #include <opie/oprocess.h> #else #define OProcess KProcess #include <kprocess.h> #endif #define WIRELESS_OPTS "/etc/pcmcia/wireless.opts" #define PREUP "/etc/netwrok/if-pre-up.d/wireless-tools" /** * Constructor, read in the wireless.opts file for parsing later. */ WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : WLAN(parent, name, modal, fl), currentProfile("*"), interface(i) { interfaces = new Interfaces; interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, interfaces); tabWidget->insertTab(interfaceSetup, "TCP/IP"); // Check sanity - the existance of the wireless-tools if-pre-up script QFile file(QString(PREUP)); if (file.exists()) { qWarning(QString("WLANImp: Unable to open /etc/network/if-pre-up.d/wireless-tools")); } } WLANImp::~WLANImp() { - delete interfaces; +//FIXME: delete interfaces; } /** * Change the profile for both wireless settings and network settings. */ void WLANImp::setProfile(const QString &profile){ interfaceSetup->setProfile(profile); parseOpts(); } void WLANImp::parseOpts() { bool error; QString opt; if (! interfaces->isInterfaceSet()) return; opt = interfaces->getInterfaceOption("wireless_essid", error); if(opt == "any" || opt == "off" || opt.isNull()){ essid->setEditText("any"); } else { essid->setEditText(opt); } opt = interfaces->getInterfaceOption("wireless_mode", error).simplifyWhiteSpace(); if (opt == "Auto") { mode->setCurrentItem(0); } else if (opt == "Ad-Hoc") { mode->setCurrentItem(2); } else { // Managed/Infrastructure mode mode->setCurrentItem(1); } opt = interfaces->getInterfaceOption("wireless_ap", error).simplifyWhiteSpace(); if (! opt.isNull()) { specifyAp->setChecked(true); macEdit->setText(opt); } opt = interfaces->getInterfaceOption("wireless_channel", error).simplifyWhiteSpace(); if (! opt.isNull()) { specifyChan->setChecked(true); networkChannel->setValue(opt.toInt()); } opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace(); diff --git a/noncore/settings/networksettings/wlan/wlanmodule.cpp b/noncore/settings/networksettings/wlan/wlanmodule.cpp index 3c988d5..e6f082c 100644 --- a/noncore/settings/networksettings/wlan/wlanmodule.cpp +++ b/noncore/settings/networksettings/wlan/wlanmodule.cpp @@ -1,153 +1,187 @@ #include "wlanmodule.h" #include "wlanimp.h" #include "infoimp.h" #include "wextensions.h" #include "interfaceinformationimp.h" #include <qlabel.h> #include <qprogressbar.h> #include <qtabwidget.h> + + + /** * Constructor, find all of the possible interfaces */ WLANModule::WLANModule() : Module() { } /** * Delete any interfaces that we own. */ WLANModule::~WLANModule(){ Interface *i; for ( i=list.first(); i != 0; i=list.next() ) delete i; + } /** * Change the current profile */ void WLANModule::setProfile(const QString &newProfile){ profile = newProfile; } /** * get the icon name for this device. * @param Interface* can be used in determining the icon. * @return QString the icon name (minus .png, .gif etc) */ QString WLANModule::getPixmapName(Interface* ){ return "wlan"; } /** * Check to see if the interface i is owned by this module. * @param Interface* interface to check against * @return bool true if i is owned by this module, false otherwise. */ bool WLANModule::isOwner(Interface *i){ WExtensions we(i->getInterfaceName()); if(!we.doesHaveWirelessExtensions()) return false; i->setHardwareName("802.11b"); list.append(i); return true; } /** * Create, and return the WLANConfigure Module * @return QWidget* pointer to this modules configure. */ QWidget *WLANModule::configure(Interface *i){ WLANImp *wlanconfig = new WLANImp(0, "WlanConfig", i, false, Qt::WDestructiveClose); wlanconfig->setProfile(profile); return wlanconfig; } /** * Create, and return the Information Module * @return QWidget* pointer to this modules info. */ QWidget *WLANModule::information(Interface *i){ WExtensions we(i->getInterfaceName()); if(!we.doesHaveWirelessExtensions()) return NULL; - WlanInfoImp *info = new WlanInfoImp(0, i->getInterfaceName(), Qt::WDestructiveClose); - InterfaceInformationImp *information = new InterfaceInformationImp(info->tabWidget, "InterfaceSetupImp", i); - info->tabWidget->insertTab(information, "TCP/IP"); - return info; + return getInfo( i ); } /** * Get all active (up or down) interfaces * @return QList<Interface> A list of interfaces that exsist that havn't * been called by isOwner() */ QList<Interface> WLANModule::getInterfaces(){ return list; } /** * Attempt to add a new interface as defined by name * @param name the name of the type of interface that should be created given * by possibleNewInterfaces(); * @return Interface* NULL if it was unable to be created. */ Interface *WLANModule::addNewInterface(const QString &){ // We can't add a 802.11 interface, either the hardware will be there // or it wont. return NULL; } /** * Attempts to remove the interface, doesn't delete i * @return bool true if successfull, false otherwise. */ bool WLANModule::remove(Interface*){ // Can't remove a hardware device, you can stop it though. return false; } void WLANModule::receive(const QCString ¶m, const QByteArray &arg) { qDebug("WLANModule::receive "+param); QStringList params = QStringList::split(",",param); int count = params.count(); qDebug("got %i params", count ); if (count < 2){ qDebug("Erorr less than 2 parameter"); qDebug("RETURNING"); return; } QDataStream stream(arg,IO_ReadOnly); QString interface; QString action; stream >> interface; stream >> action; qDebug("got interface %s and acion %s", interface.latin1(), action.latin1()); + // find interfaces + Interface *ifa=0; + for ( Interface *i=list.first(); i != 0; i=list.next() ){ + if (i->getInterfaceName() == interface){ + qDebug("found interface %s",interface.latin1()); + ifa = i; + } + } + + if (ifa == 0){ + qFatal("Did not find %s",interface.latin1()); + } if (count == 2){ - // those should call the interface + // those should call the interface directly + QWidget *info = getInfo( ifa ); + info->showMaximized(); + if ( action.contains("start" ) ){ - qDebug("starting %s not yet implemented",interface.latin1()); + ifa->start(); } else if ( action.contains("restart" ) ){ - qDebug("restarting %s not yet implemented",interface.latin1()); + ifa->restart(); } else if ( action.contains("stop" ) ){ - qDebug("stopping %s not yet implemented",interface.latin1()); + ifa->stop(); + }else if ( action.contains("refresh" ) ){ + ifa->refresh(); } }else if (count == 3){ QString value; stream >> value; qDebug("setting %s of %s to %s", action.latin1(), interface.latin1(), value.latin1() ); + if ( action.contains("ESSID") ){ + qDebug("Setting ESSID not yet impl"); + }else if (action.contains("Channel")){ + qDebug("Setting Channel not yet impl"); + }else + qDebug("wlan plugin has no clue"); } // if (param.contains("QString,QString,QString")) { // QDataStream stream(arg,IO_ReadOnly); // QString arg1, arg2, arg3; // stream >> arg1 >> arg2 >> arg3 ; // qDebug("interface >%s< setting >%s< value >%s<",arg1.latin1(),arg2.latin1(),arg3.latin1()); // } } +QWidget *WLANModule::getInfo( Interface *i) +{ + qDebug("WLANModule::getInfo start"); + WlanInfoImp *info = new WlanInfoImp(0, i->getInterfaceName(), Qt::WDestructiveClose); + InterfaceInformationImp *information = new InterfaceInformationImp(info->tabWidget, "InterfaceSetupImp", i); + info->tabWidget->insertTab(information, "TCP/IP", 0); + + qDebug("WLANModule::getInfo return"); + return info; +} diff --git a/noncore/settings/networksettings/wlan/wlanmodule.h b/noncore/settings/networksettings/wlan/wlanmodule.h index a617a90..0963137 100644 --- a/noncore/settings/networksettings/wlan/wlanmodule.h +++ b/noncore/settings/networksettings/wlan/wlanmodule.h @@ -1,44 +1,49 @@ #ifndef WLAN_MODULE_H #define WLAN_MODULE_H #include "module.h" +//class WlanInfoImp; + class WLANModule : Module{ signals: void updateInterface(Interface *i); public: WLANModule(); ~WLANModule(); virtual const QString type() {return "wlan";}; void setProfile(const QString &newProfile); bool isOwner(Interface *); QWidget *configure(Interface *i); QWidget *information(Interface *i); QList<Interface> getInterfaces(); void possibleNewInterfaces(QMap<QString, QString> &){}; Interface *addNewInterface(const QString &name); bool remove(Interface* i); QString getPixmapName(Interface* i); virtual void receive(const QCString&, const QByteArray&); private: + QWidget *getInfo(Interface*); + QList<Interface> list; QString profile; - + // WlanInfoImp *info; + // Interface *iface; }; extern "C" { void* create_plugin() { return new WLANModule(); } }; #endif // wlanmodule.h |