1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#include "cprecomp.h"
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59void zfLedCtrlType1(zdev_t* dev)
60{
61 u16_t i;
62 u32_t ton, toff, tmp, period;
63 zmw_get_wlan_dev(dev);
64
65 for (i=0; i<ZM_MAX_LED_NUMBER; i++)
66 {
67 if (zfStaIsConnected(dev) != TRUE)
68 {
69
70 ton = ((wd->ledStruct.ledMode[i] & 0xf00) >> 8) * 5;
71 toff = ((wd->ledStruct.ledMode[i] & 0xf000) >> 12) * 5;
72
73 if ((ton + toff) != 0)
74 {
75 tmp = wd->ledStruct.counter / (ton+toff);
76 tmp = wd->ledStruct.counter - (tmp * (ton+toff));
77 if (tmp < ton)
78 {
79 zfHpLedCtrl(dev, i, 1);
80 }
81 else
82 {
83 zfHpLedCtrl(dev, i, 0);
84 }
85 }
86 }
87 else
88 {
89 if ((zfPowerSavingMgrIsSleeping(dev)) && ((wd->ledStruct.ledMode[i] & 0x8) == 0))
90 {
91 zfHpLedCtrl(dev, i, 0);
92 }
93 else
94 {
95
96 if ((wd->ledStruct.ledMode[i] & 0x40) == 0)
97 {
98 if ((wd->ledStruct.counter & 1) == 0)
99 {
100 zfHpLedCtrl(dev, i, (wd->ledStruct.ledMode[i] & 0x10) >> 4);
101 }
102 else
103 {
104 if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
105 {
106 wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
107 if ((wd->ledStruct.ledMode[i] & 0x20) != 0)
108 {
109 zfHpLedCtrl(dev, i, ((wd->ledStruct.ledMode[i] & 0x10) >> 4)^1);
110 }
111 }
112 }
113 }
114 else
115 {
116 period = 5 * (1 << ((wd->ledStruct.ledMode[i] & 0x30) >> 4));
117 tmp = wd->ledStruct.counter / (period*2);
118 tmp = wd->ledStruct.counter - (tmp * (period*2));
119 if (tmp < period)
120 {
121 if ((wd->ledStruct.counter & 1) == 0)
122 {
123 zfHpLedCtrl(dev, i, 0);
124 }
125 else
126 {
127 if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
128 {
129 wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
130 zfHpLedCtrl(dev, i, 1);
131 }
132 }
133 }
134 else
135 {
136 if ((wd->ledStruct.counter & 1) == 0)
137 {
138 zfHpLedCtrl(dev, i, 1);
139 }
140 else
141 {
142 if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
143 {
144 wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
145 zfHpLedCtrl(dev, i, 0);
146 }
147 }
148 }
149 }
150 }
151 }
152 }
153}
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186void zfLedCtrlType2_scan(zdev_t* dev);
187
188void zfLedCtrlType2(zdev_t* dev)
189{
190 u32_t ton, toff, tmp, period;
191 u16_t OperateLED;
192 zmw_get_wlan_dev(dev);
193
194 if (zfStaIsConnected(dev) != TRUE)
195 {
196
197 if(wd->ledStruct.counter % 4 != 0)
198 {
199
200
201
202
203
204
205
206 return;
207 }
208
209 if (((wd->state == ZM_WLAN_STATE_DISABLED) && (wd->sta.bChannelScan))
210 || ((wd->state != ZM_WLAN_STATE_DISABLED) && (wd->sta.bAutoReconnect)))
211 {
212
213 zfLedCtrlType2_scan(dev);
214 }
215 else
216 {
217
218 zfHpLedCtrl(dev, 0, 0);
219 zfHpLedCtrl(dev, 1, 0);
220 }
221 }
222 else
223 {
224 if( wd->sta.bChannelScan )
225 {
226
227 if(wd->ledStruct.counter % 4 != 0)
228 return;
229 zfLedCtrlType2_scan(dev);
230 return;
231 }
232
233 if(wd->frequency < 3000)
234 {
235 OperateLED = 0;
236 zfHpLedCtrl(dev, 1, 0);
237 }
238 else
239 {
240 OperateLED = 1;
241 zfHpLedCtrl(dev, 0, 0);
242 }
243
244 if ((zfPowerSavingMgrIsSleeping(dev)) && ((wd->ledStruct.ledMode[OperateLED] & 0x8) == 0))
245 {
246
247 zfHpLedCtrl(dev, OperateLED, 0);
248 }
249 else
250 {
251
252 if ((wd->ledStruct.counter & 1) == 0)
253 {
254
255 zfHpLedCtrl(dev, OperateLED, 1);
256 }
257 else
258 {
259 if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
260 {
261
262
263
264
265
266 wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
267 zfHpLedCtrl(dev, OperateLED, 0);
268 }
269 }
270 }
271 }
272}
273
274void zfLedCtrlType2_scan(zdev_t* dev)
275{
276 zmw_get_wlan_dev(dev);
277
278
279
280
281
282
283
284
285 switch(wd->ledStruct.counter % 16)
286 {
287 case 0:
288 if(wd->supportMode & ZM_WIRELESS_MODE_24)
289 {
290 zfHpLedCtrl(dev, 0, 1);
291 zfHpLedCtrl(dev, 1, 0);
292 }
293 else
294 {
295 zfHpLedCtrl(dev, 1, 1);
296 zfHpLedCtrl(dev, 0, 0);
297 }
298 break;
299
300 case 8:
301 if(wd->supportMode & ZM_WIRELESS_MODE_5)
302 {
303 zfHpLedCtrl(dev, 1, 1);
304 zfHpLedCtrl(dev, 0, 0);
305 }
306 else
307 {
308 zfHpLedCtrl(dev, 0, 1);
309 zfHpLedCtrl(dev, 1, 0);
310 }
311 break;
312
313 default:
314 zfHpLedCtrl(dev, 0, 0);
315 zfHpLedCtrl(dev, 1, 0);
316 break;
317 }
318}
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352void zfLedCtrlType3_scan(zdev_t* dev, u16_t isConnect);
353
354void zfLedCtrlType3(zdev_t* dev)
355{
356 zmw_get_wlan_dev(dev);
357
358 if (zfStaIsConnected(dev) != TRUE)
359 {
360
361 if(wd->ledStruct.counter % 2 != 0)
362 {
363
364
365
366
367
368
369 return;
370 }
371
372 if (((wd->state == ZM_WLAN_STATE_DISABLED) && (wd->sta.bChannelScan))
373 || ((wd->state != ZM_WLAN_STATE_DISABLED) && (wd->sta.bAutoReconnect)))
374 {
375
376 zfLedCtrlType3_scan(dev, 0);
377 }
378 else
379 {
380
381 zfHpLedCtrl(dev, 0, 0);
382 zfHpLedCtrl(dev, 1, 0);
383 }
384 }
385 else
386 {
387 if( wd->sta.bChannelScan )
388 {
389
390 if(wd->ledStruct.counter % 2 != 0)
391 return;
392 zfLedCtrlType3_scan(dev, 1);
393 return;
394 }
395
396 if ((zfPowerSavingMgrIsSleeping(dev)) && ((wd->ledStruct.ledMode[0] & 0x8) == 0))
397 {
398
399 zfHpLedCtrl(dev, 0, 0);
400 zfHpLedCtrl(dev, 1, 0);
401 }
402 else
403 {
404
405 if ((wd->ledStruct.counter & 1) == 0)
406 {
407
408 zfHpLedCtrl(dev, 0, 1);
409 zfHpLedCtrl(dev, 1, 1);
410 }
411 else
412 {
413 if ((wd->ledStruct.txTraffic > 0) || (wd->ledStruct.rxTraffic > 0))
414 {
415
416
417
418
419
420 wd->ledStruct.txTraffic = wd->ledStruct.rxTraffic = 0;
421 zfHpLedCtrl(dev, 0, 0);
422 zfHpLedCtrl(dev, 1, 0);
423 }
424 }
425 }
426 }
427}
428
429void zfLedCtrlType3_scan(zdev_t* dev, u16_t isConnect)
430{
431 u32_t ton, toff, tmp;
432 zmw_get_wlan_dev(dev);
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447 if(!isConnect)
448 ton = 2, toff = 6;
449 else
450 ton = 6, toff = 2;
451
452 if ((ton + toff) != 0)
453 {
454 tmp = wd->ledStruct.counter % (ton+toff);
455 if (tmp < ton)
456 {
457 zfHpLedCtrl(dev, 0, 1);
458 zfHpLedCtrl(dev, 1, 1);
459 }
460 else
461 {
462 zfHpLedCtrl(dev, 0, 0);
463 zfHpLedCtrl(dev, 1, 0);
464 }
465 }
466}
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487void zfLedCtrl_BlinkWhenScan_Alpha(zdev_t* dev)
488{
489 static u32_t counter = 0;
490 zmw_get_wlan_dev(dev);
491
492 if(counter > 34)
493 {
494 wd->ledStruct.LEDCtrlFlag &= ~(u8_t)ZM_LED_CTRL_FLAG_ALPHA;
495 counter = 0;
496 }
497
498 if( (counter % 3) < 2)
499 zfHpLedCtrl(dev, 0, 1);
500 else
501 zfHpLedCtrl(dev, 0, 0);
502
503 counter++;
504}
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522void zfLed100msCtrl(zdev_t* dev)
523{
524 zmw_get_wlan_dev(dev);
525
526 wd->ledStruct.counter++;
527
528 if(wd->ledStruct.LEDCtrlFlag)
529 {
530 switch(wd->ledStruct.LEDCtrlFlag) {
531 case ZM_LED_CTRL_FLAG_ALPHA:
532 zfLedCtrl_BlinkWhenScan_Alpha(dev);
533 break;
534 }
535 }
536 else
537 {
538 switch(wd->ledStruct.LEDCtrlType) {
539 case 1:
540 zfLedCtrlType1(dev);
541 break;
542
543 case 2:
544 zfLedCtrlType2(dev);
545 break;
546
547 case 3:
548 zfLedCtrlType3(dev);
549 break;
550
551 default:
552 zfLedCtrlType1(dev);
553 break;
554 }
555 }
556}
557
558