-rw-r--r-- | noncore/net/networksetup/wlan/info.ui | 6 | ||||
-rw-r--r-- | noncore/net/networksetup/wlan/infoimp.cpp | 2 | ||||
-rw-r--r-- | noncore/net/networksetup/wlan/wextensions.cpp | 23 | ||||
-rw-r--r-- | noncore/net/networksetup/wlan/wextensions.h | 1 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/info.ui | 6 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/infoimp.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/wextensions.cpp | 23 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/wextensions.h | 1 |
8 files changed, 56 insertions, 8 deletions
diff --git a/noncore/net/networksetup/wlan/info.ui b/noncore/net/networksetup/wlan/info.ui index 1e3e8b5..7a5bf0b 100644 --- a/noncore/net/networksetup/wlan/info.ui +++ b/noncore/net/networksetup/wlan/info.ui | |||
@@ -1,112 +1,112 @@ | |||
1 | <!DOCTYPE UI><UI> | 1 | <!DOCTYPE UI><UI> |
2 | <class>WlanInfo</class> | 2 | <class>WlanInfo</class> |
3 | <widget> | 3 | <widget> |
4 | <class>QWidget</class> | 4 | <class>QWidget</class> |
5 | <property stdset="1"> | 5 | <property stdset="1"> |
6 | <name>name</name> | 6 | <name>name</name> |
7 | <cstring>WlanInfo</cstring> | 7 | <cstring>WlanInfo</cstring> |
8 | </property> | 8 | </property> |
9 | <property stdset="1"> | 9 | <property stdset="1"> |
10 | <name>geometry</name> | 10 | <name>geometry</name> |
11 | <rect> | 11 | <rect> |
12 | <x>0</x> | 12 | <x>0</x> |
13 | <y>0</y> | 13 | <y>0</y> |
14 | <width>242</width> | 14 | <width>238</width> |
15 | <height>316</height> | 15 | <height>316</height> |
16 | </rect> | 16 | </rect> |
17 | </property> | 17 | </property> |
18 | <property stdset="1"> | 18 | <property stdset="1"> |
19 | <name>caption</name> | 19 | <name>caption</name> |
20 | <string>Interface Information</string> | 20 | <string>Interface Information</string> |
21 | </property> | 21 | </property> |
22 | <vbox> | 22 | <vbox> |
23 | <property stdset="1"> | 23 | <property stdset="1"> |
24 | <name>margin</name> | 24 | <name>margin</name> |
25 | <number>0</number> | 25 | <number>0</number> |
26 | </property> | 26 | </property> |
27 | <property stdset="1"> | 27 | <property stdset="1"> |
28 | <name>spacing</name> | 28 | <name>spacing</name> |
29 | <number>0</number> | 29 | <number>0</number> |
30 | </property> | 30 | </property> |
31 | <widget> | 31 | <widget> |
32 | <class>QTabWidget</class> | 32 | <class>QTabWidget</class> |
33 | <property stdset="1"> | 33 | <property stdset="1"> |
34 | <name>name</name> | 34 | <name>name</name> |
35 | <cstring>tabWidget</cstring> | 35 | <cstring>tabWidget</cstring> |
36 | </property> | 36 | </property> |
37 | <widget> | 37 | <widget> |
38 | <class>QWidget</class> | 38 | <class>QWidget</class> |
39 | <property stdset="1"> | 39 | <property stdset="1"> |
40 | <name>name</name> | 40 | <name>name</name> |
41 | <cstring>Widget2</cstring> | 41 | <cstring>Widget2</cstring> |
42 | </property> | 42 | </property> |
43 | <attribute> | 43 | <attribute> |
44 | <name>title</name> | 44 | <name>title</name> |
45 | <string>802.11b</string> | 45 | <string>802.11b</string> |
46 | </attribute> | 46 | </attribute> |
47 | <grid> | 47 | <grid> |
48 | <property stdset="1"> | 48 | <property stdset="1"> |
49 | <name>margin</name> | 49 | <name>margin</name> |
50 | <number>11</number> | 50 | <number>11</number> |
51 | </property> | 51 | </property> |
52 | <property stdset="1"> | 52 | <property stdset="1"> |
53 | <name>spacing</name> | 53 | <name>spacing</name> |
54 | <number>6</number> | 54 | <number>6</number> |
55 | </property> | 55 | </property> |
56 | <widget row="3" column="0" > | 56 | <widget row="3" column="0" > |
57 | <class>QLabel</class> | 57 | <class>QLabel</class> |
58 | <property stdset="1"> | 58 | <property stdset="1"> |
59 | <name>name</name> | 59 | <name>name</name> |
60 | <cstring>TextLabel4</cstring> | 60 | <cstring>TextLabel4</cstring> |
61 | </property> | 61 | </property> |
62 | <property stdset="1"> | 62 | <property stdset="1"> |
63 | <name>text</name> | 63 | <name>text</name> |
64 | <string>Frequency</string> | 64 | <string>Channel</string> |
65 | </property> | 65 | </property> |
66 | </widget> | 66 | </widget> |
67 | <widget row="2" column="0" > | 67 | <widget row="2" column="0" > |
68 | <class>QLabel</class> | 68 | <class>QLabel</class> |
69 | <property stdset="1"> | 69 | <property stdset="1"> |
70 | <name>name</name> | 70 | <name>name</name> |
71 | <cstring>TextLabel3</cstring> | 71 | <cstring>TextLabel3</cstring> |
72 | </property> | 72 | </property> |
73 | <property stdset="1"> | 73 | <property stdset="1"> |
74 | <name>text</name> | 74 | <name>text</name> |
75 | <string>Mode</string> | 75 | <string>Mode</string> |
76 | </property> | 76 | </property> |
77 | </widget> | 77 | </widget> |
78 | <widget row="1" column="0" > | 78 | <widget row="1" column="0" > |
79 | <class>QLabel</class> | 79 | <class>QLabel</class> |
80 | <property stdset="1"> | 80 | <property stdset="1"> |
81 | <name>name</name> | 81 | <name>name</name> |
82 | <cstring>TextLabel2</cstring> | 82 | <cstring>TextLabel2</cstring> |
83 | </property> | 83 | </property> |
84 | <property stdset="1"> | 84 | <property stdset="1"> |
85 | <name>text</name> | 85 | <name>text</name> |
86 | <string>ESSID</string> | 86 | <string>ESSID</string> |
87 | </property> | 87 | </property> |
88 | </widget> | 88 | </widget> |
89 | <widget row="0" column="0" > | 89 | <widget row="0" column="0" > |
90 | <class>QLabel</class> | 90 | <class>QLabel</class> |
91 | <property stdset="1"> | 91 | <property stdset="1"> |
92 | <name>name</name> | 92 | <name>name</name> |
93 | <cstring>TextLabel1</cstring> | 93 | <cstring>TextLabel1</cstring> |
94 | </property> | 94 | </property> |
95 | <property stdset="1"> | 95 | <property stdset="1"> |
96 | <name>text</name> | 96 | <name>text</name> |
97 | <string>Station</string> | 97 | <string>Station</string> |
98 | </property> | 98 | </property> |
99 | </widget> | 99 | </widget> |
100 | <widget row="4" column="0" > | 100 | <widget row="4" column="0" > |
101 | <class>QLabel</class> | 101 | <class>QLabel</class> |
102 | <property stdset="1"> | 102 | <property stdset="1"> |
103 | <name>name</name> | 103 | <name>name</name> |
104 | <cstring>TextLabel9</cstring> | 104 | <cstring>TextLabel9</cstring> |
105 | </property> | 105 | </property> |
106 | <property stdset="1"> | 106 | <property stdset="1"> |
107 | <name>text</name> | 107 | <name>text</name> |
108 | <string>AP</string> | 108 | <string>AP</string> |
109 | </property> | 109 | </property> |
110 | </widget> | 110 | </widget> |
111 | <widget row="4" column="1" > | 111 | <widget row="4" column="1" > |
112 | <class>QLabel</class> | 112 | <class>QLabel</class> |
@@ -127,97 +127,97 @@ | |||
127 | <class>QLabel</class> | 127 | <class>QLabel</class> |
128 | <property stdset="1"> | 128 | <property stdset="1"> |
129 | <name>name</name> | 129 | <name>name</name> |
130 | <cstring>modeLabel</cstring> | 130 | <cstring>modeLabel</cstring> |
131 | </property> | 131 | </property> |
132 | <property stdset="1"> | 132 | <property stdset="1"> |
133 | <name>frameShape</name> | 133 | <name>frameShape</name> |
134 | <enum>Panel</enum> | 134 | <enum>Panel</enum> |
135 | </property> | 135 | </property> |
136 | <property stdset="1"> | 136 | <property stdset="1"> |
137 | <name>frameShadow</name> | 137 | <name>frameShadow</name> |
138 | <enum>Sunken</enum> | 138 | <enum>Sunken</enum> |
139 | </property> | 139 | </property> |
140 | </widget> | 140 | </widget> |
141 | <widget row="1" column="1" > | 141 | <widget row="1" column="1" > |
142 | <class>QLabel</class> | 142 | <class>QLabel</class> |
143 | <property stdset="1"> | 143 | <property stdset="1"> |
144 | <name>name</name> | 144 | <name>name</name> |
145 | <cstring>essidLabel</cstring> | 145 | <cstring>essidLabel</cstring> |
146 | </property> | 146 | </property> |
147 | <property stdset="1"> | 147 | <property stdset="1"> |
148 | <name>frameShape</name> | 148 | <name>frameShape</name> |
149 | <enum>Panel</enum> | 149 | <enum>Panel</enum> |
150 | </property> | 150 | </property> |
151 | <property stdset="1"> | 151 | <property stdset="1"> |
152 | <name>frameShadow</name> | 152 | <name>frameShadow</name> |
153 | <enum>Sunken</enum> | 153 | <enum>Sunken</enum> |
154 | </property> | 154 | </property> |
155 | </widget> | 155 | </widget> |
156 | <widget row="0" column="1" > | 156 | <widget row="0" column="1" > |
157 | <class>QLabel</class> | 157 | <class>QLabel</class> |
158 | <property stdset="1"> | 158 | <property stdset="1"> |
159 | <name>name</name> | 159 | <name>name</name> |
160 | <cstring>stationLabel</cstring> | 160 | <cstring>stationLabel</cstring> |
161 | </property> | 161 | </property> |
162 | <property stdset="1"> | 162 | <property stdset="1"> |
163 | <name>frameShape</name> | 163 | <name>frameShape</name> |
164 | <enum>Panel</enum> | 164 | <enum>Panel</enum> |
165 | </property> | 165 | </property> |
166 | <property stdset="1"> | 166 | <property stdset="1"> |
167 | <name>frameShadow</name> | 167 | <name>frameShadow</name> |
168 | <enum>Sunken</enum> | 168 | <enum>Sunken</enum> |
169 | </property> | 169 | </property> |
170 | </widget> | 170 | </widget> |
171 | <widget row="3" column="1" > | 171 | <widget row="3" column="1" > |
172 | <class>QLabel</class> | 172 | <class>QLabel</class> |
173 | <property stdset="1"> | 173 | <property stdset="1"> |
174 | <name>name</name> | 174 | <name>name</name> |
175 | <cstring>freqLabel</cstring> | 175 | <cstring>channelLabel</cstring> |
176 | </property> | 176 | </property> |
177 | <property stdset="1"> | 177 | <property stdset="1"> |
178 | <name>frameShape</name> | 178 | <name>frameShape</name> |
179 | <enum>Panel</enum> | 179 | <enum>Panel</enum> |
180 | </property> | 180 | </property> |
181 | <property stdset="1"> | 181 | <property stdset="1"> |
182 | <name>frameShadow</name> | 182 | <name>frameShadow</name> |
183 | <enum>Sunken</enum> | 183 | <enum>Sunken</enum> |
184 | </property> | 184 | </property> |
185 | </widget> | 185 | </widget> |
186 | <spacer row="9" column="1" > | 186 | <spacer row="9" column="1" > |
187 | <property> | 187 | <property> |
188 | <name>name</name> | 188 | <name>name</name> |
189 | <cstring>Spacer7</cstring> | 189 | <cstring>Spacer7</cstring> |
190 | </property> | 190 | </property> |
191 | <property stdset="1"> | 191 | <property stdset="1"> |
192 | <name>orientation</name> | 192 | <name>orientation</name> |
193 | <enum>Vertical</enum> | 193 | <enum>Vertical</enum> |
194 | </property> | 194 | </property> |
195 | <property stdset="1"> | 195 | <property stdset="1"> |
196 | <name>sizeType</name> | 196 | <name>sizeType</name> |
197 | <enum>Expanding</enum> | 197 | <enum>Expanding</enum> |
198 | </property> | 198 | </property> |
199 | <property> | 199 | <property> |
200 | <name>sizeHint</name> | 200 | <name>sizeHint</name> |
201 | <size> | 201 | <size> |
202 | <width>20</width> | 202 | <width>20</width> |
203 | <height>20</height> | 203 | <height>20</height> |
204 | </size> | 204 | </size> |
205 | </property> | 205 | </property> |
206 | </spacer> | 206 | </spacer> |
207 | <widget row="5" column="1" > | 207 | <widget row="5" column="1" > |
208 | <class>QProgressBar</class> | 208 | <class>QProgressBar</class> |
209 | <property stdset="1"> | 209 | <property stdset="1"> |
210 | <name>name</name> | 210 | <name>name</name> |
211 | <cstring>signalProgressBar</cstring> | 211 | <cstring>signalProgressBar</cstring> |
212 | </property> | 212 | </property> |
213 | </widget> | 213 | </widget> |
214 | <widget row="6" column="1" > | 214 | <widget row="6" column="1" > |
215 | <class>QProgressBar</class> | 215 | <class>QProgressBar</class> |
216 | <property stdset="1"> | 216 | <property stdset="1"> |
217 | <name>name</name> | 217 | <name>name</name> |
218 | <cstring>noiseProgressBar</cstring> | 218 | <cstring>noiseProgressBar</cstring> |
219 | </property> | 219 | </property> |
220 | </widget> | 220 | </widget> |
221 | <widget row="7" column="1" > | 221 | <widget row="7" column="1" > |
222 | <class>QProgressBar</class> | 222 | <class>QProgressBar</class> |
223 | <property stdset="1"> | 223 | <property stdset="1"> |
diff --git a/noncore/net/networksetup/wlan/infoimp.cpp b/noncore/net/networksetup/wlan/infoimp.cpp index 6d3e167..bd56678 100644 --- a/noncore/net/networksetup/wlan/infoimp.cpp +++ b/noncore/net/networksetup/wlan/infoimp.cpp | |||
@@ -1,56 +1,56 @@ | |||
1 | #include "infoimp.h" | 1 | #include "infoimp.h" |
2 | #include "wextensions.h" | 2 | #include "wextensions.h" |
3 | 3 | ||
4 | #include <qtimer.h> | 4 | #include <qtimer.h> |
5 | #include <qprogressbar.h> | 5 | #include <qprogressbar.h> |
6 | #include <qlabel.h> | 6 | #include <qlabel.h> |
7 | 7 | ||
8 | /** | 8 | /** |
9 | * Constructor. If wireless extensions are enabled on device name then | 9 | * Constructor. If wireless extensions are enabled on device name then |
10 | * start a timer that every second will update the information. | 10 | * start a timer that every second will update the information. |
11 | */ | 11 | */ |
12 | WlanInfoImp::WlanInfoImp( QWidget* parent, const char* name, WFlags fl): WlanInfo(parent, name, fl){ | 12 | WlanInfoImp::WlanInfoImp( QWidget* parent, const char* name, WFlags fl): WlanInfo(parent, name, fl){ |
13 | WExtensions *wExtensions = new WExtensions(name); | 13 | WExtensions *wExtensions = new WExtensions(name); |
14 | if(!wExtensions->doesHaveWirelessExtensions()){ | 14 | if(!wExtensions->doesHaveWirelessExtensions()){ |
15 | delete wExtensions; | 15 | delete wExtensions; |
16 | qDebug("WlanInfoImp::No wireless extension"); | 16 | qDebug("WlanInfoImp::No wireless extension"); |
17 | return; | 17 | return; |
18 | } | 18 | } |
19 | delete wExtensions; | 19 | delete wExtensions; |
20 | timer = new QTimer( this ); | 20 | timer = new QTimer( this ); |
21 | connect( timer, SIGNAL(timeout()), this, SLOT(update())); | 21 | connect( timer, SIGNAL(timeout()), this, SLOT(update())); |
22 | timer->start( 1000, false ); | 22 | timer->start( 1000, false ); |
23 | } | 23 | } |
24 | 24 | ||
25 | /** | 25 | /** |
26 | * Updates the information about the wireless device. | 26 | * Updates the information about the wireless device. |
27 | */ | 27 | */ |
28 | void WlanInfoImp::update(){ | 28 | void WlanInfoImp::update(){ |
29 | WExtensions *wExtensions = new WExtensions(this->name()); | 29 | WExtensions *wExtensions = new WExtensions(this->name()); |
30 | if(!wExtensions->doesHaveWirelessExtensions()){ | 30 | if(!wExtensions->doesHaveWirelessExtensions()){ |
31 | qDebug("No extension"); | 31 | qDebug("No extension"); |
32 | delete wExtensions; | 32 | delete wExtensions; |
33 | timer->stop(); | 33 | timer->stop(); |
34 | return; | 34 | return; |
35 | } | 35 | } |
36 | essidLabel->setText(wExtensions->essid()); | 36 | essidLabel->setText(wExtensions->essid()); |
37 | apLabel->setText(wExtensions->ap()); | 37 | apLabel->setText(wExtensions->ap()); |
38 | stationLabel->setText(wExtensions->station()); | 38 | stationLabel->setText(wExtensions->station()); |
39 | modeLabel->setText(wExtensions->mode()); | 39 | modeLabel->setText(wExtensions->mode()); |
40 | freqLabel->setText(QString("%1 GHz").arg(wExtensions->frequency())); | 40 | channelLabel->setText(QString("%1").arg(wExtensions->channel())); |
41 | int signal = 0; | 41 | int signal = 0; |
42 | int noise = 0; | 42 | int noise = 0; |
43 | int quality = 0; | 43 | int quality = 0; |
44 | wExtensions->stats(signal, noise, quality); | 44 | wExtensions->stats(signal, noise, quality); |
45 | if(signalProgressBar->progress() != signal) | 45 | if(signalProgressBar->progress() != signal) |
46 | signalProgressBar->setProgress(signal); | 46 | signalProgressBar->setProgress(signal); |
47 | if(noiseProgressBar->progress() != noise) | 47 | if(noiseProgressBar->progress() != noise) |
48 | noiseProgressBar->setProgress(noise); | 48 | noiseProgressBar->setProgress(noise); |
49 | if(qualityProgressBar->progress() != quality) | 49 | if(qualityProgressBar->progress() != quality) |
50 | qualityProgressBar->setProgress(quality); | 50 | qualityProgressBar->setProgress(quality); |
51 | rateLabel->setText(QString("%1 Mb/s").arg(wExtensions->rate())); | 51 | rateLabel->setText(QString("%1 Mb/s").arg(wExtensions->rate())); |
52 | delete wExtensions; | 52 | delete wExtensions; |
53 | } | 53 | } |
54 | 54 | ||
55 | // infoimp.cpp | 55 | // infoimp.cpp |
56 | 56 | ||
diff --git a/noncore/net/networksetup/wlan/wextensions.cpp b/noncore/net/networksetup/wlan/wextensions.cpp index 6335ebc..16654bb 100644 --- a/noncore/net/networksetup/wlan/wextensions.cpp +++ b/noncore/net/networksetup/wlan/wextensions.cpp | |||
@@ -46,98 +46,121 @@ QString WExtensions::station(){ | |||
46 | return QString(); | 46 | return QString(); |
47 | const char* buffer[200]; | 47 | const char* buffer[200]; |
48 | iwr.u.data.pointer = (caddr_t) buffer; | 48 | iwr.u.data.pointer = (caddr_t) buffer; |
49 | iwr.u.data.length = IW_ESSID_MAX_SIZE; | 49 | iwr.u.data.length = IW_ESSID_MAX_SIZE; |
50 | iwr.u.data.flags = 0; | 50 | iwr.u.data.flags = 0; |
51 | if ( 0 == ioctl( fd, SIOCGIWNICKN, &iwr )){ | 51 | if ( 0 == ioctl( fd, SIOCGIWNICKN, &iwr )){ |
52 | iwr.u.data.pointer[(unsigned int) iwr.u.data.length-1] = '\0'; | 52 | iwr.u.data.pointer[(unsigned int) iwr.u.data.length-1] = '\0'; |
53 | return QString(iwr.u.data.pointer); | 53 | return QString(iwr.u.data.pointer); |
54 | } | 54 | } |
55 | return QString(); | 55 | return QString(); |
56 | } | 56 | } |
57 | 57 | ||
58 | /** | 58 | /** |
59 | * @return QString the essid of the host 802.11 access point. | 59 | * @return QString the essid of the host 802.11 access point. |
60 | */ | 60 | */ |
61 | QString WExtensions::essid(){ | 61 | QString WExtensions::essid(){ |
62 | if(!hasWirelessExtensions) | 62 | if(!hasWirelessExtensions) |
63 | return QString(); | 63 | return QString(); |
64 | if ( 0 == ioctl( fd, SIOCGIWESSID, &iwr )){ | 64 | if ( 0 == ioctl( fd, SIOCGIWESSID, &iwr )){ |
65 | iwr.u.essid.pointer[(unsigned int) iwr.u.essid.length-1] = '\0'; | 65 | iwr.u.essid.pointer[(unsigned int) iwr.u.essid.length-1] = '\0'; |
66 | return QString(iwr.u.essid.pointer); | 66 | return QString(iwr.u.essid.pointer); |
67 | } | 67 | } |
68 | return QString(); | 68 | return QString(); |
69 | } | 69 | } |
70 | 70 | ||
71 | /** | 71 | /** |
72 | * @return QString the mode of interface | 72 | * @return QString the mode of interface |
73 | */ | 73 | */ |
74 | QString WExtensions::mode(){ | 74 | QString WExtensions::mode(){ |
75 | if(!hasWirelessExtensions) | 75 | if(!hasWirelessExtensions) |
76 | return QString(); | 76 | return QString(); |
77 | if ( 0 == ioctl( fd, SIOCGIWMODE, &iwr ) ) | 77 | if ( 0 == ioctl( fd, SIOCGIWMODE, &iwr ) ) |
78 | return QString("%1").arg(iwr.u.mode == IW_MODE_ADHOC ? "Ad-Hoc" : "Managed"); | 78 | return QString("%1").arg(iwr.u.mode == IW_MODE_ADHOC ? "Ad-Hoc" : "Managed"); |
79 | return QString(); | 79 | return QString(); |
80 | } | 80 | } |
81 | 81 | ||
82 | /** | 82 | /** |
83 | * Get the frequency that the interface is running at. | 83 | * Get the frequency that the interface is running at. |
84 | * @return int the frequency that the interfacae is running at. | 84 | * @return int the frequency that the interfacae is running at. |
85 | */ | 85 | */ |
86 | double WExtensions::frequency(){ | 86 | double WExtensions::frequency(){ |
87 | if(!hasWirelessExtensions) | 87 | if(!hasWirelessExtensions) |
88 | return 0; | 88 | return 0; |
89 | if ( 0 == ioctl( fd, SIOCGIWFREQ, &iwr )) | 89 | if ( 0 == ioctl( fd, SIOCGIWFREQ, &iwr )) |
90 | return (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); | 90 | return (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); |
91 | return 0; | 91 | return 0; |
92 | } | 92 | } |
93 | 93 | ||
94 | /** | ||
95 | * Get the channel that the interface is running at. | ||
96 | * @return int the channel that the interfacae is running at. | ||
97 | */ | ||
98 | int WExtensions::channel(){ | ||
99 | if(!hasWirelessExtensions) | ||
100 | return 0; | ||
101 | if ( 0 != ioctl( fd, SIOCGIWFREQ, &iwr )) | ||
102 | return 0; | ||
103 | double num = (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); | ||
104 | double left = 2.401; | ||
105 | double right = 2.416; | ||
106 | for(int channel = 1; channel<= 15; channel++){ | ||
107 | if( num >= left && num <= right ) | ||
108 | return channel; | ||
109 | left += 0.005; | ||
110 | right += 0.005; | ||
111 | } | ||
112 | qDebug(QString("Unknown frequency: %1, returning -1 for the channel.").arg(num).latin1()); | ||
113 | return -1; | ||
114 | } | ||
115 | |||
94 | /*** | 116 | /*** |
95 | * Get the current rate that the card is transmiting at. | 117 | * Get the current rate that the card is transmiting at. |
118 | * @return double the rate, 0 if error. | ||
96 | */ | 119 | */ |
97 | double WExtensions::rate(){ | 120 | double WExtensions::rate(){ |
98 | if(!hasWirelessExtensions) | 121 | if(!hasWirelessExtensions) |
99 | return 0; | 122 | return 0; |
100 | if(0 == ioctl(fd, SIOCGIWRATE, &iwr)){ | 123 | if(0 == ioctl(fd, SIOCGIWRATE, &iwr)){ |
101 | return ((double)iwr.u.bitrate.value)/1000000; | 124 | return ((double)iwr.u.bitrate.value)/1000000; |
102 | } | 125 | } |
103 | return 0; | 126 | return 0; |
104 | } | 127 | } |
105 | 128 | ||
106 | 129 | ||
107 | /** | 130 | /** |
108 | * @return QString the AccessPoint that the interface is connected to. | 131 | * @return QString the AccessPoint that the interface is connected to. |
109 | */ | 132 | */ |
110 | QString WExtensions::ap(){ | 133 | QString WExtensions::ap(){ |
111 | if(!hasWirelessExtensions) | 134 | if(!hasWirelessExtensions) |
112 | return QString(); | 135 | return QString(); |
113 | if ( 0 == ioctl( fd, SIOCGIWAP, &iwr )){ | 136 | if ( 0 == ioctl( fd, SIOCGIWAP, &iwr )){ |
114 | QString ap; | 137 | QString ap; |
115 | ap = ap.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", | 138 | ap = ap.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", |
116 | iwr.u.ap_addr.sa_data[0]&0xff, | 139 | iwr.u.ap_addr.sa_data[0]&0xff, |
117 | iwr.u.ap_addr.sa_data[1]&0xff, | 140 | iwr.u.ap_addr.sa_data[1]&0xff, |
118 | iwr.u.ap_addr.sa_data[2]&0xff, | 141 | iwr.u.ap_addr.sa_data[2]&0xff, |
119 | iwr.u.ap_addr.sa_data[3]&0xff, | 142 | iwr.u.ap_addr.sa_data[3]&0xff, |
120 | iwr.u.ap_addr.sa_data[4]&0xff, | 143 | iwr.u.ap_addr.sa_data[4]&0xff, |
121 | iwr.u.ap_addr.sa_data[5]&0xff ); | 144 | iwr.u.ap_addr.sa_data[5]&0xff ); |
122 | return ap; | 145 | return ap; |
123 | } | 146 | } |
124 | else return QString(); | 147 | else return QString(); |
125 | } | 148 | } |
126 | 149 | ||
127 | /** | 150 | /** |
128 | * Get the stats for interfaces | 151 | * Get the stats for interfaces |
129 | * @param signal the signal strength of interface | 152 | * @param signal the signal strength of interface |
130 | * @param noise the noise level of the interface | 153 | * @param noise the noise level of the interface |
131 | * @param quality the quality level of the interface | 154 | * @param quality the quality level of the interface |
132 | * @return bool true if successfull | 155 | * @return bool true if successfull |
133 | */ | 156 | */ |
134 | bool WExtensions::stats(int &signal, int &noise, int &quality){ | 157 | bool WExtensions::stats(int &signal, int &noise, int &quality){ |
135 | // gather link quality from /proc/net/wireless | 158 | // gather link quality from /proc/net/wireless |
136 | if(!QFile::exists(PROCNETWIRELESS)) | 159 | if(!QFile::exists(PROCNETWIRELESS)) |
137 | return false; | 160 | return false; |
138 | 161 | ||
139 | char c; | 162 | char c; |
140 | QString status; | 163 | QString status; |
141 | QString name; | 164 | QString name; |
142 | 165 | ||
143 | QFile wfile( PROCNETWIRELESS ); | 166 | QFile wfile( PROCNETWIRELESS ); |
diff --git a/noncore/net/networksetup/wlan/wextensions.h b/noncore/net/networksetup/wlan/wextensions.h index 1565eb5..a89e33a 100644 --- a/noncore/net/networksetup/wlan/wextensions.h +++ b/noncore/net/networksetup/wlan/wextensions.h | |||
@@ -1,33 +1,34 @@ | |||
1 | #ifndef WEXTENSIONS_H | 1 | #ifndef WEXTENSIONS_H |
2 | #define WEXTENSIONS_H | 2 | #define WEXTENSIONS_H |
3 | 3 | ||
4 | #include <qstring.h> | 4 | #include <qstring.h> |
5 | 5 | ||
6 | #include <netinet/ip.h> | 6 | #include <netinet/ip.h> |
7 | #include <linux/wireless.h> | 7 | #include <linux/wireless.h> |
8 | 8 | ||
9 | class WExtensions { | 9 | class WExtensions { |
10 | 10 | ||
11 | public: | 11 | public: |
12 | WExtensions(QString interfaceName); | 12 | WExtensions(QString interfaceName); |
13 | QString getInterfaceName(){return interface;}; | 13 | QString getInterfaceName(){return interface;}; |
14 | bool doesHaveWirelessExtensions(){return hasWirelessExtensions;}; | 14 | bool doesHaveWirelessExtensions(){return hasWirelessExtensions;}; |
15 | QString station(); | 15 | QString station(); |
16 | QString essid(); | 16 | QString essid(); |
17 | QString mode(); | 17 | QString mode(); |
18 | double frequency(); | 18 | double frequency(); |
19 | int channel(); | ||
19 | double rate(); | 20 | double rate(); |
20 | QString ap(); | 21 | QString ap(); |
21 | bool stats( int &signal, int &noise, int &quality); | 22 | bool stats( int &signal, int &noise, int &quality); |
22 | 23 | ||
23 | private: | 24 | private: |
24 | bool hasWirelessExtensions; | 25 | bool hasWirelessExtensions; |
25 | QString interface; | 26 | QString interface; |
26 | 27 | ||
27 | // Used in we calls | 28 | // Used in we calls |
28 | struct iwreq iwr; | 29 | struct iwreq iwr; |
29 | int fd; | 30 | int fd; |
30 | 31 | ||
31 | }; | 32 | }; |
32 | 33 | ||
33 | #endif | 34 | #endif |
diff --git a/noncore/settings/networksettings/wlan/info.ui b/noncore/settings/networksettings/wlan/info.ui index 1e3e8b5..7a5bf0b 100644 --- a/noncore/settings/networksettings/wlan/info.ui +++ b/noncore/settings/networksettings/wlan/info.ui | |||
@@ -1,112 +1,112 @@ | |||
1 | <!DOCTYPE UI><UI> | 1 | <!DOCTYPE UI><UI> |
2 | <class>WlanInfo</class> | 2 | <class>WlanInfo</class> |
3 | <widget> | 3 | <widget> |
4 | <class>QWidget</class> | 4 | <class>QWidget</class> |
5 | <property stdset="1"> | 5 | <property stdset="1"> |
6 | <name>name</name> | 6 | <name>name</name> |
7 | <cstring>WlanInfo</cstring> | 7 | <cstring>WlanInfo</cstring> |
8 | </property> | 8 | </property> |
9 | <property stdset="1"> | 9 | <property stdset="1"> |
10 | <name>geometry</name> | 10 | <name>geometry</name> |
11 | <rect> | 11 | <rect> |
12 | <x>0</x> | 12 | <x>0</x> |
13 | <y>0</y> | 13 | <y>0</y> |
14 | <width>242</width> | 14 | <width>238</width> |
15 | <height>316</height> | 15 | <height>316</height> |
16 | </rect> | 16 | </rect> |
17 | </property> | 17 | </property> |
18 | <property stdset="1"> | 18 | <property stdset="1"> |
19 | <name>caption</name> | 19 | <name>caption</name> |
20 | <string>Interface Information</string> | 20 | <string>Interface Information</string> |
21 | </property> | 21 | </property> |
22 | <vbox> | 22 | <vbox> |
23 | <property stdset="1"> | 23 | <property stdset="1"> |
24 | <name>margin</name> | 24 | <name>margin</name> |
25 | <number>0</number> | 25 | <number>0</number> |
26 | </property> | 26 | </property> |
27 | <property stdset="1"> | 27 | <property stdset="1"> |
28 | <name>spacing</name> | 28 | <name>spacing</name> |
29 | <number>0</number> | 29 | <number>0</number> |
30 | </property> | 30 | </property> |
31 | <widget> | 31 | <widget> |
32 | <class>QTabWidget</class> | 32 | <class>QTabWidget</class> |
33 | <property stdset="1"> | 33 | <property stdset="1"> |
34 | <name>name</name> | 34 | <name>name</name> |
35 | <cstring>tabWidget</cstring> | 35 | <cstring>tabWidget</cstring> |
36 | </property> | 36 | </property> |
37 | <widget> | 37 | <widget> |
38 | <class>QWidget</class> | 38 | <class>QWidget</class> |
39 | <property stdset="1"> | 39 | <property stdset="1"> |
40 | <name>name</name> | 40 | <name>name</name> |
41 | <cstring>Widget2</cstring> | 41 | <cstring>Widget2</cstring> |
42 | </property> | 42 | </property> |
43 | <attribute> | 43 | <attribute> |
44 | <name>title</name> | 44 | <name>title</name> |
45 | <string>802.11b</string> | 45 | <string>802.11b</string> |
46 | </attribute> | 46 | </attribute> |
47 | <grid> | 47 | <grid> |
48 | <property stdset="1"> | 48 | <property stdset="1"> |
49 | <name>margin</name> | 49 | <name>margin</name> |
50 | <number>11</number> | 50 | <number>11</number> |
51 | </property> | 51 | </property> |
52 | <property stdset="1"> | 52 | <property stdset="1"> |
53 | <name>spacing</name> | 53 | <name>spacing</name> |
54 | <number>6</number> | 54 | <number>6</number> |
55 | </property> | 55 | </property> |
56 | <widget row="3" column="0" > | 56 | <widget row="3" column="0" > |
57 | <class>QLabel</class> | 57 | <class>QLabel</class> |
58 | <property stdset="1"> | 58 | <property stdset="1"> |
59 | <name>name</name> | 59 | <name>name</name> |
60 | <cstring>TextLabel4</cstring> | 60 | <cstring>TextLabel4</cstring> |
61 | </property> | 61 | </property> |
62 | <property stdset="1"> | 62 | <property stdset="1"> |
63 | <name>text</name> | 63 | <name>text</name> |
64 | <string>Frequency</string> | 64 | <string>Channel</string> |
65 | </property> | 65 | </property> |
66 | </widget> | 66 | </widget> |
67 | <widget row="2" column="0" > | 67 | <widget row="2" column="0" > |
68 | <class>QLabel</class> | 68 | <class>QLabel</class> |
69 | <property stdset="1"> | 69 | <property stdset="1"> |
70 | <name>name</name> | 70 | <name>name</name> |
71 | <cstring>TextLabel3</cstring> | 71 | <cstring>TextLabel3</cstring> |
72 | </property> | 72 | </property> |
73 | <property stdset="1"> | 73 | <property stdset="1"> |
74 | <name>text</name> | 74 | <name>text</name> |
75 | <string>Mode</string> | 75 | <string>Mode</string> |
76 | </property> | 76 | </property> |
77 | </widget> | 77 | </widget> |
78 | <widget row="1" column="0" > | 78 | <widget row="1" column="0" > |
79 | <class>QLabel</class> | 79 | <class>QLabel</class> |
80 | <property stdset="1"> | 80 | <property stdset="1"> |
81 | <name>name</name> | 81 | <name>name</name> |
82 | <cstring>TextLabel2</cstring> | 82 | <cstring>TextLabel2</cstring> |
83 | </property> | 83 | </property> |
84 | <property stdset="1"> | 84 | <property stdset="1"> |
85 | <name>text</name> | 85 | <name>text</name> |
86 | <string>ESSID</string> | 86 | <string>ESSID</string> |
87 | </property> | 87 | </property> |
88 | </widget> | 88 | </widget> |
89 | <widget row="0" column="0" > | 89 | <widget row="0" column="0" > |
90 | <class>QLabel</class> | 90 | <class>QLabel</class> |
91 | <property stdset="1"> | 91 | <property stdset="1"> |
92 | <name>name</name> | 92 | <name>name</name> |
93 | <cstring>TextLabel1</cstring> | 93 | <cstring>TextLabel1</cstring> |
94 | </property> | 94 | </property> |
95 | <property stdset="1"> | 95 | <property stdset="1"> |
96 | <name>text</name> | 96 | <name>text</name> |
97 | <string>Station</string> | 97 | <string>Station</string> |
98 | </property> | 98 | </property> |
99 | </widget> | 99 | </widget> |
100 | <widget row="4" column="0" > | 100 | <widget row="4" column="0" > |
101 | <class>QLabel</class> | 101 | <class>QLabel</class> |
102 | <property stdset="1"> | 102 | <property stdset="1"> |
103 | <name>name</name> | 103 | <name>name</name> |
104 | <cstring>TextLabel9</cstring> | 104 | <cstring>TextLabel9</cstring> |
105 | </property> | 105 | </property> |
106 | <property stdset="1"> | 106 | <property stdset="1"> |
107 | <name>text</name> | 107 | <name>text</name> |
108 | <string>AP</string> | 108 | <string>AP</string> |
109 | </property> | 109 | </property> |
110 | </widget> | 110 | </widget> |
111 | <widget row="4" column="1" > | 111 | <widget row="4" column="1" > |
112 | <class>QLabel</class> | 112 | <class>QLabel</class> |
@@ -127,97 +127,97 @@ | |||
127 | <class>QLabel</class> | 127 | <class>QLabel</class> |
128 | <property stdset="1"> | 128 | <property stdset="1"> |
129 | <name>name</name> | 129 | <name>name</name> |
130 | <cstring>modeLabel</cstring> | 130 | <cstring>modeLabel</cstring> |
131 | </property> | 131 | </property> |
132 | <property stdset="1"> | 132 | <property stdset="1"> |
133 | <name>frameShape</name> | 133 | <name>frameShape</name> |
134 | <enum>Panel</enum> | 134 | <enum>Panel</enum> |
135 | </property> | 135 | </property> |
136 | <property stdset="1"> | 136 | <property stdset="1"> |
137 | <name>frameShadow</name> | 137 | <name>frameShadow</name> |
138 | <enum>Sunken</enum> | 138 | <enum>Sunken</enum> |
139 | </property> | 139 | </property> |
140 | </widget> | 140 | </widget> |
141 | <widget row="1" column="1" > | 141 | <widget row="1" column="1" > |
142 | <class>QLabel</class> | 142 | <class>QLabel</class> |
143 | <property stdset="1"> | 143 | <property stdset="1"> |
144 | <name>name</name> | 144 | <name>name</name> |
145 | <cstring>essidLabel</cstring> | 145 | <cstring>essidLabel</cstring> |
146 | </property> | 146 | </property> |
147 | <property stdset="1"> | 147 | <property stdset="1"> |
148 | <name>frameShape</name> | 148 | <name>frameShape</name> |
149 | <enum>Panel</enum> | 149 | <enum>Panel</enum> |
150 | </property> | 150 | </property> |
151 | <property stdset="1"> | 151 | <property stdset="1"> |
152 | <name>frameShadow</name> | 152 | <name>frameShadow</name> |
153 | <enum>Sunken</enum> | 153 | <enum>Sunken</enum> |
154 | </property> | 154 | </property> |
155 | </widget> | 155 | </widget> |
156 | <widget row="0" column="1" > | 156 | <widget row="0" column="1" > |
157 | <class>QLabel</class> | 157 | <class>QLabel</class> |
158 | <property stdset="1"> | 158 | <property stdset="1"> |
159 | <name>name</name> | 159 | <name>name</name> |
160 | <cstring>stationLabel</cstring> | 160 | <cstring>stationLabel</cstring> |
161 | </property> | 161 | </property> |
162 | <property stdset="1"> | 162 | <property stdset="1"> |
163 | <name>frameShape</name> | 163 | <name>frameShape</name> |
164 | <enum>Panel</enum> | 164 | <enum>Panel</enum> |
165 | </property> | 165 | </property> |
166 | <property stdset="1"> | 166 | <property stdset="1"> |
167 | <name>frameShadow</name> | 167 | <name>frameShadow</name> |
168 | <enum>Sunken</enum> | 168 | <enum>Sunken</enum> |
169 | </property> | 169 | </property> |
170 | </widget> | 170 | </widget> |
171 | <widget row="3" column="1" > | 171 | <widget row="3" column="1" > |
172 | <class>QLabel</class> | 172 | <class>QLabel</class> |
173 | <property stdset="1"> | 173 | <property stdset="1"> |
174 | <name>name</name> | 174 | <name>name</name> |
175 | <cstring>freqLabel</cstring> | 175 | <cstring>channelLabel</cstring> |
176 | </property> | 176 | </property> |
177 | <property stdset="1"> | 177 | <property stdset="1"> |
178 | <name>frameShape</name> | 178 | <name>frameShape</name> |
179 | <enum>Panel</enum> | 179 | <enum>Panel</enum> |
180 | </property> | 180 | </property> |
181 | <property stdset="1"> | 181 | <property stdset="1"> |
182 | <name>frameShadow</name> | 182 | <name>frameShadow</name> |
183 | <enum>Sunken</enum> | 183 | <enum>Sunken</enum> |
184 | </property> | 184 | </property> |
185 | </widget> | 185 | </widget> |
186 | <spacer row="9" column="1" > | 186 | <spacer row="9" column="1" > |
187 | <property> | 187 | <property> |
188 | <name>name</name> | 188 | <name>name</name> |
189 | <cstring>Spacer7</cstring> | 189 | <cstring>Spacer7</cstring> |
190 | </property> | 190 | </property> |
191 | <property stdset="1"> | 191 | <property stdset="1"> |
192 | <name>orientation</name> | 192 | <name>orientation</name> |
193 | <enum>Vertical</enum> | 193 | <enum>Vertical</enum> |
194 | </property> | 194 | </property> |
195 | <property stdset="1"> | 195 | <property stdset="1"> |
196 | <name>sizeType</name> | 196 | <name>sizeType</name> |
197 | <enum>Expanding</enum> | 197 | <enum>Expanding</enum> |
198 | </property> | 198 | </property> |
199 | <property> | 199 | <property> |
200 | <name>sizeHint</name> | 200 | <name>sizeHint</name> |
201 | <size> | 201 | <size> |
202 | <width>20</width> | 202 | <width>20</width> |
203 | <height>20</height> | 203 | <height>20</height> |
204 | </size> | 204 | </size> |
205 | </property> | 205 | </property> |
206 | </spacer> | 206 | </spacer> |
207 | <widget row="5" column="1" > | 207 | <widget row="5" column="1" > |
208 | <class>QProgressBar</class> | 208 | <class>QProgressBar</class> |
209 | <property stdset="1"> | 209 | <property stdset="1"> |
210 | <name>name</name> | 210 | <name>name</name> |
211 | <cstring>signalProgressBar</cstring> | 211 | <cstring>signalProgressBar</cstring> |
212 | </property> | 212 | </property> |
213 | </widget> | 213 | </widget> |
214 | <widget row="6" column="1" > | 214 | <widget row="6" column="1" > |
215 | <class>QProgressBar</class> | 215 | <class>QProgressBar</class> |
216 | <property stdset="1"> | 216 | <property stdset="1"> |
217 | <name>name</name> | 217 | <name>name</name> |
218 | <cstring>noiseProgressBar</cstring> | 218 | <cstring>noiseProgressBar</cstring> |
219 | </property> | 219 | </property> |
220 | </widget> | 220 | </widget> |
221 | <widget row="7" column="1" > | 221 | <widget row="7" column="1" > |
222 | <class>QProgressBar</class> | 222 | <class>QProgressBar</class> |
223 | <property stdset="1"> | 223 | <property stdset="1"> |
diff --git a/noncore/settings/networksettings/wlan/infoimp.cpp b/noncore/settings/networksettings/wlan/infoimp.cpp index 6d3e167..bd56678 100644 --- a/noncore/settings/networksettings/wlan/infoimp.cpp +++ b/noncore/settings/networksettings/wlan/infoimp.cpp | |||
@@ -1,56 +1,56 @@ | |||
1 | #include "infoimp.h" | 1 | #include "infoimp.h" |
2 | #include "wextensions.h" | 2 | #include "wextensions.h" |
3 | 3 | ||
4 | #include <qtimer.h> | 4 | #include <qtimer.h> |
5 | #include <qprogressbar.h> | 5 | #include <qprogressbar.h> |
6 | #include <qlabel.h> | 6 | #include <qlabel.h> |
7 | 7 | ||
8 | /** | 8 | /** |
9 | * Constructor. If wireless extensions are enabled on device name then | 9 | * Constructor. If wireless extensions are enabled on device name then |
10 | * start a timer that every second will update the information. | 10 | * start a timer that every second will update the information. |
11 | */ | 11 | */ |
12 | WlanInfoImp::WlanInfoImp( QWidget* parent, const char* name, WFlags fl): WlanInfo(parent, name, fl){ | 12 | WlanInfoImp::WlanInfoImp( QWidget* parent, const char* name, WFlags fl): WlanInfo(parent, name, fl){ |
13 | WExtensions *wExtensions = new WExtensions(name); | 13 | WExtensions *wExtensions = new WExtensions(name); |
14 | if(!wExtensions->doesHaveWirelessExtensions()){ | 14 | if(!wExtensions->doesHaveWirelessExtensions()){ |
15 | delete wExtensions; | 15 | delete wExtensions; |
16 | qDebug("WlanInfoImp::No wireless extension"); | 16 | qDebug("WlanInfoImp::No wireless extension"); |
17 | return; | 17 | return; |
18 | } | 18 | } |
19 | delete wExtensions; | 19 | delete wExtensions; |
20 | timer = new QTimer( this ); | 20 | timer = new QTimer( this ); |
21 | connect( timer, SIGNAL(timeout()), this, SLOT(update())); | 21 | connect( timer, SIGNAL(timeout()), this, SLOT(update())); |
22 | timer->start( 1000, false ); | 22 | timer->start( 1000, false ); |
23 | } | 23 | } |
24 | 24 | ||
25 | /** | 25 | /** |
26 | * Updates the information about the wireless device. | 26 | * Updates the information about the wireless device. |
27 | */ | 27 | */ |
28 | void WlanInfoImp::update(){ | 28 | void WlanInfoImp::update(){ |
29 | WExtensions *wExtensions = new WExtensions(this->name()); | 29 | WExtensions *wExtensions = new WExtensions(this->name()); |
30 | if(!wExtensions->doesHaveWirelessExtensions()){ | 30 | if(!wExtensions->doesHaveWirelessExtensions()){ |
31 | qDebug("No extension"); | 31 | qDebug("No extension"); |
32 | delete wExtensions; | 32 | delete wExtensions; |
33 | timer->stop(); | 33 | timer->stop(); |
34 | return; | 34 | return; |
35 | } | 35 | } |
36 | essidLabel->setText(wExtensions->essid()); | 36 | essidLabel->setText(wExtensions->essid()); |
37 | apLabel->setText(wExtensions->ap()); | 37 | apLabel->setText(wExtensions->ap()); |
38 | stationLabel->setText(wExtensions->station()); | 38 | stationLabel->setText(wExtensions->station()); |
39 | modeLabel->setText(wExtensions->mode()); | 39 | modeLabel->setText(wExtensions->mode()); |
40 | freqLabel->setText(QString("%1 GHz").arg(wExtensions->frequency())); | 40 | channelLabel->setText(QString("%1").arg(wExtensions->channel())); |
41 | int signal = 0; | 41 | int signal = 0; |
42 | int noise = 0; | 42 | int noise = 0; |
43 | int quality = 0; | 43 | int quality = 0; |
44 | wExtensions->stats(signal, noise, quality); | 44 | wExtensions->stats(signal, noise, quality); |
45 | if(signalProgressBar->progress() != signal) | 45 | if(signalProgressBar->progress() != signal) |
46 | signalProgressBar->setProgress(signal); | 46 | signalProgressBar->setProgress(signal); |
47 | if(noiseProgressBar->progress() != noise) | 47 | if(noiseProgressBar->progress() != noise) |
48 | noiseProgressBar->setProgress(noise); | 48 | noiseProgressBar->setProgress(noise); |
49 | if(qualityProgressBar->progress() != quality) | 49 | if(qualityProgressBar->progress() != quality) |
50 | qualityProgressBar->setProgress(quality); | 50 | qualityProgressBar->setProgress(quality); |
51 | rateLabel->setText(QString("%1 Mb/s").arg(wExtensions->rate())); | 51 | rateLabel->setText(QString("%1 Mb/s").arg(wExtensions->rate())); |
52 | delete wExtensions; | 52 | delete wExtensions; |
53 | } | 53 | } |
54 | 54 | ||
55 | // infoimp.cpp | 55 | // infoimp.cpp |
56 | 56 | ||
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 | |||
@@ -46,98 +46,121 @@ QString WExtensions::station(){ | |||
46 | return QString(); | 46 | return QString(); |
47 | const char* buffer[200]; | 47 | const char* buffer[200]; |
48 | iwr.u.data.pointer = (caddr_t) buffer; | 48 | iwr.u.data.pointer = (caddr_t) buffer; |
49 | iwr.u.data.length = IW_ESSID_MAX_SIZE; | 49 | iwr.u.data.length = IW_ESSID_MAX_SIZE; |
50 | iwr.u.data.flags = 0; | 50 | iwr.u.data.flags = 0; |
51 | if ( 0 == ioctl( fd, SIOCGIWNICKN, &iwr )){ | 51 | if ( 0 == ioctl( fd, SIOCGIWNICKN, &iwr )){ |
52 | iwr.u.data.pointer[(unsigned int) iwr.u.data.length-1] = '\0'; | 52 | iwr.u.data.pointer[(unsigned int) iwr.u.data.length-1] = '\0'; |
53 | return QString(iwr.u.data.pointer); | 53 | return QString(iwr.u.data.pointer); |
54 | } | 54 | } |
55 | return QString(); | 55 | return QString(); |
56 | } | 56 | } |
57 | 57 | ||
58 | /** | 58 | /** |
59 | * @return QString the essid of the host 802.11 access point. | 59 | * @return QString the essid of the host 802.11 access point. |
60 | */ | 60 | */ |
61 | QString WExtensions::essid(){ | 61 | QString WExtensions::essid(){ |
62 | if(!hasWirelessExtensions) | 62 | if(!hasWirelessExtensions) |
63 | return QString(); | 63 | return QString(); |
64 | if ( 0 == ioctl( fd, SIOCGIWESSID, &iwr )){ | 64 | if ( 0 == ioctl( fd, SIOCGIWESSID, &iwr )){ |
65 | iwr.u.essid.pointer[(unsigned int) iwr.u.essid.length-1] = '\0'; | 65 | iwr.u.essid.pointer[(unsigned int) iwr.u.essid.length-1] = '\0'; |
66 | return QString(iwr.u.essid.pointer); | 66 | return QString(iwr.u.essid.pointer); |
67 | } | 67 | } |
68 | return QString(); | 68 | return QString(); |
69 | } | 69 | } |
70 | 70 | ||
71 | /** | 71 | /** |
72 | * @return QString the mode of interface | 72 | * @return QString the mode of interface |
73 | */ | 73 | */ |
74 | QString WExtensions::mode(){ | 74 | QString WExtensions::mode(){ |
75 | if(!hasWirelessExtensions) | 75 | if(!hasWirelessExtensions) |
76 | return QString(); | 76 | return QString(); |
77 | if ( 0 == ioctl( fd, SIOCGIWMODE, &iwr ) ) | 77 | if ( 0 == ioctl( fd, SIOCGIWMODE, &iwr ) ) |
78 | return QString("%1").arg(iwr.u.mode == IW_MODE_ADHOC ? "Ad-Hoc" : "Managed"); | 78 | return QString("%1").arg(iwr.u.mode == IW_MODE_ADHOC ? "Ad-Hoc" : "Managed"); |
79 | return QString(); | 79 | return QString(); |
80 | } | 80 | } |
81 | 81 | ||
82 | /** | 82 | /** |
83 | * Get the frequency that the interface is running at. | 83 | * Get the frequency that the interface is running at. |
84 | * @return int the frequency that the interfacae is running at. | 84 | * @return int the frequency that the interfacae is running at. |
85 | */ | 85 | */ |
86 | double WExtensions::frequency(){ | 86 | double WExtensions::frequency(){ |
87 | if(!hasWirelessExtensions) | 87 | if(!hasWirelessExtensions) |
88 | return 0; | 88 | return 0; |
89 | if ( 0 == ioctl( fd, SIOCGIWFREQ, &iwr )) | 89 | if ( 0 == ioctl( fd, SIOCGIWFREQ, &iwr )) |
90 | return (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); | 90 | return (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); |
91 | return 0; | 91 | return 0; |
92 | } | 92 | } |
93 | 93 | ||
94 | /** | ||
95 | * Get the channel that the interface is running at. | ||
96 | * @return int the channel that the interfacae is running at. | ||
97 | */ | ||
98 | int WExtensions::channel(){ | ||
99 | if(!hasWirelessExtensions) | ||
100 | return 0; | ||
101 | if ( 0 != ioctl( fd, SIOCGIWFREQ, &iwr )) | ||
102 | return 0; | ||
103 | double num = (double( iwr.u.freq.m ) * pow( 10, iwr.u.freq.e ) / 1000000000); | ||
104 | double left = 2.401; | ||
105 | double right = 2.416; | ||
106 | for(int channel = 1; channel<= 15; channel++){ | ||
107 | if( num >= left && num <= right ) | ||
108 | return channel; | ||
109 | left += 0.005; | ||
110 | right += 0.005; | ||
111 | } | ||
112 | qDebug(QString("Unknown frequency: %1, returning -1 for the channel.").arg(num).latin1()); | ||
113 | return -1; | ||
114 | } | ||
115 | |||
94 | /*** | 116 | /*** |
95 | * Get the current rate that the card is transmiting at. | 117 | * Get the current rate that the card is transmiting at. |
118 | * @return double the rate, 0 if error. | ||
96 | */ | 119 | */ |
97 | double WExtensions::rate(){ | 120 | double WExtensions::rate(){ |
98 | if(!hasWirelessExtensions) | 121 | if(!hasWirelessExtensions) |
99 | return 0; | 122 | return 0; |
100 | if(0 == ioctl(fd, SIOCGIWRATE, &iwr)){ | 123 | if(0 == ioctl(fd, SIOCGIWRATE, &iwr)){ |
101 | return ((double)iwr.u.bitrate.value)/1000000; | 124 | return ((double)iwr.u.bitrate.value)/1000000; |
102 | } | 125 | } |
103 | return 0; | 126 | return 0; |
104 | } | 127 | } |
105 | 128 | ||
106 | 129 | ||
107 | /** | 130 | /** |
108 | * @return QString the AccessPoint that the interface is connected to. | 131 | * @return QString the AccessPoint that the interface is connected to. |
109 | */ | 132 | */ |
110 | QString WExtensions::ap(){ | 133 | QString WExtensions::ap(){ |
111 | if(!hasWirelessExtensions) | 134 | if(!hasWirelessExtensions) |
112 | return QString(); | 135 | return QString(); |
113 | if ( 0 == ioctl( fd, SIOCGIWAP, &iwr )){ | 136 | if ( 0 == ioctl( fd, SIOCGIWAP, &iwr )){ |
114 | QString ap; | 137 | QString ap; |
115 | ap = ap.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", | 138 | ap = ap.sprintf( "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X", |
116 | iwr.u.ap_addr.sa_data[0]&0xff, | 139 | iwr.u.ap_addr.sa_data[0]&0xff, |
117 | iwr.u.ap_addr.sa_data[1]&0xff, | 140 | iwr.u.ap_addr.sa_data[1]&0xff, |
118 | iwr.u.ap_addr.sa_data[2]&0xff, | 141 | iwr.u.ap_addr.sa_data[2]&0xff, |
119 | iwr.u.ap_addr.sa_data[3]&0xff, | 142 | iwr.u.ap_addr.sa_data[3]&0xff, |
120 | iwr.u.ap_addr.sa_data[4]&0xff, | 143 | iwr.u.ap_addr.sa_data[4]&0xff, |
121 | iwr.u.ap_addr.sa_data[5]&0xff ); | 144 | iwr.u.ap_addr.sa_data[5]&0xff ); |
122 | return ap; | 145 | return ap; |
123 | } | 146 | } |
124 | else return QString(); | 147 | else return QString(); |
125 | } | 148 | } |
126 | 149 | ||
127 | /** | 150 | /** |
128 | * Get the stats for interfaces | 151 | * Get the stats for interfaces |
129 | * @param signal the signal strength of interface | 152 | * @param signal the signal strength of interface |
130 | * @param noise the noise level of the interface | 153 | * @param noise the noise level of the interface |
131 | * @param quality the quality level of the interface | 154 | * @param quality the quality level of the interface |
132 | * @return bool true if successfull | 155 | * @return bool true if successfull |
133 | */ | 156 | */ |
134 | bool WExtensions::stats(int &signal, int &noise, int &quality){ | 157 | bool WExtensions::stats(int &signal, int &noise, int &quality){ |
135 | // gather link quality from /proc/net/wireless | 158 | // gather link quality from /proc/net/wireless |
136 | if(!QFile::exists(PROCNETWIRELESS)) | 159 | if(!QFile::exists(PROCNETWIRELESS)) |
137 | return false; | 160 | return false; |
138 | 161 | ||
139 | char c; | 162 | char c; |
140 | QString status; | 163 | QString status; |
141 | QString name; | 164 | QString name; |
142 | 165 | ||
143 | QFile wfile( PROCNETWIRELESS ); | 166 | QFile wfile( PROCNETWIRELESS ); |
diff --git a/noncore/settings/networksettings/wlan/wextensions.h b/noncore/settings/networksettings/wlan/wextensions.h index 1565eb5..a89e33a 100644 --- a/noncore/settings/networksettings/wlan/wextensions.h +++ b/noncore/settings/networksettings/wlan/wextensions.h | |||
@@ -1,33 +1,34 @@ | |||
1 | #ifndef WEXTENSIONS_H | 1 | #ifndef WEXTENSIONS_H |
2 | #define WEXTENSIONS_H | 2 | #define WEXTENSIONS_H |
3 | 3 | ||
4 | #include <qstring.h> | 4 | #include <qstring.h> |
5 | 5 | ||
6 | #include <netinet/ip.h> | 6 | #include <netinet/ip.h> |
7 | #include <linux/wireless.h> | 7 | #include <linux/wireless.h> |
8 | 8 | ||
9 | class WExtensions { | 9 | class WExtensions { |
10 | 10 | ||
11 | public: | 11 | public: |
12 | WExtensions(QString interfaceName); | 12 | WExtensions(QString interfaceName); |
13 | QString getInterfaceName(){return interface;}; | 13 | QString getInterfaceName(){return interface;}; |
14 | bool doesHaveWirelessExtensions(){return hasWirelessExtensions;}; | 14 | bool doesHaveWirelessExtensions(){return hasWirelessExtensions;}; |
15 | QString station(); | 15 | QString station(); |
16 | QString essid(); | 16 | QString essid(); |
17 | QString mode(); | 17 | QString mode(); |
18 | double frequency(); | 18 | double frequency(); |
19 | int channel(); | ||
19 | double rate(); | 20 | double rate(); |
20 | QString ap(); | 21 | QString ap(); |
21 | bool stats( int &signal, int &noise, int &quality); | 22 | bool stats( int &signal, int &noise, int &quality); |
22 | 23 | ||
23 | private: | 24 | private: |
24 | bool hasWirelessExtensions; | 25 | bool hasWirelessExtensions; |
25 | QString interface; | 26 | QString interface; |
26 | 27 | ||
27 | // Used in we calls | 28 | // Used in we calls |
28 | struct iwreq iwr; | 29 | struct iwreq iwr; |
29 | int fd; | 30 | int fd; |
30 | 31 | ||
31 | }; | 32 | }; |
32 | 33 | ||
33 | #endif | 34 | #endif |