summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings/wlan/wextensions.cpp
Side-by-side diff
Diffstat (limited to 'noncore/settings/networksettings/wlan/wextensions.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/wlan/wextensions.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/noncore/settings/networksettings/wlan/wextensions.cpp b/noncore/settings/networksettings/wlan/wextensions.cpp
index 6335ebc..16654bb 100644
--- a/noncore/settings/networksettings/wlan/wextensions.cpp
+++ b/noncore/settings/networksettings/wlan/wextensions.cpp
@@ -91,8 +91,31 @@ double WExtensions::frequency(){
return 0;
}
+/**
+ * Get the channel that the interface is running at.
+ * @return int the channel that the interfacae is running at.
+ */
+int WExtensions::channel(){
+ if(!hasWirelessExtensions)
+ return 0;
+ if ( 0 != ioctl( fd, SIOCGIWFREQ, &iwr ))
+ return 0;
+ double num = (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000);
+ double left = 2.401;
+ double right = 2.416;
+ for(int channel = 1; channel<= 15; channel++){
+ if( num >= left && num <= right )
+ return channel;
+ left += 0.005;
+ right += 0.005;
+ }
+ qDebug(QString("Unknown frequency: %1, returning -1 for the channel.").arg(num).latin1());
+ return -1;
+}
+
/***
* Get the current rate that the card is transmiting at.
+ * @return double the rate, 0 if error.
*/
double WExtensions::rate(){
if(!hasWirelessExtensions)