@@ -97,7 +97,9 @@ unsigned long HSVtoHEX( float hue, float sat, float value )
97
97
return (ob <<16 ) | (og <<8 ) | ora ;
98
98
}
99
99
100
- int GetQuality ( const char * interface )
100
+ int first = 0 ;
101
+
102
+ int GetQuality ( const char * interface , int * noise )
101
103
{
102
104
int sockfd ;
103
105
struct iw_statistics stats ;
@@ -115,25 +117,31 @@ int GetQuality( const char * interface )
115
117
116
118
/* Any old socket will do, and a datagram socket is pretty cheap */
117
119
if ((sockfd = socket (AF_INET , SOCK_DGRAM , 0 )) == -1 ) {
118
- perror ("Could not create simple datagram socket" );
120
+ if ( first ) perror ("Could not create simple datagram socket" );
121
+ first = 0 ;
119
122
//exit(EXIT_FAILURE);
120
123
return -1 ;
121
124
}
122
125
123
126
/* Perform the ioctl */
124
127
if (ioctl (sockfd , SIOCGIWSTATS , & req ) == -1 ) {
125
- perror ("Error performing SIOCGIWSTATS" );
128
+ if ( first ) perror ("Error performing SIOCGIWSTATS" );
129
+ first = 0 ;
126
130
close (sockfd );
127
131
return -1 ;
128
132
}
129
133
130
134
close (sockfd );
131
135
132
- return stats .qual .level ;
136
+ first = 0 ;
137
+ if ( noise ) * noise = -256 + stats .qual .noise ;
138
+
139
+ return -256 + stats .qual .level ;
133
140
}
134
141
135
- int min = 5800 ;
136
- int max = 6600 ;
142
+ #define TITER 30
143
+ double min = -90 ;
144
+ double max = -50 ;
137
145
138
146
int get_color ( int nr )
139
147
{
@@ -146,7 +154,7 @@ int get_color( int nr )
146
154
}
147
155
148
156
#define POWERHISTORY 1024
149
- int powers [POWERHISTORY ];
157
+ double powers [POWERHISTORY ];
150
158
short screenx , screeny ;
151
159
152
160
int main ( int argc , char * * argv )
@@ -184,21 +192,28 @@ int main( int argc, char ** argv )
184
192
max = atoi ( argv [4 ] );
185
193
}
186
194
187
- printf ( "MIN: %d / MAX: %d \n" , min , max );
195
+ printf ( "MIN: %f / MAX: %f \n" , min , max );
188
196
189
197
CNFGBGColor = 0x800000 ;
190
198
CNFGDialogColor = 0x444444 ;
191
199
CNFGSetup ( "WifiRX" , 640 , 480 );
192
200
193
201
while (1 )
194
202
{
195
- int i , j = 0 ;
203
+ int i ;
204
+ double j = 0 ;
205
+ int noise ;
206
+ double noisetot = 0 ;
207
+ first = 1 ;
196
208
for ( i = 0 ; i < 30 ; i ++ )
197
209
{
198
- j += GetQuality ( argv [1 ] );
210
+ j += GetQuality ( argv [1 ], & noise );
211
+ noisetot += noise ;
199
212
usleep (2000 );
200
213
}
201
- printf ( "%d\n" , j );
214
+ j /=TITER ;
215
+ noise /=TITER ;
216
+ printf ( "%4.1f %4.1f\n" , j , noisetot );
202
217
powers [pl ] = j ;
203
218
pl ++ ;
204
219
if ( pl >= POWERHISTORY ) pl = 0 ;
@@ -229,7 +244,7 @@ int main( int argc, char ** argv )
229
244
while ( k < 0 )
230
245
k += POWERHISTORY ;
231
246
CNFGColor ( get_color ( powers [k ] ) );
232
- CNFGTackSegment ( i , screeny , i , screeny - powers [k ]/ 30 );
247
+ CNFGTackSegment ( i , 0 , i , - ( powers [k ]+ 20 ) * ( screeny /( 100.0 - 20 )) );
233
248
}
234
249
CNFGColor ( 0xffffff );
235
250
0 commit comments