1 /******************************************************************************
3 * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 ******************************************************************************/
21 #include <drv_types.h>
26 // Implementation of LED blinking behavior.
27 // It toggle off LED and schedule corresponding timer if necessary.
34 _adapter *padapter = pLed->padapter;
35 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
36 u8 bStopBlinking = _FALSE;
38 // Change LED according to BlinkingLedState specified.
39 if( pLed->BlinkingLedState == RTW_LED_ON )
41 SwLedOn(padapter, pLed);
42 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
46 SwLedOff(padapter, pLed);
47 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,( "Blinktimes (%d): turn off\n", pLed->BlinkTimes));
50 // Determine if we shall change LED state again.
52 switch(pLed->CurrLedState)
55 case LED_BLINK_NORMAL:
56 if(pLed->BlinkTimes == 0)
58 bStopBlinking = _TRUE;
62 case LED_BLINK_StartToBlink:
63 if( check_fwstate(pmlmepriv, _FW_LINKED) && check_fwstate(pmlmepriv, WIFI_STATION_STATE) )
65 bStopBlinking = _TRUE;
67 if( check_fwstate(pmlmepriv, _FW_LINKED) &&
68 (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) )
70 bStopBlinking = _TRUE;
72 else if(pLed->BlinkTimes == 0)
74 bStopBlinking = _TRUE;
79 if( pLed->BlinkTimes == 0 )
81 bStopBlinking = _TRUE;
87 bStopBlinking = _TRUE;
94 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
96 SwLedOff(padapter, pLed);
98 else if( (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) && (pLed->bLedOn == _FALSE))
100 SwLedOn(padapter, pLed);
102 else if( (check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE) && pLed->bLedOn == _TRUE)
104 SwLedOff(padapter, pLed);
107 pLed->BlinkTimes = 0;
108 pLed->bLedBlinkInProgress = _FALSE;
112 // Assign LED state to toggle.
113 if( pLed->BlinkingLedState == RTW_LED_ON )
114 pLed->BlinkingLedState = RTW_LED_OFF;
116 pLed->BlinkingLedState = RTW_LED_ON;
118 // Schedule a timer to toggle LED state.
119 switch( pLed->CurrLedState )
121 case LED_BLINK_NORMAL:
122 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
125 case LED_BLINK_SLOWLY:
126 case LED_BLINK_StartToBlink:
127 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
132 if( pLed->BlinkingLedState == RTW_LED_ON )
133 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);
135 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);
140 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
151 _adapter *padapter = pLed->padapter;
152 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
153 struct led_priv *ledpriv = &(padapter->ledpriv);
154 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
155 PLED_USB pLed1 = &(ledpriv->SwLed1);
156 u8 bStopBlinking = _FALSE;
158 u32 uLedBlinkNoLinkInterval = LED_BLINK_NO_LINK_INTERVAL_ALPHA; //add by ylb 20121012 for customer led for alpha
159 if(pHalData->CustomerID == RT_CID_819x_ALPHA_Dlink)
160 uLedBlinkNoLinkInterval= LED_BLINK_NO_LINK_INTERVAL_ALPHA_500MS;
162 if(pHalData->CustomerID == RT_CID_819x_CAMEO)
163 pLed = &(ledpriv->SwLed1);
165 // Change LED according to BlinkingLedState specified.
166 if( pLed->BlinkingLedState == RTW_LED_ON )
168 SwLedOn(padapter, pLed);
169 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,( "Blinktimes (%d): turn on\n", pLed->BlinkTimes));
173 SwLedOff(padapter, pLed);
174 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
178 if(pHalData->CustomerID == RT_CID_DEFAULT)
180 if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
182 if(!pLed1->bSWLedCtrl)
184 SwLedOn(padapter, pLed1);
185 pLed1->bSWLedCtrl = _TRUE;
187 else if(!pLed1->bLedOn)
188 SwLedOn(padapter, pLed1);
189 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (): turn on pLed1\n"));
193 if(!pLed1->bSWLedCtrl)
195 SwLedOff(padapter, pLed1);
196 pLed1->bSWLedCtrl = _TRUE;
198 else if(pLed1->bLedOn)
199 SwLedOff(padapter, pLed1);
200 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (): turn off pLed1\n"));
204 switch(pLed->CurrLedState)
206 case LED_BLINK_SLOWLY:
208 pLed->BlinkingLedState = RTW_LED_OFF;
210 pLed->BlinkingLedState = RTW_LED_ON;
211 _set_timer(&(pLed->BlinkTimer), uLedBlinkNoLinkInterval);//change by ylb 20121012 for customer led for alpha
214 case LED_BLINK_NORMAL:
216 pLed->BlinkingLedState = RTW_LED_OFF;
218 pLed->BlinkingLedState = RTW_LED_ON;
219 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
224 if( pLed->BlinkTimes == 0 )
226 bStopBlinking = _TRUE;
231 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
233 SwLedOff(padapter, pLed);
235 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
237 pLed->bLedLinkBlinkInProgress = _TRUE;
238 pLed->CurrLedState = LED_BLINK_NORMAL;
240 pLed->BlinkingLedState = RTW_LED_OFF;
242 pLed->BlinkingLedState = RTW_LED_ON;
243 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
244 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
247 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
249 pLed->bLedNoLinkBlinkInProgress = _TRUE;
250 pLed->CurrLedState = LED_BLINK_SLOWLY;
252 pLed->BlinkingLedState = RTW_LED_OFF;
254 pLed->BlinkingLedState = RTW_LED_ON;
255 _set_timer(&(pLed->BlinkTimer), uLedBlinkNoLinkInterval);
256 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
258 pLed->bLedScanBlinkInProgress = _FALSE;
262 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
264 SwLedOff(padapter, pLed);
269 pLed->BlinkingLedState = RTW_LED_OFF;
271 pLed->BlinkingLedState = RTW_LED_ON;
272 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
279 if( pLed->BlinkTimes == 0 )
281 bStopBlinking = _TRUE;
285 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
287 SwLedOff(padapter, pLed);
289 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
291 pLed->bLedLinkBlinkInProgress = _TRUE;
292 pLed->CurrLedState = LED_BLINK_NORMAL;
294 pLed->BlinkingLedState = RTW_LED_OFF;
296 pLed->BlinkingLedState = RTW_LED_ON;
297 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
298 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
300 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
302 pLed->bLedNoLinkBlinkInProgress = _TRUE;
303 pLed->CurrLedState = LED_BLINK_SLOWLY;
305 pLed->BlinkingLedState = RTW_LED_OFF;
307 pLed->BlinkingLedState = RTW_LED_ON;
308 _set_timer(&(pLed->BlinkTimer), uLedBlinkNoLinkInterval);
309 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
311 pLed->BlinkTimes = 0;
312 pLed->bLedBlinkInProgress = _FALSE;
316 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
318 SwLedOff(padapter, pLed);
323 pLed->BlinkingLedState = RTW_LED_OFF;
325 pLed->BlinkingLedState = RTW_LED_ON;
326 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
333 pLed->BlinkingLedState = RTW_LED_OFF;
335 pLed->BlinkingLedState = RTW_LED_ON;
336 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
339 case LED_BLINK_WPS_STOP: //WPS success
340 if(pLed->BlinkingLedState == RTW_LED_ON)
342 pLed->BlinkingLedState = RTW_LED_OFF;
343 _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);
344 bStopBlinking = _FALSE;
348 bStopBlinking = _TRUE;
353 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
355 SwLedOff(padapter, pLed);
359 pLed->bLedLinkBlinkInProgress = _TRUE;
360 pLed->CurrLedState = LED_BLINK_NORMAL;
362 pLed->BlinkingLedState = RTW_LED_OFF;
364 pLed->BlinkingLedState = RTW_LED_ON;
365 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
366 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
368 pLed->bLedWPSBlinkInProgress = _FALSE;
383 _adapter *padapter = pLed->padapter;
384 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
385 u8 bStopBlinking = _FALSE;
387 // Change LED according to BlinkingLedState specified.
388 if( pLed->BlinkingLedState == RTW_LED_ON)
390 SwLedOn(padapter, pLed);
391 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
395 SwLedOff(padapter, pLed);
396 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
399 switch(pLed->CurrLedState)
403 if( pLed->BlinkTimes == 0 )
405 bStopBlinking = _TRUE;
410 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
412 SwLedOff(padapter, pLed);
414 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
416 pLed->CurrLedState = RTW_LED_ON;
417 pLed->BlinkingLedState = RTW_LED_ON;
418 SwLedOn(padapter, pLed);
419 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop scan blink CurrLedState %d\n", pLed->CurrLedState));
422 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
424 pLed->CurrLedState = RTW_LED_OFF;
425 pLed->BlinkingLedState = RTW_LED_OFF;
426 SwLedOff(padapter, pLed);
427 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop scan blink CurrLedState %d\n", pLed->CurrLedState));
429 pLed->bLedScanBlinkInProgress = _FALSE;
433 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
435 SwLedOff(padapter, pLed);
440 pLed->BlinkingLedState = RTW_LED_OFF;
442 pLed->BlinkingLedState = RTW_LED_ON;
443 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
450 if( pLed->BlinkTimes == 0 )
452 bStopBlinking = _TRUE;
456 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
458 SwLedOff(padapter, pLed);
460 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
462 pLed->CurrLedState = RTW_LED_ON;
463 pLed->BlinkingLedState = RTW_LED_ON;
464 SwLedOn(padapter, pLed);
465 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop CurrLedState %d\n", pLed->CurrLedState));
468 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
470 pLed->CurrLedState = RTW_LED_OFF;
471 pLed->BlinkingLedState = RTW_LED_OFF;
472 SwLedOff(padapter, pLed);
473 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop CurrLedState %d\n", pLed->CurrLedState));
475 pLed->bLedBlinkInProgress = _FALSE;
479 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
481 SwLedOff(padapter, pLed);
486 pLed->BlinkingLedState = RTW_LED_OFF;
488 pLed->BlinkingLedState = RTW_LED_ON;
489 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
505 _adapter *padapter = pLed->padapter;
506 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
507 u8 bStopBlinking = _FALSE;
509 // Change LED according to BlinkingLedState specified.
510 if( pLed->BlinkingLedState == RTW_LED_ON )
512 SwLedOn(padapter, pLed);
513 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
517 if(pLed->CurrLedState != LED_BLINK_WPS_STOP)
518 SwLedOff(padapter, pLed);
519 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
522 switch(pLed->CurrLedState)
526 if( pLed->BlinkTimes == 0 )
528 bStopBlinking = _TRUE;
533 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
535 SwLedOff(padapter, pLed);
537 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
539 pLed->CurrLedState = RTW_LED_ON;
540 pLed->BlinkingLedState = RTW_LED_ON;
542 SwLedOn(padapter, pLed);
544 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
546 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
548 pLed->CurrLedState = RTW_LED_OFF;
549 pLed->BlinkingLedState = RTW_LED_OFF;
551 SwLedOff(padapter, pLed);
553 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
555 pLed->bLedScanBlinkInProgress = _FALSE;
559 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
561 SwLedOff(padapter, pLed);
566 pLed->BlinkingLedState = RTW_LED_OFF;
568 pLed->BlinkingLedState = RTW_LED_ON;
569 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
576 if( pLed->BlinkTimes == 0 )
578 bStopBlinking = _TRUE;
582 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
584 SwLedOff(padapter, pLed);
586 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
588 pLed->CurrLedState = RTW_LED_ON;
589 pLed->BlinkingLedState = RTW_LED_ON;
592 SwLedOn(padapter, pLed);
594 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
596 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
598 pLed->CurrLedState = RTW_LED_OFF;
599 pLed->BlinkingLedState = RTW_LED_OFF;
602 SwLedOff(padapter, pLed);
605 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
607 pLed->bLedBlinkInProgress = _FALSE;
611 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
613 SwLedOff(padapter, pLed);
618 pLed->BlinkingLedState = RTW_LED_OFF;
620 pLed->BlinkingLedState = RTW_LED_ON;
621 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
628 pLed->BlinkingLedState = RTW_LED_OFF;
630 pLed->BlinkingLedState = RTW_LED_ON;
631 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
634 case LED_BLINK_WPS_STOP: //WPS success
635 if(pLed->BlinkingLedState == RTW_LED_ON)
637 pLed->BlinkingLedState = RTW_LED_OFF;
638 _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);
639 bStopBlinking = _FALSE;
643 bStopBlinking = _TRUE;
648 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )
650 SwLedOff(padapter, pLed);
654 pLed->CurrLedState = RTW_LED_ON;
655 pLed->BlinkingLedState = RTW_LED_ON;
656 SwLedOn(padapter, pLed);
657 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
659 pLed->bLedWPSBlinkInProgress = _FALSE;
676 _adapter *padapter = pLed->padapter;
677 struct led_priv *ledpriv = &(padapter->ledpriv);
678 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
679 PLED_USB pLed1 = &(ledpriv->SwLed1);
680 u8 bStopBlinking = _FALSE;
682 // Change LED according to BlinkingLedState specified.
683 if( pLed->BlinkingLedState == RTW_LED_ON )
685 SwLedOn(padapter, pLed);
686 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
690 SwLedOff(padapter, pLed);
691 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
694 if(!pLed1->bLedWPSBlinkInProgress && pLed1->BlinkingLedState == LED_UNKNOWN)
696 pLed1->BlinkingLedState = RTW_LED_OFF;
697 pLed1->CurrLedState = RTW_LED_OFF;
698 SwLedOff(padapter, pLed1);
701 switch(pLed->CurrLedState)
703 case LED_BLINK_SLOWLY:
705 pLed->BlinkingLedState = RTW_LED_OFF;
707 pLed->BlinkingLedState = RTW_LED_ON;
708 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
711 case LED_BLINK_StartToBlink:
714 pLed->BlinkingLedState = RTW_LED_OFF;
715 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
719 pLed->BlinkingLedState = RTW_LED_ON;
720 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
726 if( pLed->BlinkTimes == 0 )
728 bStopBlinking = _FALSE;
733 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)
735 SwLedOff(padapter, pLed);
739 pLed->bLedNoLinkBlinkInProgress = _FALSE;
740 pLed->CurrLedState = LED_BLINK_SLOWLY;
742 pLed->BlinkingLedState = RTW_LED_OFF;
744 pLed->BlinkingLedState = RTW_LED_ON;
745 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
747 pLed->bLedScanBlinkInProgress = _FALSE;
751 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)
753 SwLedOff(padapter, pLed);
758 pLed->BlinkingLedState = RTW_LED_OFF;
760 pLed->BlinkingLedState = RTW_LED_ON;
761 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
768 if( pLed->BlinkTimes == 0 )
770 bStopBlinking = _TRUE;
774 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)
776 SwLedOff(padapter, pLed);
780 pLed->bLedNoLinkBlinkInProgress = _TRUE;
781 pLed->CurrLedState = LED_BLINK_SLOWLY;
783 pLed->BlinkingLedState = RTW_LED_OFF;
785 pLed->BlinkingLedState = RTW_LED_ON;
786 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
788 pLed->bLedBlinkInProgress = _FALSE;
792 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)
794 SwLedOff(padapter, pLed);
800 pLed->BlinkingLedState = RTW_LED_OFF;
802 pLed->BlinkingLedState = RTW_LED_ON;
804 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
812 pLed->BlinkingLedState = RTW_LED_OFF;
813 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
817 pLed->BlinkingLedState = RTW_LED_ON;
818 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
822 case LED_BLINK_WPS_STOP: //WPS authentication fail
824 pLed->BlinkingLedState = RTW_LED_OFF;
826 pLed->BlinkingLedState = RTW_LED_ON;
828 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
831 case LED_BLINK_WPS_STOP_OVERLAP: //WPS session overlap
833 if(pLed->BlinkTimes == 0)
837 pLed->BlinkTimes = 1;
841 bStopBlinking = _TRUE;
847 pLed->BlinkTimes = 10;
848 pLed->BlinkingLedState = RTW_LED_ON;
849 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
854 pLed->BlinkingLedState = RTW_LED_OFF;
856 pLed->BlinkingLedState = RTW_LED_ON;
858 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
862 case LED_BLINK_ALWAYS_ON:
864 if( pLed->BlinkTimes == 0 )
866 bStopBlinking = _TRUE;
870 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)
872 SwLedOff(padapter, pLed);
876 pLed->bLedNoLinkBlinkInProgress = _TRUE;
877 pLed->CurrLedState = LED_BLINK_SLOWLY;
879 pLed->BlinkingLedState = RTW_LED_OFF;
881 pLed->BlinkingLedState = RTW_LED_ON;
883 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
885 pLed->bLedBlinkInProgress = _FALSE;
889 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)
891 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("RFOff Status \n"));
892 SwLedOff(padapter, pLed);
897 pLed->BlinkingLedState = RTW_LED_OFF;
899 pLed->BlinkingLedState = RTW_LED_ON;
901 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
910 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink4 CurrLedState %d\n", pLed->CurrLedState));
920 _adapter *padapter = pLed->padapter;
921 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
922 u8 bStopBlinking = _FALSE;
924 // Change LED according to BlinkingLedState specified.
925 if( pLed->BlinkingLedState == RTW_LED_ON )
927 SwLedOn(padapter, pLed);
928 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
932 SwLedOff(padapter, pLed);
933 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
936 switch(pLed->CurrLedState)
940 if( pLed->BlinkTimes == 0 )
942 bStopBlinking = _TRUE;
947 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)
949 pLed->CurrLedState = RTW_LED_OFF;
950 pLed->BlinkingLedState = RTW_LED_OFF;
952 SwLedOff(padapter, pLed);
955 { pLed->CurrLedState = RTW_LED_ON;
956 pLed->BlinkingLedState = RTW_LED_ON;
958 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
961 pLed->bLedScanBlinkInProgress = _FALSE;
965 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)
967 SwLedOff(padapter, pLed);
972 pLed->BlinkingLedState = RTW_LED_OFF;
974 pLed->BlinkingLedState = RTW_LED_ON;
975 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
983 if( pLed->BlinkTimes == 0 )
985 bStopBlinking = _TRUE;
990 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)
992 pLed->CurrLedState = RTW_LED_OFF;
993 pLed->BlinkingLedState = RTW_LED_OFF;
995 SwLedOff(padapter, pLed);
999 pLed->CurrLedState = RTW_LED_ON;
1000 pLed->BlinkingLedState = RTW_LED_ON;
1002 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1005 pLed->bLedBlinkInProgress = _FALSE;
1009 if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)
1011 SwLedOff(padapter, pLed);
1016 pLed->BlinkingLedState = RTW_LED_OFF;
1018 pLed->BlinkingLedState = RTW_LED_ON;
1019 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1028 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink5 CurrLedState %d\n", pLed->CurrLedState));
1038 _adapter *padapter = pLed->padapter;
1039 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
1040 u8 bStopBlinking = _FALSE;
1042 // Change LED according to BlinkingLedState specified.
1043 if( pLed->BlinkingLedState == RTW_LED_ON )
1045 SwLedOn(padapter, pLed);
1046 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
1050 SwLedOff(padapter, pLed);
1051 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
1054 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink6\n"));
1062 PADAPTER Adapter = pLed->padapter;
1063 struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
1064 BOOLEAN bStopBlinking = _FALSE;
1066 // Change LED according to BlinkingLedState specified.
1067 if( pLed->BlinkingLedState == RTW_LED_ON )
1069 SwLedOn(Adapter, pLed);
1070 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
1074 if(pLed->CurrLedState != LED_BLINK_WPS_STOP)
1075 SwLedOff(Adapter, pLed);
1076 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
1079 switch(pLed->CurrLedState)
1081 case LED_BLINK_SCAN:
1083 if( pLed->BlinkTimes == 0 )
1085 bStopBlinking = _TRUE;
1090 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on )
1092 SwLedOff(Adapter, pLed);
1094 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
1096 pLed->CurrLedState = RTW_LED_ON;
1097 pLed->BlinkingLedState = RTW_LED_ON;
1099 SwLedOn(Adapter, pLed);
1101 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
1103 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
1105 pLed->CurrLedState = RTW_LED_OFF;
1106 pLed->BlinkingLedState = RTW_LED_OFF;
1108 SwLedOff(Adapter, pLed);
1110 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
1112 pLed->bLedScanBlinkInProgress = _FALSE;
1116 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on )
1118 SwLedOff(Adapter, pLed);
1123 pLed->BlinkingLedState = RTW_LED_OFF;
1125 pLed->BlinkingLedState = RTW_LED_ON;
1126 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);
1133 pLed->BlinkingLedState = RTW_LED_OFF;
1135 pLed->BlinkingLedState = RTW_LED_ON;
1136 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);
1139 case LED_BLINK_WPS_STOP: //WPS success
1140 if(pLed->BlinkingLedState == RTW_LED_ON)
1142 pLed->BlinkingLedState = RTW_LED_OFF;
1143 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);
1144 bStopBlinking = _FALSE;
1148 bStopBlinking = _TRUE;
1153 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on )
1155 SwLedOff(Adapter, pLed);
1159 pLed->CurrLedState = RTW_LED_ON;
1160 pLed->BlinkingLedState = RTW_LED_ON;
1161 SwLedOn(Adapter, pLed);
1162 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
1164 pLed->bLedWPSBlinkInProgress = _FALSE;
1173 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink7\n"));
1182 PADAPTER Adapter = pLed->padapter;
1184 // Change LED according to BlinkingLedState specified.
1185 if( pLed->BlinkingLedState == RTW_LED_ON )
1187 SwLedOn(Adapter, pLed);
1188 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes blink8(%d): turn on\n", pLed->BlinkTimes));
1192 SwLedOff(Adapter, pLed);
1193 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes blink8(%d): turn off\n", pLed->BlinkTimes));
1196 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink8\n"));
1200 //page added for Belkin AC950. 20120813
1206 PADAPTER Adapter = pLed->padapter;
1207 struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
1208 BOOLEAN bStopBlinking = _FALSE;
1210 // Change LED according to BlinkingLedState specified.
1211 if( pLed->BlinkingLedState == RTW_LED_ON )
1213 SwLedOn(Adapter, pLed);
1214 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
1218 SwLedOff(Adapter, pLed);
1219 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
1221 //DBG_871X("%s, pLed->CurrLedState=%d, pLed->BlinkingLedState=%d \n", __FUNCTION__, pLed->CurrLedState, pLed->BlinkingLedState);
1224 switch(pLed->CurrLedState)
1227 SwLedOn(Adapter, pLed);
1231 SwLedOff(Adapter, pLed);
1234 case LED_BLINK_SLOWLY:
1236 pLed->BlinkingLedState = RTW_LED_OFF;
1238 pLed->BlinkingLedState = RTW_LED_ON;
1239 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
1242 case LED_BLINK_StartToBlink:
1245 pLed->BlinkingLedState = RTW_LED_OFF;
1246 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
1250 pLed->BlinkingLedState = RTW_LED_ON;
1251 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
1255 case LED_BLINK_SCAN:
1257 if( pLed->BlinkTimes == 0 )
1259 bStopBlinking = _TRUE;
1264 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on )
1266 SwLedOff(Adapter, pLed);
1268 else if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)
1270 pLed->bLedLinkBlinkInProgress = _TRUE;
1271 pLed->CurrLedState = LED_BLINK_SLOWLY;
1273 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
1274 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
1276 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
1278 pLed->bLedNoLinkBlinkInProgress = _TRUE;
1279 pLed->CurrLedState = LED_BLINK_SLOWLY;
1281 pLed->BlinkingLedState = RTW_LED_OFF;
1283 pLed->BlinkingLedState = RTW_LED_ON;
1284 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
1285 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
1287 pLed->BlinkTimes = 0;
1288 pLed->bLedBlinkInProgress = _FALSE;
1292 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
1294 SwLedOff(Adapter, pLed);
1299 pLed->BlinkingLedState = RTW_LED_OFF;
1301 pLed->BlinkingLedState = RTW_LED_ON;
1302 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
1307 case LED_BLINK_TXRX:
1309 if( pLed->BlinkTimes == 0 )
1311 bStopBlinking = _TRUE;
1315 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
1317 SwLedOff(Adapter, pLed);
1321 pLed->CurrLedState = LED_BLINK_SLOWLY;
1323 pLed->BlinkingLedState = RTW_LED_OFF;
1325 pLed->BlinkingLedState = RTW_LED_ON;
1326 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1328 pLed->bLedBlinkInProgress = _FALSE;
1332 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
1334 SwLedOff(Adapter, pLed);
1339 pLed->BlinkingLedState = RTW_LED_OFF;
1341 pLed->BlinkingLedState = RTW_LED_ON;
1343 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1351 pLed->BlinkingLedState = RTW_LED_OFF;
1352 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
1356 pLed->BlinkingLedState = RTW_LED_ON;
1357 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
1361 case LED_BLINK_WPS_STOP: //WPS authentication fail
1363 pLed->BlinkingLedState = RTW_LED_OFF;
1365 pLed->BlinkingLedState = RTW_LED_ON;
1367 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
1370 case LED_BLINK_WPS_STOP_OVERLAP: //WPS session overlap
1372 pLed->BlinkCounter --;
1373 if(pLed->BlinkCounter == 0)
1375 pLed->BlinkingLedState = RTW_LED_OFF;
1376 pLed->CurrLedState = RTW_LED_OFF;
1377 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
1381 if(pLed->BlinkTimes == 0)
1385 pLed->BlinkTimes = 1;
1389 bStopBlinking = _TRUE;
1395 pLed->BlinkTimes = 10;
1396 pLed->BlinkingLedState = RTW_LED_ON;
1397 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
1402 pLed->BlinkingLedState = RTW_LED_OFF;
1404 pLed->BlinkingLedState = RTW_LED_ON;
1406 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
1411 case LED_BLINK_ALWAYS_ON:
1413 if( pLed->BlinkTimes == 0 )
1415 bStopBlinking = _TRUE;
1419 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
1421 SwLedOff(Adapter, pLed);
1425 if(IS_HARDWARE_TYPE_8812AU(Adapter))
1427 pLed->BlinkingLedState = RTW_LED_ON;
1428 pLed->CurrLedState = LED_BLINK_ALWAYS_ON;
1432 pLed->bLedNoLinkBlinkInProgress = _TRUE;
1433 pLed->CurrLedState = LED_BLINK_SLOWLY;
1435 pLed->BlinkingLedState = RTW_LED_OFF;
1437 pLed->BlinkingLedState = RTW_LED_ON;
1439 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
1441 pLed->bLedBlinkInProgress = _FALSE;
1445 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
1447 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("RFOff Status \n"));
1448 SwLedOff(Adapter, pLed);
1452 if(IS_HARDWARE_TYPE_8812AU(Adapter))
1454 pLed->BlinkingLedState = RTW_LED_ON;
1459 pLed->BlinkingLedState = RTW_LED_OFF;
1461 pLed->BlinkingLedState = RTW_LED_ON;
1463 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1468 case LED_BLINK_LINK_IN_PROCESS:
1471 pLed->BlinkingLedState = RTW_LED_OFF;
1472 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ON_BELKIN);
1476 pLed->BlinkingLedState = RTW_LED_ON;
1477 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_OFF_BELKIN);
1481 case LED_BLINK_AUTH_ERROR:
1483 if( pLed->BlinkTimes == 0 )
1485 bStopBlinking = _TRUE;
1487 if(bStopBlinking == _FALSE)
1491 pLed->BlinkingLedState = RTW_LED_OFF;
1492 _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);
1496 pLed->BlinkingLedState = RTW_LED_ON;
1497 _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);
1502 pLed->CurrLedState = RTW_LED_OFF;
1503 pLed->BlinkingLedState = RTW_LED_OFF;
1504 _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);
1512 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink9 CurrLedState %d\n", pLed->CurrLedState));
1515 //page added for Netgear A6200V2. 20120827
1521 PADAPTER Adapter = pLed->padapter;
1522 struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
1523 BOOLEAN bStopBlinking = _FALSE;
1525 // Change LED according to BlinkingLedState specified.
1526 if( pLed->BlinkingLedState == RTW_LED_ON )
1528 SwLedOn(Adapter, pLed);
1529 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
1533 SwLedOff(Adapter, pLed);
1534 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
1538 switch(pLed->CurrLedState)
1541 SwLedOn(Adapter, pLed);
1545 SwLedOff(Adapter, pLed);
1548 case LED_BLINK_SLOWLY:
1550 pLed->BlinkingLedState = RTW_LED_OFF;
1552 pLed->BlinkingLedState = RTW_LED_ON;
1553 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
1556 case LED_BLINK_StartToBlink:
1559 pLed->BlinkingLedState = RTW_LED_OFF;
1560 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
1564 pLed->BlinkingLedState = RTW_LED_ON;
1565 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
1569 case LED_BLINK_SCAN:
1571 if( pLed->BlinkTimes == 0 )
1573 bStopBlinking = _TRUE;
1578 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on )
1580 SwLedOff(Adapter, pLed);
1582 else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
1584 pLed->bLedNoLinkBlinkInProgress = _FALSE;
1585 pLed->CurrLedState = RTW_LED_OFF;
1586 pLed->BlinkingLedState = RTW_LED_OFF;
1588 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
1589 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
1591 pLed->BlinkTimes = 0;
1592 pLed->bLedBlinkInProgress = _FALSE;
1596 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
1598 SwLedOff(Adapter, pLed);
1604 pLed->BlinkingLedState = RTW_LED_OFF;
1605 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);
1609 pLed->BlinkingLedState = RTW_LED_ON;
1610 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_SLOWLY_INTERVAL_NETGEAR+LED_BLINK_LINK_INTERVAL_NETGEAR);
1619 pLed->BlinkingLedState = RTW_LED_OFF;
1620 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);
1624 pLed->BlinkingLedState = RTW_LED_ON;
1625 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL+LED_BLINK_LINK_INTERVAL_NETGEAR);
1629 case LED_BLINK_WPS_STOP: //WPS authentication fail
1631 pLed->BlinkingLedState = RTW_LED_OFF;
1633 pLed->BlinkingLedState = RTW_LED_ON;
1635 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
1638 case LED_BLINK_WPS_STOP_OVERLAP: //WPS session overlap
1640 pLed->BlinkCounter --;
1641 if(pLed->BlinkCounter == 0)
1643 pLed->BlinkingLedState = RTW_LED_OFF;
1644 pLed->CurrLedState = RTW_LED_OFF;
1645 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
1649 if(pLed->BlinkTimes == 0)
1653 pLed->BlinkTimes = 1;
1657 bStopBlinking = _TRUE;
1663 pLed->BlinkTimes = 10;
1664 pLed->BlinkingLedState = RTW_LED_ON;
1665 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
1670 pLed->BlinkingLedState = RTW_LED_OFF;
1672 pLed->BlinkingLedState = RTW_LED_ON;
1674 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
1679 case LED_BLINK_ALWAYS_ON:
1681 if( pLed->BlinkTimes == 0 )
1683 bStopBlinking = _TRUE;
1687 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
1689 SwLedOff(Adapter, pLed);
1693 if(IS_HARDWARE_TYPE_8812AU(Adapter))
1695 pLed->BlinkingLedState = RTW_LED_ON;
1696 pLed->CurrLedState = LED_BLINK_ALWAYS_ON;
1700 pLed->bLedNoLinkBlinkInProgress = _TRUE;
1701 pLed->CurrLedState = LED_BLINK_SLOWLY;
1703 pLed->BlinkingLedState = RTW_LED_OFF;
1705 pLed->BlinkingLedState = RTW_LED_ON;
1707 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
1709 pLed->bLedBlinkInProgress = _FALSE;
1713 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
1715 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("RFOff Status \n"));
1716 SwLedOff(Adapter, pLed);
1720 if(IS_HARDWARE_TYPE_8812AU(Adapter))
1722 pLed->BlinkingLedState = RTW_LED_ON;
1727 pLed->BlinkingLedState = RTW_LED_OFF;
1729 pLed->BlinkingLedState = RTW_LED_ON;
1731 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1736 case LED_BLINK_LINK_IN_PROCESS:
1739 pLed->BlinkingLedState = RTW_LED_OFF;
1740 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ON_BELKIN);
1744 pLed->BlinkingLedState = RTW_LED_ON;
1745 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_OFF_BELKIN);
1749 case LED_BLINK_AUTH_ERROR:
1751 if( pLed->BlinkTimes == 0 )
1753 bStopBlinking = _TRUE;
1755 if(bStopBlinking == _FALSE)
1759 pLed->BlinkingLedState = RTW_LED_OFF;
1760 _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);
1764 pLed->BlinkingLedState = RTW_LED_ON;
1765 _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);
1770 pLed->CurrLedState = RTW_LED_OFF;
1771 pLed->BlinkingLedState = RTW_LED_OFF;
1772 _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);
1780 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink10 CurrLedState %d\n", pLed->CurrLedState));
1789 PADAPTER Adapter = pLed->padapter;
1790 struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
1791 BOOLEAN bStopBlinking = _FALSE;
1793 // Change LED according to BlinkingLedState specified.
1794 if( pLed->BlinkingLedState == RTW_LED_ON )
1796 SwLedOn(Adapter, pLed);
1797 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
1801 SwLedOff(Adapter, pLed);
1802 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
1805 switch(pLed->CurrLedState)
1807 case LED_BLINK_TXRX:
1808 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
1810 SwLedOff(Adapter, pLed);
1815 pLed->BlinkingLedState = RTW_LED_OFF;
1817 pLed->BlinkingLedState = RTW_LED_ON;
1818 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
1824 if(pLed->BlinkTimes == 5)
1826 SwLedOn(Adapter, pLed);
1827 _set_timer(&(pLed->BlinkTimer), LED_CM11_LINK_ON_INTERVEL);
1833 pLed->BlinkingLedState = RTW_LED_OFF;
1834 _set_timer(&(pLed->BlinkTimer), LED_CM11_BLINK_INTERVAL);
1838 pLed->BlinkingLedState = RTW_LED_ON;
1839 _set_timer(&(pLed->BlinkTimer), LED_CM11_BLINK_INTERVAL);
1843 if( pLed->BlinkTimes == 0 )
1845 bStopBlinking = _TRUE;
1847 if(bStopBlinking == _TRUE)
1848 pLed->BlinkTimes = 5;
1851 case LED_BLINK_WPS_STOP: //WPS authentication fail
1852 if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
1855 pLed->BlinkingLedState = RTW_LED_OFF;
1857 pLed->BlinkingLedState = RTW_LED_ON;
1858 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
1862 pLed->CurrLedState = RTW_LED_ON;
1863 pLed->BlinkingLedState = RTW_LED_ON;
1864 SwLedOn(Adapter, pLed);
1865 _set_timer(&(pLed->BlinkTimer), 0);
1873 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink5 CurrLedState %d\n", pLed->CurrLedState));
1881 PADAPTER Adapter = pLed->padapter;
1882 struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
1883 BOOLEAN bStopBlinking = _FALSE;
1885 // Change LED according to BlinkingLedState specified.
1886 if( pLed->BlinkingLedState == RTW_LED_ON )
1888 SwLedOn(Adapter, pLed);
1889 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%ld): turn on\n", pLed->BlinkTimes));
1893 SwLedOff(Adapter, pLed);
1894 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%ld): turn off\n", pLed->BlinkTimes));
1897 switch(pLed->CurrLedState)
1899 case LED_BLINK_SLOWLY:
1901 pLed->BlinkingLedState = RTW_LED_OFF;
1903 pLed->BlinkingLedState = RTW_LED_ON;
1904 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
1907 case LED_BLINK_TXRX:
1909 if( pLed->BlinkTimes == 0 )
1911 bStopBlinking = _TRUE;
1916 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
1918 pLed->CurrLedState = RTW_LED_OFF;
1919 pLed->BlinkingLedState = RTW_LED_OFF;
1921 SwLedOff(Adapter, pLed);
1925 pLed->bLedNoLinkBlinkInProgress = _TRUE;
1926 pLed->CurrLedState = LED_BLINK_SLOWLY;
1928 pLed->BlinkingLedState = RTW_LED_OFF;
1930 pLed->BlinkingLedState = RTW_LED_ON;
1931 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
1934 pLed->bLedBlinkInProgress = _FALSE;
1938 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
1940 SwLedOff(Adapter, pLed);
1945 pLed->BlinkingLedState = RTW_LED_OFF;
1947 pLed->BlinkingLedState = RTW_LED_ON;
1948 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
1957 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink8 CurrLedState %d\n", pLed->CurrLedState));
1967 PADAPTER Adapter = pLed->padapter;
1968 struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
1969 BOOLEAN bStopBlinking = _FALSE;
1970 static u8 LinkBlinkCnt=0;
1972 // Change LED according to BlinkingLedState specified.
1973 if( pLed->BlinkingLedState == RTW_LED_ON )
1975 SwLedOn(Adapter, pLed);
1976 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
1980 if(pLed->CurrLedState != LED_BLINK_WPS_STOP)
1981 SwLedOff(Adapter, pLed);
1982 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
1984 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("!!! SwLedBlink13 CurrLedState %d, bLedWPSBlinkInProgress %d, bLedBlinkInProgress %d\n", pLed->CurrLedState,pLed->bLedWPSBlinkInProgress,pLed->bLedBlinkInProgress));
1985 switch(pLed->CurrLedState)
1987 case LED_BLINK_LINK_IN_PROCESS:
1988 if(!pLed->bLedWPSBlinkInProgress)
1994 pLed->bLedBlinkInProgress = _FALSE;
1999 pLed->BlinkingLedState = RTW_LED_OFF;
2000 _set_timer(&(pLed->BlinkTimer), 500);
2004 pLed->BlinkingLedState = RTW_LED_ON;
2005 _set_timer(&(pLed->BlinkTimer), 500);
2013 pLed->BlinkingLedState = RTW_LED_OFF;
2014 _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_ON_INTERVAL_NETGEAR);
2018 pLed->BlinkingLedState = RTW_LED_ON;
2019 _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_OFF_INTERVAL_NETGEAR);
2024 case LED_BLINK_WPS_STOP: //WPS success
2025 SwLedOff(Adapter, pLed);
2026 pLed->bLedWPSBlinkInProgress = _FALSE;
2034 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink13\n"));
2043 PADAPTER Adapter = pLed->padapter;
2044 struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
2045 BOOLEAN bStopBlinking = _FALSE;
2046 static u8 LinkBlinkCnt=0;
2048 // Change LED according to BlinkingLedState specified.
2049 if( pLed->BlinkingLedState == RTW_LED_ON )
2051 SwLedOn(Adapter, pLed);
2052 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
2056 if(pLed->CurrLedState != LED_BLINK_WPS_STOP)
2057 SwLedOff(Adapter, pLed);
2058 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
2060 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("!!! SwLedBlink14 CurrLedState %d, bLedWPSBlinkInProgress %d, bLedBlinkInProgress %d\n", pLed->CurrLedState,pLed->bLedWPSBlinkInProgress,pLed->bLedBlinkInProgress));
2061 switch(pLed->CurrLedState)
2063 case LED_BLINK_TXRX:
2065 if( pLed->BlinkTimes == 0 )
2067 bStopBlinking = _TRUE;
2071 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
2073 SwLedOff(Adapter, pLed);
2077 SwLedOn(Adapter, pLed);
2079 pLed->bLedBlinkInProgress = _FALSE;
2083 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
2085 SwLedOff(Adapter, pLed);
2091 pLed->BlinkingLedState = RTW_LED_OFF;
2092 if (IS_HARDWARE_TYPE_8812AU(Adapter))
2093 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
2095 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
2099 pLed->BlinkingLedState = RTW_LED_ON;
2100 if (IS_HARDWARE_TYPE_8812AU(Adapter))
2101 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
2103 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
2115 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink14\n"));
2123 PADAPTER Adapter = pLed->padapter;
2124 struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
2125 BOOLEAN bStopBlinking = _FALSE;
2126 static u8 LinkBlinkCnt=0;
2127 // Change LED according to BlinkingLedState specified.
2129 if( pLed->BlinkingLedState == RTW_LED_ON )
2131 SwLedOn(Adapter, pLed);
2132 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));
2136 if(pLed->CurrLedState != LED_BLINK_WPS_STOP)
2137 SwLedOff(Adapter, pLed);
2138 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));
2140 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("!!! SwLedBlink15 CurrLedState %d, bLedWPSBlinkInProgress %d, bLedBlinkInProgress %d\n", pLed->CurrLedState,pLed->bLedWPSBlinkInProgress,pLed->bLedBlinkInProgress));
2141 switch(pLed->CurrLedState)
2146 pLed->BlinkingLedState = RTW_LED_OFF;
2147 _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_ON_INTERVAL_DLINK);
2151 pLed->BlinkingLedState = RTW_LED_ON;
2152 _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_OFF_INTERVAL_DLINK);
2156 case LED_BLINK_WPS_STOP: //WPS success
2157 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("blink15, LED_BLINK_WPS_STOP BlinkingLedState %d\n",pLed->BlinkingLedState));
2159 if(pLed->BlinkingLedState == RTW_LED_OFF)
2161 pLed->bLedWPSBlinkInProgress = _FALSE;
2165 pLed->CurrLedState = LED_BLINK_WPS_STOP;
2166 pLed->BlinkingLedState = RTW_LED_OFF;
2168 _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_LINKED_ON_INTERVAL_DLINK);
2171 case LED_BLINK_NO_LINK:
2173 static BOOLEAN bLedOn=_TRUE;
2174 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("blink15, LED_NO_LINK_BLINK bLedOn %d\n",bLedOn));
2178 pLed->BlinkingLedState = RTW_LED_OFF;
2183 pLed->BlinkingLedState = RTW_LED_ON;
2185 pLed->bLedBlinkInProgress = _TRUE;
2186 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL);
2190 case LED_BLINK_LINK_IDEL:
2192 static BOOLEAN bLedOn=_TRUE;
2193 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("blink15, LED_BLINK_LINK_IDEL bLedOn %d\n",bLedOn));
2197 pLed->BlinkingLedState = RTW_LED_OFF;
2202 pLed->BlinkingLedState = RTW_LED_ON;
2205 pLed->bLedBlinkInProgress = _TRUE;
2206 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_IDEL_INTERVAL);
2210 case LED_BLINK_SCAN:
2212 static u8 BlinkTime=0;
2213 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("blink15, LED_SCAN_BLINK bLedOn %d\n",BlinkTime));
2216 pLed->BlinkingLedState = RTW_LED_ON;
2220 pLed->BlinkingLedState = RTW_LED_OFF;
2226 pLed->bLedBlinkInProgress = _TRUE;
2228 if(pLed->BlinkingLedState == RTW_LED_ON)
2229 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_OFF_INTERVAL);
2231 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_ON_INTERVAL);
2235 //if(pLed->OLDLedState ==LED_NO_LINK_BLINK)
2236 if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)
2238 pLed->CurrLedState = LED_BLINK_NO_LINK;
2239 pLed->BlinkingLedState = RTW_LED_ON;
2241 _set_timer(&(pLed->BlinkTimer), 100);
2248 case LED_BLINK_TXRX:
2250 if( pLed->BlinkTimes == 0 )
2252 bStopBlinking = _TRUE;
2256 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
2258 SwLedOff(Adapter, pLed);
2262 SwLedOn(Adapter, pLed);
2264 pLed->bLedBlinkInProgress = _FALSE;
2268 if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)
2270 SwLedOff(Adapter, pLed);
2275 pLed->BlinkingLedState = RTW_LED_OFF;
2277 pLed->BlinkingLedState = RTW_LED_ON;
2278 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
2288 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink15\n"));
2293 // Handler function of LED Blinking.
2294 // We dispatch acture LED blink action according to LedStrategy.
2296 void BlinkHandler(PLED_USB pLed)
2298 _adapter *padapter = pLed->padapter;
2299 struct led_priv *ledpriv = &(padapter->ledpriv);
2301 //DBG_871X("%s (%s:%d)\n",__FUNCTION__, current->comm, current->pid);
2303 if (RTW_CANNOT_RUN(padapter) || (!rtw_is_hw_init_completed(padapter))) {
2304 /*DBG_871X("%s bDriverStopped:%s, bSurpriseRemoved:%s\n"
2306 , rtw_is_drv_stopped(padapter)?"True":"False"
2307 , rtw_is_surprise_removed(padapter)?"True":"False" );*/
2311 switch(ledpriv->LedStrategy)
2378 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("BlinkWorkItemCallback 0x%x \n", ledpriv->LedStrategy));
2386 // Callback function of LED BlinkTimer,
2387 // it just schedules to corresponding BlinkWorkItem/led_blink_hdl
2389 void BlinkTimerCallback(void *data)
2391 PLED_USB pLed = (PLED_USB)data;
2392 _adapter *padapter = pLed->padapter;
2394 //DBG_871X("%s\n", __FUNCTION__);
2396 if (RTW_CANNOT_RUN(padapter) || (!rtw_is_hw_init_completed(padapter))) {
2397 /*DBG_871X("%s bDriverStopped:%s, bSurpriseRemoved:%s\n"
2399 , rtw_is_drv_stopped(padapter)?"True":"False"
2400 , rtw_is_surprise_removed(padapter)?"True":"False" );*/
2404 #ifdef CONFIG_LED_HANDLED_BY_CMD_THREAD
2405 rtw_led_blink_cmd(padapter, (PVOID)pLed);
2407 if(ATOMIC_READ(&pLed->bCancelWorkItem) == _FALSE)
2408 _set_workitem(&(pLed->BlinkWorkItem));
2414 // Callback function of LED BlinkWorkItem.
2415 // We dispatch acture LED blink action according to LedStrategy.
2417 void BlinkWorkItemCallback(_workitem *work)
2419 PLED_USB pLed = container_of(work, LED_USB, BlinkWorkItem);
2426 LED_CTL_MODE LedAction
2429 struct led_priv *ledpriv = &(padapter->ledpriv);
2430 PLED_USB pLed = &(ledpriv->SwLed1);
2437 if( pLed->bLedBlinkInProgress == _FALSE )
2439 pLed->bLedBlinkInProgress = _TRUE;
2441 pLed->CurrLedState = LED_BLINK_NORMAL;
2442 pLed->BlinkTimes = 2;
2445 pLed->BlinkingLedState = RTW_LED_OFF;
2447 pLed->BlinkingLedState = RTW_LED_ON;
2448 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
2452 case LED_CTL_START_TO_LINK:
2453 if( pLed->bLedBlinkInProgress == _FALSE )
2455 pLed->bLedBlinkInProgress = _TRUE;
2457 pLed->CurrLedState = LED_BLINK_StartToBlink;
2458 pLed->BlinkTimes = 24;
2461 pLed->BlinkingLedState = RTW_LED_OFF;
2463 pLed->BlinkingLedState = RTW_LED_ON;
2464 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
2468 pLed->CurrLedState = LED_BLINK_StartToBlink;
2473 pLed->CurrLedState = RTW_LED_ON;
2474 if( pLed->bLedBlinkInProgress == _FALSE )
2476 pLed->BlinkingLedState = RTW_LED_ON;
2477 _set_timer(&(pLed->BlinkTimer), 0);
2481 case LED_CTL_NO_LINK:
2482 pLed->CurrLedState = RTW_LED_OFF;
2483 if( pLed->bLedBlinkInProgress == _FALSE )
2485 pLed->BlinkingLedState = RTW_LED_OFF;
2486 _set_timer(&(pLed->BlinkTimer), 0);
2490 case LED_CTL_POWER_OFF:
2491 pLed->CurrLedState = RTW_LED_OFF;
2492 if(pLed->bLedBlinkInProgress)
2494 _cancel_timer_ex(&(pLed->BlinkTimer));
2495 pLed->bLedBlinkInProgress = _FALSE;
2497 SwLedOff(padapter, pLed);
2500 case LED_CTL_START_WPS:
2501 if( pLed->bLedBlinkInProgress == _FALSE || pLed->CurrLedState == RTW_LED_ON)
2503 pLed->bLedBlinkInProgress = _TRUE;
2505 pLed->CurrLedState = LED_BLINK_WPS;
2506 pLed->BlinkTimes = 20;
2510 pLed->BlinkingLedState = RTW_LED_OFF;
2511 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);
2515 pLed->BlinkingLedState = RTW_LED_ON;
2516 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);
2521 case LED_CTL_STOP_WPS:
2522 if(pLed->bLedBlinkInProgress)
2524 pLed->CurrLedState = RTW_LED_OFF;
2525 _cancel_timer_ex(&(pLed->BlinkTimer));
2526 pLed->bLedBlinkInProgress = _FALSE;
2535 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));
2539 //ALPHA, added by chiyoko, 20090106
2543 LED_CTL_MODE LedAction
2546 struct led_priv *ledpriv = &(padapter->ledpriv);
2547 PLED_USB pLed = &(ledpriv->SwLed0);
2548 struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
2549 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
2551 u32 uLedBlinkNoLinkInterval = LED_BLINK_NO_LINK_INTERVAL_ALPHA; //add by ylb 20121012 for customer led for alpha
2552 if(pHalData->CustomerID == RT_CID_819x_ALPHA_Dlink)
2553 uLedBlinkNoLinkInterval= LED_BLINK_NO_LINK_INTERVAL_ALPHA_500MS;
2555 if(pHalData->CustomerID == RT_CID_819x_CAMEO)
2556 pLed = &(ledpriv->SwLed1);
2560 case LED_CTL_POWER_ON:
2561 case LED_CTL_START_TO_LINK:
2562 case LED_CTL_NO_LINK:
2563 if( pLed->bLedNoLinkBlinkInProgress == _FALSE )
2565 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
2569 if( pLed->bLedLinkBlinkInProgress == _TRUE )
2571 _cancel_timer_ex(&(pLed->BlinkTimer));
2572 pLed->bLedLinkBlinkInProgress = _FALSE;
2574 if(pLed->bLedBlinkInProgress ==_TRUE)
2576 _cancel_timer_ex(&(pLed->BlinkTimer));
2577 pLed->bLedBlinkInProgress = _FALSE;
2580 pLed->bLedNoLinkBlinkInProgress = _TRUE;
2581 pLed->CurrLedState = LED_BLINK_SLOWLY;
2583 pLed->BlinkingLedState = RTW_LED_OFF;
2585 pLed->BlinkingLedState = RTW_LED_ON;
2586 _set_timer(&(pLed->BlinkTimer), uLedBlinkNoLinkInterval);//change by ylb 20121012 for customer led for alpha
2591 if( pLed->bLedLinkBlinkInProgress == _FALSE )
2593 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
2597 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
2599 _cancel_timer_ex(&(pLed->BlinkTimer));
2600 pLed->bLedNoLinkBlinkInProgress = _FALSE;
2602 if(pLed->bLedBlinkInProgress ==_TRUE)
2604 _cancel_timer_ex(&(pLed->BlinkTimer));
2605 pLed->bLedBlinkInProgress = _FALSE;
2607 pLed->bLedLinkBlinkInProgress = _TRUE;
2608 pLed->CurrLedState = LED_BLINK_NORMAL;
2610 pLed->BlinkingLedState = RTW_LED_OFF;
2612 pLed->BlinkingLedState = RTW_LED_ON;
2613 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
2617 case LED_CTL_SITE_SURVEY:
2618 if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))
2620 else if(pLed->bLedScanBlinkInProgress ==_FALSE)
2622 if(IS_LED_WPS_BLINKING(pLed))
2625 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
2627 _cancel_timer_ex(&(pLed->BlinkTimer));
2628 pLed->bLedNoLinkBlinkInProgress = _FALSE;
2630 if( pLed->bLedLinkBlinkInProgress == _TRUE )
2632 _cancel_timer_ex(&(pLed->BlinkTimer));
2633 pLed->bLedLinkBlinkInProgress = _FALSE;
2635 if(pLed->bLedBlinkInProgress ==_TRUE)
2637 _cancel_timer_ex(&(pLed->BlinkTimer));
2638 pLed->bLedBlinkInProgress = _FALSE;
2640 pLed->bLedScanBlinkInProgress = _TRUE;
2641 pLed->CurrLedState = LED_BLINK_SCAN;
2642 pLed->BlinkTimes = 24;
2644 pLed->BlinkingLedState = RTW_LED_OFF;
2646 pLed->BlinkingLedState = RTW_LED_ON;
2648 if (adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason == RF_CHANGE_BY_IPS)
2649 _set_timer(&(pLed->BlinkTimer), LED_INITIAL_INTERVAL);
2651 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
2658 if(pLed->bLedBlinkInProgress ==_FALSE)
2660 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
2664 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
2666 _cancel_timer_ex(&(pLed->BlinkTimer));
2667 pLed->bLedNoLinkBlinkInProgress = _FALSE;
2669 if( pLed->bLedLinkBlinkInProgress == _TRUE )
2671 _cancel_timer_ex(&(pLed->BlinkTimer));
2672 pLed->bLedLinkBlinkInProgress = _FALSE;
2674 pLed->bLedBlinkInProgress = _TRUE;
2675 pLed->CurrLedState = LED_BLINK_TXRX;
2676 pLed->BlinkTimes = 2;
2678 pLed->BlinkingLedState = RTW_LED_OFF;
2680 pLed->BlinkingLedState = RTW_LED_ON;
2681 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
2685 case LED_CTL_START_WPS: //wait until xinpin finish
2686 case LED_CTL_START_WPS_BOTTON:
2687 if(pLed->bLedWPSBlinkInProgress ==_FALSE)
2689 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
2691 _cancel_timer_ex(&(pLed->BlinkTimer));
2692 pLed->bLedNoLinkBlinkInProgress = _FALSE;
2694 if( pLed->bLedLinkBlinkInProgress == _TRUE )
2696 _cancel_timer_ex(&(pLed->BlinkTimer));
2697 pLed->bLedLinkBlinkInProgress = _FALSE;
2699 if(pLed->bLedBlinkInProgress ==_TRUE)
2701 _cancel_timer_ex(&(pLed->BlinkTimer));
2702 pLed->bLedBlinkInProgress = _FALSE;
2704 if(pLed->bLedScanBlinkInProgress ==_TRUE)
2706 _cancel_timer_ex(&(pLed->BlinkTimer));
2707 pLed->bLedScanBlinkInProgress = _FALSE;
2709 pLed->bLedWPSBlinkInProgress = _TRUE;
2710 pLed->CurrLedState = LED_BLINK_WPS;
2712 pLed->BlinkingLedState = RTW_LED_OFF;
2714 pLed->BlinkingLedState = RTW_LED_ON;
2715 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
2720 case LED_CTL_STOP_WPS:
2721 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
2723 _cancel_timer_ex(&(pLed->BlinkTimer));
2724 pLed->bLedNoLinkBlinkInProgress = _FALSE;
2726 if( pLed->bLedLinkBlinkInProgress == _TRUE )
2728 _cancel_timer_ex(&(pLed->BlinkTimer));
2729 pLed->bLedLinkBlinkInProgress = _FALSE;
2731 if(pLed->bLedBlinkInProgress ==_TRUE)
2733 _cancel_timer_ex(&(pLed->BlinkTimer));
2734 pLed->bLedBlinkInProgress = _FALSE;
2736 if(pLed->bLedScanBlinkInProgress ==_TRUE)
2738 _cancel_timer_ex(&(pLed->BlinkTimer));
2739 pLed->bLedScanBlinkInProgress = _FALSE;
2741 if(pLed->bLedWPSBlinkInProgress)
2743 _cancel_timer_ex(&(pLed->BlinkTimer));
2747 pLed->bLedWPSBlinkInProgress = _TRUE;
2750 pLed->CurrLedState = LED_BLINK_WPS_STOP;
2753 pLed->BlinkingLedState = RTW_LED_OFF;
2754 _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);
2758 pLed->BlinkingLedState = RTW_LED_ON;
2759 _set_timer(&(pLed->BlinkTimer), 0);
2763 case LED_CTL_STOP_WPS_FAIL:
2764 if(pLed->bLedWPSBlinkInProgress)
2766 _cancel_timer_ex(&(pLed->BlinkTimer));
2767 pLed->bLedWPSBlinkInProgress = _FALSE;
2770 pLed->bLedNoLinkBlinkInProgress = _TRUE;
2771 pLed->CurrLedState = LED_BLINK_SLOWLY;
2773 pLed->BlinkingLedState = RTW_LED_OFF;
2775 pLed->BlinkingLedState = RTW_LED_ON;
2776 _set_timer(&(pLed->BlinkTimer), uLedBlinkNoLinkInterval);//change by ylb 20121012 for customer led for alpha
2779 case LED_CTL_POWER_OFF:
2780 pLed->CurrLedState = RTW_LED_OFF;
2781 pLed->BlinkingLedState = RTW_LED_OFF;
2782 if( pLed->bLedNoLinkBlinkInProgress)
2784 _cancel_timer_ex(&(pLed->BlinkTimer));
2785 pLed->bLedNoLinkBlinkInProgress = _FALSE;
2787 if( pLed->bLedLinkBlinkInProgress)
2789 _cancel_timer_ex(&(pLed->BlinkTimer));
2790 pLed->bLedLinkBlinkInProgress = _FALSE;
2792 if( pLed->bLedBlinkInProgress)
2794 _cancel_timer_ex(&(pLed->BlinkTimer));
2795 pLed->bLedBlinkInProgress = _FALSE;
2797 if( pLed->bLedWPSBlinkInProgress )
2799 _cancel_timer_ex(&(pLed->BlinkTimer));
2800 pLed->bLedWPSBlinkInProgress = _FALSE;
2802 if( pLed->bLedScanBlinkInProgress)
2804 _cancel_timer_ex(&(pLed->BlinkTimer));
2805 pLed->bLedScanBlinkInProgress = _FALSE;
2808 SwLedOff(padapter, pLed);
2816 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));
2819 //Arcadyan/Sitecom , added by chiyoko, 20090216
2823 LED_CTL_MODE LedAction
2826 struct led_priv *ledpriv = &(padapter->ledpriv);
2827 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
2828 PLED_USB pLed = &(ledpriv->SwLed0);
2832 case LED_CTL_SITE_SURVEY:
2833 if(pmlmepriv->LinkDetectInfo.bBusyTraffic)
2835 else if(pLed->bLedScanBlinkInProgress ==_FALSE)
2837 if(IS_LED_WPS_BLINKING(pLed))
2840 if(pLed->bLedBlinkInProgress ==_TRUE)
2842 _cancel_timer_ex(&(pLed->BlinkTimer));
2843 pLed->bLedBlinkInProgress = _FALSE;
2845 pLed->bLedScanBlinkInProgress = _TRUE;
2846 pLed->CurrLedState = LED_BLINK_SCAN;
2847 pLed->BlinkTimes = 24;
2849 pLed->BlinkingLedState = RTW_LED_OFF;
2851 pLed->BlinkingLedState = RTW_LED_ON;
2852 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
2858 if((pLed->bLedBlinkInProgress ==_FALSE) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))
2860 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
2865 pLed->bLedBlinkInProgress = _TRUE;
2866 pLed->CurrLedState = LED_BLINK_TXRX;
2867 pLed->BlinkTimes = 2;
2869 pLed->BlinkingLedState = RTW_LED_OFF;
2871 pLed->BlinkingLedState = RTW_LED_ON;
2872 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
2877 pLed->CurrLedState = RTW_LED_ON;
2878 pLed->BlinkingLedState = RTW_LED_ON;
2879 if( pLed->bLedBlinkInProgress)
2881 _cancel_timer_ex(&(pLed->BlinkTimer));
2882 pLed->bLedBlinkInProgress = _FALSE;
2884 if( pLed->bLedScanBlinkInProgress)
2886 _cancel_timer_ex(&(pLed->BlinkTimer));
2887 pLed->bLedScanBlinkInProgress = _FALSE;
2890 _set_timer(&(pLed->BlinkTimer), 0);
2893 case LED_CTL_START_WPS: //wait until xinpin finish
2894 case LED_CTL_START_WPS_BOTTON:
2895 if(pLed->bLedWPSBlinkInProgress ==_FALSE)
2897 if(pLed->bLedBlinkInProgress ==_TRUE)
2899 _cancel_timer_ex(&(pLed->BlinkTimer));
2900 pLed->bLedBlinkInProgress = _FALSE;
2902 if(pLed->bLedScanBlinkInProgress ==_TRUE)
2904 _cancel_timer_ex(&(pLed->BlinkTimer));
2905 pLed->bLedScanBlinkInProgress = _FALSE;
2907 pLed->bLedWPSBlinkInProgress = _TRUE;
2908 pLed->CurrLedState = RTW_LED_ON;
2909 pLed->BlinkingLedState = RTW_LED_ON;
2910 _set_timer(&(pLed->BlinkTimer), 0);
2914 case LED_CTL_STOP_WPS:
2915 pLed->bLedWPSBlinkInProgress = _FALSE;
2916 if(adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on)
2918 pLed->CurrLedState = RTW_LED_OFF;
2919 pLed->BlinkingLedState = RTW_LED_OFF;
2920 _set_timer(&(pLed->BlinkTimer), 0);
2924 pLed->CurrLedState = RTW_LED_ON;
2925 pLed->BlinkingLedState = RTW_LED_ON;
2926 _set_timer(&(pLed->BlinkTimer), 0);
2927 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
2931 case LED_CTL_STOP_WPS_FAIL:
2932 pLed->bLedWPSBlinkInProgress = _FALSE;
2933 pLed->CurrLedState = RTW_LED_OFF;
2934 pLed->BlinkingLedState = RTW_LED_OFF;
2935 _set_timer(&(pLed->BlinkTimer), 0);
2936 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
2939 case LED_CTL_START_TO_LINK:
2940 case LED_CTL_NO_LINK:
2941 if(!IS_LED_BLINKING(pLed))
2943 pLed->CurrLedState = RTW_LED_OFF;
2944 pLed->BlinkingLedState = RTW_LED_OFF;
2945 _set_timer(&(pLed->BlinkTimer), 0);
2949 case LED_CTL_POWER_OFF:
2950 pLed->CurrLedState = RTW_LED_OFF;
2951 pLed->BlinkingLedState = RTW_LED_OFF;
2952 if( pLed->bLedBlinkInProgress)
2954 _cancel_timer_ex(&(pLed->BlinkTimer));
2955 pLed->bLedBlinkInProgress = _FALSE;
2957 if( pLed->bLedScanBlinkInProgress)
2959 _cancel_timer_ex(&(pLed->BlinkTimer));
2960 pLed->bLedScanBlinkInProgress = _FALSE;
2962 if( pLed->bLedWPSBlinkInProgress )
2964 _cancel_timer_ex(&(pLed->BlinkTimer));
2965 pLed->bLedWPSBlinkInProgress = _FALSE;
2968 SwLedOff(padapter, pLed);
2976 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
2979 //COREGA, added by chiyoko, 20090316
2983 LED_CTL_MODE LedAction
2986 struct led_priv *ledpriv = &(padapter->ledpriv);
2987 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
2988 PLED_USB pLed = &(ledpriv->SwLed0);
2992 case LED_CTL_SITE_SURVEY:
2993 if(pmlmepriv->LinkDetectInfo.bBusyTraffic)
2995 else if(pLed->bLedScanBlinkInProgress ==_FALSE)
2997 if(IS_LED_WPS_BLINKING(pLed))
3000 if(pLed->bLedBlinkInProgress ==_TRUE)
3002 _cancel_timer_ex(&(pLed->BlinkTimer));
3003 pLed->bLedBlinkInProgress = _FALSE;
3005 pLed->bLedScanBlinkInProgress = _TRUE;
3006 pLed->CurrLedState = LED_BLINK_SCAN;
3007 pLed->BlinkTimes = 24;
3009 pLed->BlinkingLedState = RTW_LED_OFF;
3011 pLed->BlinkingLedState = RTW_LED_ON;
3012 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
3018 if((pLed->bLedBlinkInProgress ==_FALSE) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))
3020 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
3025 pLed->bLedBlinkInProgress = _TRUE;
3026 pLed->CurrLedState = LED_BLINK_TXRX;
3027 pLed->BlinkTimes = 2;
3029 pLed->BlinkingLedState = RTW_LED_OFF;
3031 pLed->BlinkingLedState = RTW_LED_ON;
3032 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
3037 if(IS_LED_WPS_BLINKING(pLed))
3040 pLed->CurrLedState = RTW_LED_ON;
3041 pLed->BlinkingLedState = RTW_LED_ON;
3042 if( pLed->bLedBlinkInProgress)
3044 _cancel_timer_ex(&(pLed->BlinkTimer));
3045 pLed->bLedBlinkInProgress = _FALSE;
3047 if( pLed->bLedScanBlinkInProgress)
3049 _cancel_timer_ex(&(pLed->BlinkTimer));
3050 pLed->bLedScanBlinkInProgress = _FALSE;
3053 _set_timer(&(pLed->BlinkTimer), 0);
3056 case LED_CTL_START_WPS: //wait until xinpin finish
3057 case LED_CTL_START_WPS_BOTTON:
3058 if(pLed->bLedWPSBlinkInProgress ==_FALSE)
3060 if(pLed->bLedBlinkInProgress ==_TRUE)
3062 _cancel_timer_ex(&(pLed->BlinkTimer));
3063 pLed->bLedBlinkInProgress = _FALSE;
3065 if(pLed->bLedScanBlinkInProgress ==_TRUE)
3067 _cancel_timer_ex(&(pLed->BlinkTimer));
3068 pLed->bLedScanBlinkInProgress = _FALSE;
3070 pLed->bLedWPSBlinkInProgress = _TRUE;
3071 pLed->CurrLedState = LED_BLINK_WPS;
3073 pLed->BlinkingLedState = RTW_LED_OFF;
3075 pLed->BlinkingLedState = RTW_LED_ON;
3076 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
3080 case LED_CTL_STOP_WPS:
3081 if(pLed->bLedWPSBlinkInProgress)
3083 _cancel_timer_ex(&(pLed->BlinkTimer));
3084 pLed->bLedWPSBlinkInProgress = _FALSE;
3088 pLed->bLedWPSBlinkInProgress = _TRUE;
3091 pLed->CurrLedState = LED_BLINK_WPS_STOP;
3094 pLed->BlinkingLedState = RTW_LED_OFF;
3095 _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);
3099 pLed->BlinkingLedState = RTW_LED_ON;
3100 _set_timer(&(pLed->BlinkTimer), 0);
3105 case LED_CTL_STOP_WPS_FAIL:
3106 if(pLed->bLedWPSBlinkInProgress)
3108 _cancel_timer_ex(&(pLed->BlinkTimer));
3109 pLed->bLedWPSBlinkInProgress = _FALSE;
3112 pLed->CurrLedState = RTW_LED_OFF;
3113 pLed->BlinkingLedState = RTW_LED_OFF;
3114 _set_timer(&(pLed->BlinkTimer), 0);
3117 case LED_CTL_START_TO_LINK:
3118 case LED_CTL_NO_LINK:
3119 if(!IS_LED_BLINKING(pLed))
3121 pLed->CurrLedState = RTW_LED_OFF;
3122 pLed->BlinkingLedState = RTW_LED_OFF;
3123 _set_timer(&(pLed->BlinkTimer), 0);
3127 case LED_CTL_POWER_OFF:
3128 pLed->CurrLedState = RTW_LED_OFF;
3129 pLed->BlinkingLedState = RTW_LED_OFF;
3130 if( pLed->bLedBlinkInProgress)
3132 _cancel_timer_ex(&(pLed->BlinkTimer));
3133 pLed->bLedBlinkInProgress = _FALSE;
3135 if( pLed->bLedScanBlinkInProgress)
3137 _cancel_timer_ex(&(pLed->BlinkTimer));
3138 pLed->bLedScanBlinkInProgress = _FALSE;
3140 if( pLed->bLedWPSBlinkInProgress )
3142 _cancel_timer_ex(&(pLed->BlinkTimer));
3143 pLed->bLedWPSBlinkInProgress = _FALSE;
3146 SwLedOff(padapter, pLed);
3154 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));
3158 //Edimax-Belkin, added by chiyoko, 20090413
3162 LED_CTL_MODE LedAction
3165 struct led_priv *ledpriv = &(padapter->ledpriv);
3166 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
3167 PLED_USB pLed = &(ledpriv->SwLed0);
3168 PLED_USB pLed1 = &(ledpriv->SwLed1);
3172 case LED_CTL_START_TO_LINK:
3173 if(pLed1->bLedWPSBlinkInProgress)
3175 pLed1->bLedWPSBlinkInProgress = _FALSE;
3176 _cancel_timer_ex(&(pLed1->BlinkTimer));
3178 pLed1->BlinkingLedState = RTW_LED_OFF;
3179 pLed1->CurrLedState = RTW_LED_OFF;
3182 _set_timer(&(pLed->BlinkTimer), 0);
3185 if( pLed->bLedStartToLinkBlinkInProgress == _FALSE )
3187 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
3191 if(pLed->bLedBlinkInProgress ==_TRUE)
3193 _cancel_timer_ex(&(pLed->BlinkTimer));
3194 pLed->bLedBlinkInProgress = _FALSE;
3196 if(pLed->bLedNoLinkBlinkInProgress ==_TRUE)
3198 _cancel_timer_ex(&(pLed->BlinkTimer));
3199 pLed->bLedNoLinkBlinkInProgress = _FALSE;
3202 pLed->bLedStartToLinkBlinkInProgress = _TRUE;
3203 pLed->CurrLedState = LED_BLINK_StartToBlink;
3206 pLed->BlinkingLedState = RTW_LED_OFF;
3207 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
3211 pLed->BlinkingLedState = RTW_LED_ON;
3212 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
3218 case LED_CTL_NO_LINK:
3220 if(LedAction == LED_CTL_LINK)
3222 if(pLed1->bLedWPSBlinkInProgress)
3224 pLed1->bLedWPSBlinkInProgress = _FALSE;
3225 _cancel_timer_ex(&(pLed1->BlinkTimer));
3227 pLed1->BlinkingLedState = RTW_LED_OFF;
3228 pLed1->CurrLedState = RTW_LED_OFF;
3231 _set_timer(&(pLed->BlinkTimer), 0);
3235 if( pLed->bLedNoLinkBlinkInProgress == _FALSE )
3237 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
3241 if(pLed->bLedBlinkInProgress ==_TRUE)
3243 _cancel_timer_ex(&(pLed->BlinkTimer));
3244 pLed->bLedBlinkInProgress = _FALSE;
3247 pLed->bLedNoLinkBlinkInProgress = _TRUE;
3248 pLed->CurrLedState = LED_BLINK_SLOWLY;
3250 pLed->BlinkingLedState = RTW_LED_OFF;
3252 pLed->BlinkingLedState = RTW_LED_ON;
3254 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
3258 case LED_CTL_SITE_SURVEY:
3259 if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))
3261 else if(pLed->bLedScanBlinkInProgress ==_FALSE)
3263 if(IS_LED_WPS_BLINKING(pLed))
3266 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
3268 _cancel_timer_ex(&(pLed->BlinkTimer));
3269 pLed->bLedNoLinkBlinkInProgress = _FALSE;
3271 if(pLed->bLedBlinkInProgress ==_TRUE)
3273 _cancel_timer_ex(&(pLed->BlinkTimer));
3274 pLed->bLedBlinkInProgress = _FALSE;
3276 pLed->bLedScanBlinkInProgress = _TRUE;
3277 pLed->CurrLedState = LED_BLINK_SCAN;
3278 pLed->BlinkTimes = 24;
3280 pLed->BlinkingLedState = RTW_LED_OFF;
3282 pLed->BlinkingLedState = RTW_LED_ON;
3283 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
3289 if(pLed->bLedBlinkInProgress ==_FALSE)
3291 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
3295 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
3297 _cancel_timer_ex(&(pLed->BlinkTimer));
3298 pLed->bLedNoLinkBlinkInProgress = _FALSE;
3300 pLed->bLedBlinkInProgress = _TRUE;
3301 pLed->CurrLedState = LED_BLINK_TXRX;
3302 pLed->BlinkTimes = 2;
3304 pLed->BlinkingLedState = RTW_LED_OFF;
3306 pLed->BlinkingLedState = RTW_LED_ON;
3307 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
3311 case LED_CTL_START_WPS: //wait until xinpin finish
3312 case LED_CTL_START_WPS_BOTTON:
3313 if(pLed1->bLedWPSBlinkInProgress)
3315 pLed1->bLedWPSBlinkInProgress = _FALSE;
3316 _cancel_timer_ex(&(pLed1->BlinkTimer));
3318 pLed1->BlinkingLedState = RTW_LED_OFF;
3319 pLed1->CurrLedState = RTW_LED_OFF;
3322 _set_timer(&(pLed->BlinkTimer), 0);
3325 if(pLed->bLedWPSBlinkInProgress ==_FALSE)
3327 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
3329 _cancel_timer_ex(&(pLed->BlinkTimer));
3330 pLed->bLedNoLinkBlinkInProgress = _FALSE;
3332 if(pLed->bLedBlinkInProgress ==_TRUE)
3334 _cancel_timer_ex(&(pLed->BlinkTimer));
3335 pLed->bLedBlinkInProgress = _FALSE;
3337 if(pLed->bLedScanBlinkInProgress ==_TRUE)
3339 _cancel_timer_ex(&(pLed->BlinkTimer));
3340 pLed->bLedScanBlinkInProgress = _FALSE;
3342 pLed->bLedWPSBlinkInProgress = _TRUE;
3343 pLed->CurrLedState = LED_BLINK_WPS;
3346 pLed->BlinkingLedState = RTW_LED_OFF;
3347 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
3351 pLed->BlinkingLedState = RTW_LED_ON;
3352 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
3357 case LED_CTL_STOP_WPS: //WPS connect success
3358 if(pLed->bLedWPSBlinkInProgress)
3360 _cancel_timer_ex(&(pLed->BlinkTimer));
3361 pLed->bLedWPSBlinkInProgress = _FALSE;
3364 pLed->bLedNoLinkBlinkInProgress = _TRUE;
3365 pLed->CurrLedState = LED_BLINK_SLOWLY;
3367 pLed->BlinkingLedState = RTW_LED_OFF;
3369 pLed->BlinkingLedState = RTW_LED_ON;
3370 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
3374 case LED_CTL_STOP_WPS_FAIL: //WPS authentication fail
3375 if(pLed->bLedWPSBlinkInProgress)
3377 _cancel_timer_ex(&(pLed->BlinkTimer));
3378 pLed->bLedWPSBlinkInProgress = _FALSE;
3381 pLed->bLedNoLinkBlinkInProgress = _TRUE;
3382 pLed->CurrLedState = LED_BLINK_SLOWLY;
3384 pLed->BlinkingLedState = RTW_LED_OFF;
3386 pLed->BlinkingLedState = RTW_LED_ON;
3387 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
3390 if(pLed1->bLedWPSBlinkInProgress)
3391 _cancel_timer_ex(&(pLed1->BlinkTimer));
3393 pLed1->bLedWPSBlinkInProgress = _TRUE;
3395 pLed1->CurrLedState = LED_BLINK_WPS_STOP;
3397 pLed1->BlinkingLedState = RTW_LED_OFF;
3399 pLed1->BlinkingLedState = RTW_LED_ON;
3400 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
3404 case LED_CTL_STOP_WPS_FAIL_OVERLAP: //WPS session overlap
3405 if(pLed->bLedWPSBlinkInProgress)
3407 _cancel_timer_ex(&(pLed->BlinkTimer));
3408 pLed->bLedWPSBlinkInProgress = _FALSE;
3411 pLed->bLedNoLinkBlinkInProgress = _TRUE;
3412 pLed->CurrLedState = LED_BLINK_SLOWLY;
3414 pLed->BlinkingLedState = RTW_LED_OFF;
3416 pLed->BlinkingLedState = RTW_LED_ON;
3417 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
3420 if(pLed1->bLedWPSBlinkInProgress)
3421 _cancel_timer_ex(&(pLed1->BlinkTimer));
3423 pLed1->bLedWPSBlinkInProgress = _TRUE;
3425 pLed1->CurrLedState = LED_BLINK_WPS_STOP_OVERLAP;
3426 pLed1->BlinkTimes = 10;
3428 pLed1->BlinkingLedState = RTW_LED_OFF;
3430 pLed1->BlinkingLedState = RTW_LED_ON;
3431 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
3435 case LED_CTL_POWER_OFF:
3436 pLed->CurrLedState = RTW_LED_OFF;
3437 pLed->BlinkingLedState = RTW_LED_OFF;
3439 if( pLed->bLedNoLinkBlinkInProgress)
3441 _cancel_timer_ex(&(pLed->BlinkTimer));
3442 pLed->bLedNoLinkBlinkInProgress = _FALSE;
3444 if( pLed->bLedLinkBlinkInProgress)
3446 _cancel_timer_ex(&(pLed->BlinkTimer));
3447 pLed->bLedLinkBlinkInProgress = _FALSE;
3449 if( pLed->bLedBlinkInProgress)
3451 _cancel_timer_ex(&(pLed->BlinkTimer));
3452 pLed->bLedBlinkInProgress = _FALSE;
3454 if( pLed->bLedWPSBlinkInProgress )
3456 _cancel_timer_ex(&(pLed->BlinkTimer));
3457 pLed->bLedWPSBlinkInProgress = _FALSE;
3459 if( pLed->bLedScanBlinkInProgress)
3461 _cancel_timer_ex(&(pLed->BlinkTimer));
3462 pLed->bLedScanBlinkInProgress = _FALSE;
3464 if( pLed->bLedStartToLinkBlinkInProgress)
3466 _cancel_timer_ex(&(pLed->BlinkTimer));
3467 pLed->bLedStartToLinkBlinkInProgress = _FALSE;
3470 if( pLed1->bLedWPSBlinkInProgress )
3472 _cancel_timer_ex(&(pLed1->BlinkTimer));
3473 pLed1->bLedWPSBlinkInProgress = _FALSE;
3476 pLed1->BlinkingLedState = LED_UNKNOWN;
3477 SwLedOff(padapter, pLed);
3478 SwLedOff(padapter, pLed1);
3481 case LED_CTL_CONNECTION_NO_TRANSFER:
3482 if(pLed->bLedBlinkInProgress == _FALSE)
3484 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
3486 _cancel_timer_ex(&(pLed->BlinkTimer));
3487 pLed->bLedNoLinkBlinkInProgress = _FALSE;
3489 pLed->bLedBlinkInProgress = _TRUE;
3491 pLed->CurrLedState = LED_BLINK_ALWAYS_ON;
3492 pLed->BlinkingLedState = RTW_LED_ON;
3493 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
3502 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));
3507 //Sercomm-Belkin, added by chiyoko, 20090415
3511 LED_CTL_MODE LedAction
3514 struct led_priv *ledpriv = &(padapter->ledpriv);
3515 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
3516 PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter);
3517 PLED_USB pLed = &(ledpriv->SwLed0);
3519 if(pHalData->CustomerID == RT_CID_819x_CAMEO)
3520 pLed = &(ledpriv->SwLed1);
3524 case LED_CTL_POWER_ON:
3525 case LED_CTL_NO_LINK:
3526 case LED_CTL_LINK: //solid blue
3527 pLed->CurrLedState = RTW_LED_ON;
3528 pLed->BlinkingLedState = RTW_LED_ON;
3530 _set_timer(&(pLed->BlinkTimer), 0);
3533 case LED_CTL_SITE_SURVEY:
3534 if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))
3536 else if(pLed->bLedScanBlinkInProgress ==_FALSE)
3538 if(pLed->bLedBlinkInProgress ==_TRUE)
3540 _cancel_timer_ex(&(pLed->BlinkTimer));
3541 pLed->bLedBlinkInProgress = _FALSE;
3543 pLed->bLedScanBlinkInProgress = _TRUE;
3544 pLed->CurrLedState = LED_BLINK_SCAN;
3545 pLed->BlinkTimes = 24;
3547 pLed->BlinkingLedState = RTW_LED_OFF;
3549 pLed->BlinkingLedState = RTW_LED_ON;
3550 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
3556 if(pLed->bLedBlinkInProgress ==_FALSE)
3558 if(pLed->CurrLedState == LED_BLINK_SCAN)
3562 pLed->bLedBlinkInProgress = _TRUE;
3563 pLed->CurrLedState = LED_BLINK_TXRX;
3564 pLed->BlinkTimes = 2;
3566 pLed->BlinkingLedState = RTW_LED_OFF;
3568 pLed->BlinkingLedState = RTW_LED_ON;
3569 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
3573 case LED_CTL_POWER_OFF:
3574 pLed->CurrLedState = RTW_LED_OFF;
3575 pLed->BlinkingLedState = RTW_LED_OFF;
3577 if( pLed->bLedBlinkInProgress)
3579 _cancel_timer_ex(&(pLed->BlinkTimer));
3580 pLed->bLedBlinkInProgress = _FALSE;
3583 SwLedOff(padapter, pLed);
3591 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));
3594 //WNC-Corega, added by chiyoko, 20090902
3598 LED_CTL_MODE LedAction
3601 struct led_priv *ledpriv = &(padapter->ledpriv);
3602 struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
3603 PLED_USB pLed0 = &(ledpriv->SwLed0);
3607 case LED_CTL_POWER_ON:
3609 case LED_CTL_NO_LINK:
3610 _cancel_timer_ex(&(pLed0->BlinkTimer));
3611 pLed0->CurrLedState = RTW_LED_ON;
3612 pLed0->BlinkingLedState = RTW_LED_ON;
3613 _set_timer(&(pLed0->BlinkTimer), 0);
3616 case LED_CTL_POWER_OFF:
3617 SwLedOff(padapter, pLed0);
3624 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("ledcontrol 6 Led %d\n", pLed0->CurrLedState));
3627 //Netgear, added by sinda, 2011/11/11
3631 LED_CTL_MODE LedAction
3634 struct led_priv *ledpriv = &(Adapter->ledpriv);
3635 struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
3636 PLED_USB pLed = &(ledpriv->SwLed0);
3640 case LED_CTL_SITE_SURVEY:
3641 if(pmlmepriv->LinkDetectInfo.bBusyTraffic)
3643 else if(pLed->bLedScanBlinkInProgress == _FALSE)
3645 if(IS_LED_WPS_BLINKING(pLed))
3648 if(pLed->bLedBlinkInProgress == _TRUE)
3650 _cancel_timer_ex(&(pLed->BlinkTimer));
3651 pLed->bLedBlinkInProgress = _FALSE;
3653 pLed->bLedScanBlinkInProgress = _TRUE;
3654 pLed->CurrLedState = LED_BLINK_SCAN;
3655 pLed->BlinkTimes = 6;
3657 pLed->BlinkingLedState = RTW_LED_OFF;
3659 pLed->BlinkingLedState = RTW_LED_ON;
3660 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);
3665 if(IS_LED_WPS_BLINKING(pLed))
3668 pLed->CurrLedState = RTW_LED_ON;
3669 pLed->BlinkingLedState = RTW_LED_ON;
3670 if( pLed->bLedBlinkInProgress)
3672 _cancel_timer_ex(&(pLed->BlinkTimer));
3673 pLed->bLedBlinkInProgress = _FALSE;
3675 if( pLed->bLedScanBlinkInProgress)
3677 _cancel_timer_ex(&(pLed->BlinkTimer));
3678 pLed->bLedScanBlinkInProgress = _FALSE;
3681 _set_timer(&(pLed->BlinkTimer), 0);
3684 case LED_CTL_START_WPS: //wait until xinpin finish
3685 case LED_CTL_START_WPS_BOTTON:
3686 if(pLed->bLedWPSBlinkInProgress ==_FALSE)
3688 if(pLed->bLedBlinkInProgress == _TRUE)
3690 _cancel_timer_ex(&(pLed->BlinkTimer));
3691 pLed->bLedBlinkInProgress = _FALSE;
3693 if(pLed->bLedScanBlinkInProgress == _TRUE)
3695 _cancel_timer_ex(&(pLed->BlinkTimer));
3696 pLed->bLedScanBlinkInProgress = _FALSE;
3698 pLed->bLedWPSBlinkInProgress = _TRUE;
3699 pLed->CurrLedState = LED_BLINK_WPS;
3701 pLed->BlinkingLedState = RTW_LED_OFF;
3703 pLed->BlinkingLedState = RTW_LED_ON;
3704 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);
3708 case LED_CTL_STOP_WPS:
3709 if(pLed->bLedWPSBlinkInProgress)
3711 _cancel_timer_ex(&(pLed->BlinkTimer));
3712 pLed->bLedWPSBlinkInProgress = _FALSE;
3716 pLed->bLedWPSBlinkInProgress = _TRUE;
3719 pLed->CurrLedState = LED_BLINK_WPS_STOP;
3722 pLed->BlinkingLedState = RTW_LED_OFF;
3723 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);
3727 pLed->BlinkingLedState = RTW_LED_ON;
3728 _set_timer(&(pLed->BlinkTimer), 0);
3734 case LED_CTL_STOP_WPS_FAIL:
3735 case LED_CTL_STOP_WPS_FAIL_OVERLAP: //WPS session overlap
3736 if(pLed->bLedWPSBlinkInProgress)
3738 _cancel_timer_ex(&(pLed->BlinkTimer));
3739 pLed->bLedWPSBlinkInProgress = _FALSE;
3742 pLed->CurrLedState = RTW_LED_OFF;
3743 pLed->BlinkingLedState = RTW_LED_OFF;
3744 _set_timer(&(pLed->BlinkTimer), 0);
3747 case LED_CTL_START_TO_LINK:
3748 case LED_CTL_NO_LINK:
3749 if(!IS_LED_BLINKING(pLed))
3751 pLed->CurrLedState = RTW_LED_OFF;
3752 pLed->BlinkingLedState = RTW_LED_OFF;
3753 _set_timer(&(pLed->BlinkTimer), 0);
3757 case LED_CTL_POWER_OFF:
3758 case LED_CTL_POWER_ON:
3759 pLed->CurrLedState = RTW_LED_OFF;
3760 pLed->BlinkingLedState = RTW_LED_OFF;
3761 if( pLed->bLedBlinkInProgress)
3763 _cancel_timer_ex(&(pLed->BlinkTimer));
3764 pLed->bLedBlinkInProgress = _FALSE;
3766 if( pLed->bLedScanBlinkInProgress)
3768 _cancel_timer_ex(&(pLed->BlinkTimer));
3769 pLed->bLedScanBlinkInProgress = _FALSE;
3771 if( pLed->bLedWPSBlinkInProgress )
3773 _cancel_timer_ex(&(pLed->BlinkTimer));
3774 pLed->bLedWPSBlinkInProgress = _FALSE;
3777 _set_timer(&(pLed->BlinkTimer), 0);
3785 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("LEd control mode 7 CurrLedState %d\n", pLed->CurrLedState));
3791 LED_CTL_MODE LedAction
3794 struct led_priv *ledpriv = &(Adapter->ledpriv);
3795 struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
3796 PLED_USB pLed0 = &(ledpriv->SwLed0);
3801 _cancel_timer_ex(&(pLed0->BlinkTimer));
3802 pLed0->CurrLedState = RTW_LED_ON;
3803 pLed0->BlinkingLedState = RTW_LED_ON;
3804 _set_timer(&(pLed0->BlinkTimer), 0);
3807 case LED_CTL_NO_LINK:
3808 _cancel_timer_ex(&(pLed0->BlinkTimer));
3809 pLed0->CurrLedState = RTW_LED_OFF;
3810 pLed0->BlinkingLedState = RTW_LED_OFF;
3811 _set_timer(&(pLed0->BlinkTimer), 0);
3814 case LED_CTL_POWER_OFF:
3815 SwLedOff(Adapter, pLed0);
3822 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 8 %d\n", pLed0->CurrLedState));
3826 //page added for Belkin AC950, 20120813
3829 IN PADAPTER Adapter,
3830 IN LED_CTL_MODE LedAction
3833 struct led_priv *ledpriv = &(Adapter->ledpriv);
3834 struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
3835 PLED_USB pLed = &(ledpriv->SwLed0);
3836 PLED_USB pLed1 = &(ledpriv->SwLed1);
3837 PLED_USB pLed2 = &(ledpriv->SwLed2);
3838 BOOLEAN bWPSOverLap = _FALSE;
3839 //DBG_871X("LedAction=%d \n", LedAction);
3842 case LED_CTL_START_TO_LINK:
3843 if(pLed2->bLedBlinkInProgress == _FALSE)
3845 pLed2->bLedBlinkInProgress = _TRUE;
3846 pLed2->BlinkingLedState = RTW_LED_ON;
3847 pLed2->CurrLedState = LED_BLINK_LINK_IN_PROCESS;
3849 _set_timer(&(pLed2->BlinkTimer), 0);
3854 case LED_CTL_NO_LINK:
3856 if(LedAction == LED_CTL_NO_LINK)
3858 //if(pMgntInfo->AuthStatus == AUTH_STATUS_FAILED)
3861 pLed1->CurrLedState = LED_BLINK_AUTH_ERROR;
3863 pLed1->BlinkingLedState = RTW_LED_OFF;
3865 pLed1->BlinkingLedState = RTW_LED_ON;
3866 _set_timer(&(pLed1->BlinkTimer), 0);
3870 pLed1->CurrLedState = RTW_LED_OFF;
3871 pLed1->BlinkingLedState = RTW_LED_OFF;
3873 _set_timer(&(pLed1->BlinkTimer), 0);
3878 pLed1->CurrLedState = RTW_LED_OFF;
3879 pLed1->BlinkingLedState = RTW_LED_OFF;
3881 _set_timer(&(pLed1->BlinkTimer), 0);
3885 if(LedAction == LED_CTL_LINK)
3887 if(Adapter->securitypriv.dot11PrivacyAlgrthm != _NO_PRIVACY_)
3889 if(pLed2->bLedBlinkInProgress ==_TRUE)
3891 _cancel_timer_ex(&(pLed2->BlinkTimer));
3892 pLed2->bLedBlinkInProgress = _FALSE;
3894 pLed2->CurrLedState = RTW_LED_ON;
3895 pLed2->bLedNoLinkBlinkInProgress = _TRUE;
3897 _set_timer(&(pLed2->BlinkTimer), 0);
3901 if(pLed2->bLedWPSBlinkInProgress != _TRUE)
3903 pLed2->CurrLedState = RTW_LED_OFF;
3904 pLed2->BlinkingLedState = RTW_LED_OFF;
3906 _set_timer(&(pLed2->BlinkTimer), 0);
3912 if(pLed2->bLedWPSBlinkInProgress == _FALSE)
3914 pLed2->CurrLedState = RTW_LED_OFF;
3915 pLed2->BlinkingLedState = RTW_LED_OFF;
3917 _set_timer(&(pLed2->BlinkTimer), 0);
3922 if( pLed->bLedNoLinkBlinkInProgress == _FALSE )
3924 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
3928 if(pLed->bLedBlinkInProgress == _TRUE)
3930 _cancel_timer_ex(&(pLed->BlinkTimer));
3931 pLed->bLedBlinkInProgress = _FALSE;
3934 pLed->bLedNoLinkBlinkInProgress = _TRUE;
3935 if(IS_HARDWARE_TYPE_8812AU(Adapter))
3937 if(LedAction == LED_CTL_LINK)
3939 pLed->BlinkingLedState = RTW_LED_ON;
3940 pLed->CurrLedState = LED_BLINK_SLOWLY;
3944 pLed->CurrLedState = LED_BLINK_SLOWLY;
3946 pLed->BlinkingLedState = RTW_LED_OFF;
3948 pLed->BlinkingLedState = RTW_LED_ON;
3953 pLed->CurrLedState = LED_BLINK_SLOWLY;
3955 pLed->BlinkingLedState = RTW_LED_OFF;
3957 pLed->BlinkingLedState = RTW_LED_ON;
3959 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
3964 case LED_CTL_SITE_SURVEY:
3965 if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))
3967 else //if(pLed->bLedScanBlinkInProgress ==FALSE)
3969 if(IS_LED_WPS_BLINKING(pLed))
3972 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
3974 _cancel_timer_ex(&(pLed->BlinkTimer));
3975 pLed->bLedNoLinkBlinkInProgress = _FALSE;
3977 if(pLed->bLedBlinkInProgress == _TRUE)
3979 _cancel_timer_ex(&(pLed->BlinkTimer));
3980 pLed->bLedBlinkInProgress = _FALSE;
3982 pLed->bLedScanBlinkInProgress = _TRUE;
3983 pLed->CurrLedState = LED_BLINK_SCAN;
3984 pLed->BlinkTimes = 24;
3986 pLed->BlinkingLedState = RTW_LED_OFF;
3988 pLed->BlinkingLedState = RTW_LED_ON;
3989 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
3996 if(pLed->bLedBlinkInProgress == _FALSE)
3998 if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
4002 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
4004 _cancel_timer_ex(&(pLed->BlinkTimer));
4005 pLed->bLedNoLinkBlinkInProgress = _FALSE;
4007 pLed->bLedBlinkInProgress = _TRUE;
4008 pLed->CurrLedState = LED_BLINK_TXRX;
4009 pLed->BlinkTimes = 2;
4011 pLed->BlinkingLedState = RTW_LED_OFF;
4013 pLed->BlinkingLedState = RTW_LED_ON;
4014 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
4018 case LED_CTL_START_WPS: //wait until xinpin finish
4019 case LED_CTL_START_WPS_BOTTON:
4020 pLed2->bLedBlinkInProgress = _TRUE;
4021 pLed2->BlinkingLedState = RTW_LED_ON;
4022 pLed2->CurrLedState = LED_BLINK_LINK_IN_PROCESS;
4023 pLed2->bLedWPSBlinkInProgress = _TRUE;
4025 _set_timer(&(pLed2->BlinkTimer), 500);
4029 case LED_CTL_STOP_WPS: //WPS connect success
4031 if(pLed2->bLedWPSBlinkInProgress == _TRUE)
4033 _cancel_timer_ex(&(pLed2->BlinkTimer));
4034 pLed2->bLedBlinkInProgress = _FALSE;
4035 pLed2->bLedWPSBlinkInProgress = _FALSE;
4037 pLed2->CurrLedState = RTW_LED_ON;
4038 pLed2->bLedNoLinkBlinkInProgress = _TRUE;
4040 _set_timer(&(pLed2->BlinkTimer), 0);
4043 _cancel_timer_ex(&(pLed1->BlinkTimer));
4044 pLed1->CurrLedState = RTW_LED_OFF;
4045 pLed1->BlinkingLedState = RTW_LED_OFF;
4047 _set_timer(&(pLed1->BlinkTimer), 0);
4052 case LED_CTL_STOP_WPS_FAIL: //WPS authentication fail
4054 //if(bWPSOverLap == _FALSE)
4056 pLed1->CurrLedState = LED_BLINK_AUTH_ERROR;
4057 pLed1->BlinkTimes = 50;
4059 pLed1->BlinkingLedState = RTW_LED_OFF;
4061 pLed1->BlinkingLedState = RTW_LED_ON;
4062 _set_timer(&(pLed1->BlinkTimer), 0);
4066 // bWPSOverLap = _FALSE;
4067 // pLed1->CurrLedState = RTW_LED_OFF;
4068 // pLed1->BlinkingLedState = RTW_LED_OFF;
4069 // _set_timer(&(pLed1->BlinkTimer), 0);
4073 pLed2->CurrLedState = RTW_LED_OFF;
4074 pLed2->BlinkingLedState = RTW_LED_OFF;
4075 pLed2->bLedWPSBlinkInProgress = _FALSE;
4077 _set_timer(&(pLed2->BlinkTimer), 0);
4081 case LED_CTL_STOP_WPS_FAIL_OVERLAP: //WPS session overlap
4083 bWPSOverLap = _TRUE;
4084 pLed1->CurrLedState = LED_BLINK_WPS_STOP_OVERLAP;
4085 pLed1->BlinkTimes = 10;
4086 pLed1->BlinkCounter = 50;
4088 pLed1->BlinkingLedState = RTW_LED_OFF;
4090 pLed1->BlinkingLedState = RTW_LED_ON;
4091 _set_timer(&(pLed1->BlinkTimer), 0);
4094 pLed2->CurrLedState = RTW_LED_OFF;
4095 pLed2->BlinkingLedState = RTW_LED_OFF;
4096 pLed2->bLedWPSBlinkInProgress = _FALSE;
4098 _set_timer(&(pLed2->BlinkTimer), 0);
4102 case LED_CTL_POWER_OFF:
4103 pLed->CurrLedState = RTW_LED_OFF;
4104 pLed->BlinkingLedState = RTW_LED_OFF;
4106 if( pLed->bLedNoLinkBlinkInProgress)
4108 _cancel_timer_ex(&(pLed->BlinkTimer));
4109 pLed->bLedNoLinkBlinkInProgress = _FALSE;
4111 if( pLed->bLedLinkBlinkInProgress)
4113 _cancel_timer_ex(&(pLed->BlinkTimer));
4114 pLed->bLedLinkBlinkInProgress = _FALSE;
4116 if( pLed->bLedBlinkInProgress)
4118 _cancel_timer_ex(&(pLed->BlinkTimer));
4119 pLed->bLedBlinkInProgress = _FALSE;
4121 if( pLed->bLedWPSBlinkInProgress )
4123 _cancel_timer_ex(&(pLed->BlinkTimer));
4124 pLed->bLedWPSBlinkInProgress = _FALSE;
4126 if( pLed->bLedScanBlinkInProgress)
4128 _cancel_timer_ex(&(pLed->BlinkTimer));
4129 pLed->bLedScanBlinkInProgress = _FALSE;
4131 if( pLed->bLedStartToLinkBlinkInProgress)
4133 _cancel_timer_ex(&(pLed->BlinkTimer));
4134 pLed->bLedStartToLinkBlinkInProgress = _FALSE;
4137 if( pLed1->bLedWPSBlinkInProgress )
4139 _cancel_timer_ex(&(pLed1->BlinkTimer));
4140 pLed1->bLedWPSBlinkInProgress = _FALSE;
4144 pLed1->BlinkingLedState = LED_UNKNOWN;
4145 SwLedOff(Adapter, pLed);
4146 SwLedOff(Adapter, pLed1);
4149 case LED_CTL_CONNECTION_NO_TRANSFER:
4150 if(pLed->bLedBlinkInProgress == _FALSE)
4152 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
4154 _cancel_timer_ex(&(pLed->BlinkTimer));
4155 pLed->bLedNoLinkBlinkInProgress = _FALSE;
4157 pLed->bLedBlinkInProgress = _TRUE;
4159 pLed->CurrLedState = LED_BLINK_ALWAYS_ON;
4160 pLed->BlinkingLedState = RTW_LED_ON;
4161 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
4170 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 9 Led %d\n", pLed->CurrLedState));
4173 //page added for Netgear A6200V2, 20120827
4177 LED_CTL_MODE LedAction
4180 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
4181 struct led_priv *ledpriv = &(Adapter->ledpriv);
4182 struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
4183 PLED_USB pLed = &(ledpriv->SwLed0);
4184 PLED_USB pLed1 = &(ledpriv->SwLed1);
4188 case LED_CTL_START_TO_LINK:
4189 if(pLed1->bLedBlinkInProgress == _FALSE)
4191 pLed1->bLedBlinkInProgress = _TRUE;
4192 pLed1->BlinkingLedState = RTW_LED_ON;
4193 pLed1->CurrLedState = LED_BLINK_LINK_IN_PROCESS;
4195 _set_timer(&(pLed1->BlinkTimer), 0);
4200 case LED_CTL_NO_LINK:
4201 if(LedAction == LED_CTL_LINK)
4203 if(pLed->bLedWPSBlinkInProgress == _TRUE || pLed1->bLedWPSBlinkInProgress == _TRUE)
4207 if(pHalData->CurrentBandType == BAND_ON_2_4G)
4210 pLed->CurrLedState = RTW_LED_ON;
4211 pLed->BlinkingLedState = RTW_LED_ON;
4212 if(pLed->bLedBlinkInProgress == _TRUE)
4214 _cancel_timer_ex(&(pLed->BlinkTimer));
4215 pLed->bLedBlinkInProgress = _FALSE;
4217 _set_timer(&(pLed->BlinkTimer), 0);
4219 pLed1->CurrLedState = RTW_LED_OFF;
4220 pLed1->BlinkingLedState = RTW_LED_OFF;
4221 _set_timer(&(pLed1->BlinkTimer), 0);
4223 else if(pHalData->CurrentBandType == BAND_ON_5G)
4226 pLed1->CurrLedState = RTW_LED_ON;
4227 pLed1->BlinkingLedState = RTW_LED_ON;
4228 if(pLed1->bLedBlinkInProgress == _TRUE)
4230 _cancel_timer_ex(&(pLed1->BlinkTimer));
4231 pLed1->bLedBlinkInProgress = _FALSE;
4233 _set_timer(&(pLed1->BlinkTimer), 0);
4235 pLed->CurrLedState = RTW_LED_OFF;
4236 pLed->BlinkingLedState = RTW_LED_OFF;
4237 _set_timer(&(pLed->BlinkTimer), 0);
4241 else if(LedAction == LED_CTL_NO_LINK) //TODO by page
4243 if(pLed->bLedWPSBlinkInProgress == _TRUE || pLed1->bLedWPSBlinkInProgress == _TRUE)
4247 pLed->CurrLedState = RTW_LED_OFF;
4248 pLed->BlinkingLedState = RTW_LED_OFF;
4250 _set_timer(&(pLed->BlinkTimer), 0);
4252 pLed1->CurrLedState = RTW_LED_OFF;
4253 pLed1->BlinkingLedState = RTW_LED_OFF;
4255 _set_timer(&(pLed1->BlinkTimer), 0);
4261 case LED_CTL_SITE_SURVEY:
4262 if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
4263 ; //don't blink when media connect
4264 else //if(pLed->bLedScanBlinkInProgress ==FALSE)
4266 if(IS_LED_WPS_BLINKING(pLed) || IS_LED_WPS_BLINKING(pLed1))
4269 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
4271 _cancel_timer_ex(&(pLed->BlinkTimer));
4272 pLed->bLedNoLinkBlinkInProgress = _FALSE;
4274 if(pLed->bLedBlinkInProgress == _TRUE)
4276 _cancel_timer_ex(&(pLed->BlinkTimer));
4277 pLed->bLedBlinkInProgress = _FALSE;
4279 pLed->bLedScanBlinkInProgress = _TRUE;
4280 pLed->CurrLedState = LED_BLINK_SCAN;
4281 pLed->BlinkTimes = 12;
4282 pLed->BlinkingLedState = LED_BLINK_SCAN;
4283 _set_timer(&(pLed->BlinkTimer), 0);
4285 if(pLed1->bLedNoLinkBlinkInProgress == _TRUE)
4287 _cancel_timer_ex(&(pLed1->BlinkTimer));
4288 pLed1->bLedNoLinkBlinkInProgress = _FALSE;
4290 if(pLed1->bLedBlinkInProgress == _TRUE)
4292 _cancel_timer_ex(&(pLed1->BlinkTimer));
4293 pLed1->bLedBlinkInProgress = _FALSE;
4295 pLed1->bLedScanBlinkInProgress = _TRUE;
4296 pLed1->CurrLedState = LED_BLINK_SCAN;
4297 pLed1->BlinkTimes = 12;
4298 pLed1->BlinkingLedState = LED_BLINK_SCAN;
4299 _set_timer(&(pLed1->BlinkTimer), LED_BLINK_LINK_SLOWLY_INTERVAL_NETGEAR);
4304 case LED_CTL_START_WPS: //wait until xinpin finish
4305 case LED_CTL_START_WPS_BOTTON:
4307 if(pLed->bLedBlinkInProgress == _FALSE)
4309 pLed->bLedBlinkInProgress = _TRUE;
4310 pLed->bLedWPSBlinkInProgress = _TRUE;
4311 pLed->BlinkingLedState = LED_BLINK_WPS;
4312 pLed->CurrLedState = LED_BLINK_WPS;
4313 _set_timer(&(pLed->BlinkTimer), 0);
4317 if(pLed1->bLedBlinkInProgress == _FALSE)
4319 pLed1->bLedBlinkInProgress = _TRUE;
4320 pLed1->bLedWPSBlinkInProgress = _TRUE;
4321 pLed1->BlinkingLedState = LED_BLINK_WPS;
4322 pLed1->CurrLedState = LED_BLINK_WPS;
4323 _set_timer(&(pLed1->BlinkTimer), LED_BLINK_NORMAL_INTERVAL+LED_BLINK_LINK_INTERVAL_NETGEAR);
4329 case LED_CTL_STOP_WPS: //WPS connect success
4330 if(pHalData->CurrentBandType == BAND_ON_2_4G)
4333 pLed->bLedWPSBlinkInProgress = _FALSE;
4334 pLed->CurrLedState = RTW_LED_ON;
4335 pLed->BlinkingLedState = RTW_LED_ON;
4336 if(pLed->bLedBlinkInProgress == _TRUE)
4338 _cancel_timer_ex(&(pLed->BlinkTimer));
4339 pLed->bLedBlinkInProgress = _FALSE;
4341 _set_timer(&(pLed->BlinkTimer), 0);
4343 pLed1->CurrLedState = RTW_LED_OFF;
4344 pLed1->BlinkingLedState = RTW_LED_OFF;
4345 _set_timer(&(pLed1->BlinkTimer), 0);
4347 else if(pHalData->CurrentBandType == BAND_ON_5G)
4350 pLed1->bLedWPSBlinkInProgress = _FALSE;
4351 pLed1->CurrLedState = RTW_LED_ON;
4352 pLed1->BlinkingLedState = RTW_LED_ON;
4353 if(pLed1->bLedBlinkInProgress == _TRUE)
4355 _cancel_timer_ex(&(pLed1->BlinkTimer));
4356 pLed1->bLedBlinkInProgress = _FALSE;
4358 _set_timer(&(pLed1->BlinkTimer), 0);
4360 pLed->CurrLedState = RTW_LED_OFF;
4361 pLed->BlinkingLedState = RTW_LED_OFF;
4362 _set_timer(&(pLed->BlinkTimer), 0);
4367 case LED_CTL_STOP_WPS_FAIL: //WPS authentication fail
4369 pLed1->bLedWPSBlinkInProgress = _FALSE;
4370 pLed1->CurrLedState = RTW_LED_OFF;
4371 pLed1->BlinkingLedState = RTW_LED_OFF;
4372 _set_timer(&(pLed1->BlinkTimer), 0);
4375 pLed->bLedWPSBlinkInProgress = _FALSE;
4376 pLed->CurrLedState = RTW_LED_OFF;
4377 pLed->BlinkingLedState = RTW_LED_OFF;
4379 _set_timer(&(pLed->BlinkTimer), 0);
4389 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 10 Led %d\n", pLed->CurrLedState));
4392 //Edimax-ASUS, added by Page, 20121221
4396 LED_CTL_MODE LedAction
4399 struct led_priv *ledpriv = &(Adapter->ledpriv);
4400 struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
4401 PLED_USB pLed = &(ledpriv->SwLed0);
4405 case LED_CTL_POWER_ON:
4406 case LED_CTL_START_TO_LINK:
4407 case LED_CTL_NO_LINK:
4408 pLed->CurrLedState = RTW_LED_ON;
4409 pLed->BlinkingLedState = RTW_LED_ON;
4410 _set_timer(&(pLed->BlinkTimer), 0);
4414 if( pLed->bLedBlinkInProgress == _TRUE )
4416 _cancel_timer_ex(&(pLed->BlinkTimer));
4417 pLed->bLedBlinkInProgress = _FALSE;
4419 pLed->bLedBlinkInProgress = _TRUE;
4420 pLed->CurrLedState = LED_BLINK_TXRX;
4422 pLed->BlinkingLedState = RTW_LED_OFF;
4424 pLed->BlinkingLedState = RTW_LED_ON;
4425 _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);
4428 case LED_CTL_START_WPS: //wait until xinpin finish
4429 case LED_CTL_START_WPS_BOTTON:
4430 if(pLed->bLedBlinkInProgress == _TRUE)
4432 _cancel_timer_ex(&(pLed->BlinkTimer));
4433 pLed->bLedBlinkInProgress = _FALSE;
4435 pLed->bLedWPSBlinkInProgress = _TRUE;
4436 pLed->bLedBlinkInProgress = _TRUE;
4437 pLed->CurrLedState = LED_BLINK_WPS;
4439 pLed->BlinkingLedState = RTW_LED_OFF;
4441 pLed->BlinkingLedState = RTW_LED_ON;
4442 pLed->BlinkTimes = 5;
4443 _set_timer(&(pLed->BlinkTimer), 0);
4448 case LED_CTL_STOP_WPS:
4449 case LED_CTL_STOP_WPS_FAIL:
4450 if(pLed->bLedBlinkInProgress == _TRUE)
4452 _cancel_timer_ex(&(pLed->BlinkTimer));
4453 pLed->bLedBlinkInProgress = _FALSE;
4455 pLed->CurrLedState = LED_BLINK_WPS_STOP;
4456 _set_timer(&(pLed->BlinkTimer), 0);
4459 case LED_CTL_POWER_OFF:
4460 pLed->CurrLedState = RTW_LED_OFF;
4461 pLed->BlinkingLedState = RTW_LED_OFF;
4463 if( pLed->bLedNoLinkBlinkInProgress)
4465 _cancel_timer_ex(&(pLed->BlinkTimer));
4466 pLed->bLedNoLinkBlinkInProgress = _FALSE;
4468 if( pLed->bLedLinkBlinkInProgress)
4470 _cancel_timer_ex(&(pLed->BlinkTimer));
4471 pLed->bLedLinkBlinkInProgress = _FALSE;
4473 if( pLed->bLedBlinkInProgress)
4475 _cancel_timer_ex(&(pLed->BlinkTimer));
4476 pLed->bLedBlinkInProgress = _FALSE;
4478 if( pLed->bLedWPSBlinkInProgress )
4480 _cancel_timer_ex(&(pLed->BlinkTimer));
4481 pLed->bLedWPSBlinkInProgress = _FALSE;
4483 if( pLed->bLedScanBlinkInProgress)
4485 _cancel_timer_ex(&(pLed->BlinkTimer));
4486 pLed->bLedScanBlinkInProgress = _FALSE;
4489 SwLedOff(Adapter, pLed);
4497 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led mode 1 CurrLedState %d\n", pLed->CurrLedState));
4500 // page added for NEC
4505 LED_CTL_MODE LedAction
4508 struct led_priv *ledpriv = &(Adapter->ledpriv);
4509 struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
4510 PLED_USB pLed = &(ledpriv->SwLed0);
4514 case LED_CTL_POWER_ON:
4515 case LED_CTL_NO_LINK:
4517 case LED_CTL_SITE_SURVEY:
4519 if( pLed->bLedNoLinkBlinkInProgress == _FALSE )
4521 if(pLed->bLedBlinkInProgress == _TRUE)
4523 _cancel_timer_ex(&(pLed->BlinkTimer));
4524 pLed->bLedBlinkInProgress = _FALSE;
4527 pLed->bLedNoLinkBlinkInProgress = _TRUE;
4528 pLed->CurrLedState = LED_BLINK_SLOWLY;
4530 pLed->BlinkingLedState = RTW_LED_OFF;
4532 pLed->BlinkingLedState = RTW_LED_ON;
4533 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);
4539 if(pLed->bLedBlinkInProgress == _FALSE)
4541 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
4543 _cancel_timer_ex(&(pLed->BlinkTimer));
4544 pLed->bLedNoLinkBlinkInProgress = _FALSE;
4546 pLed->bLedBlinkInProgress = _TRUE;
4547 pLed->CurrLedState = LED_BLINK_TXRX;
4548 pLed->BlinkTimes = 2;
4550 pLed->BlinkingLedState = RTW_LED_OFF;
4552 pLed->BlinkingLedState = RTW_LED_ON;
4553 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
4557 case LED_CTL_POWER_OFF:
4558 pLed->CurrLedState = RTW_LED_OFF;
4559 pLed->BlinkingLedState = RTW_LED_OFF;
4561 if( pLed->bLedBlinkInProgress)
4563 _cancel_timer_ex(&(pLed->BlinkTimer));
4564 pLed->bLedBlinkInProgress = _FALSE;
4567 if( pLed->bLedScanBlinkInProgress)
4569 _cancel_timer_ex(&(pLed->BlinkTimer));
4570 pLed->bLedScanBlinkInProgress = _FALSE;
4573 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)
4575 _cancel_timer_ex(&(pLed->BlinkTimer));
4576 pLed->bLedNoLinkBlinkInProgress = _FALSE;
4579 SwLedOff(Adapter, pLed);
4587 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SWLed12 %d\n", pLed->CurrLedState));
4590 // Maddest add for NETGEAR R6100
4594 IN PADAPTER Adapter,
4595 IN LED_CTL_MODE LedAction
4598 struct led_priv *ledpriv = &(Adapter->ledpriv);
4599 struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
4600 PLED_USB pLed = &(ledpriv->SwLed0);
4602 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 13 CurrLedState %d, LedAction %d\n", pLed->CurrLedState,LedAction));
4606 if(pLed->bLedWPSBlinkInProgress)
4612 pLed->CurrLedState = RTW_LED_ON;
4613 pLed->BlinkingLedState = RTW_LED_ON;
4614 if( pLed->bLedBlinkInProgress)
4616 _cancel_timer_ex(&(pLed->BlinkTimer));
4617 pLed->bLedBlinkInProgress = _FALSE;
4619 if( pLed->bLedScanBlinkInProgress)
4621 _cancel_timer_ex(&(pLed->BlinkTimer));
4622 pLed->bLedScanBlinkInProgress = _FALSE;
4625 _set_timer(&(pLed->BlinkTimer), 0);
4628 case LED_CTL_START_WPS: //wait until xinpin finish
4629 case LED_CTL_START_WPS_BOTTON:
4630 if(pLed->bLedWPSBlinkInProgress == _FALSE)
4632 if(pLed->bLedBlinkInProgress == _TRUE)
4634 _cancel_timer_ex(&(pLed->BlinkTimer));
4635 pLed->bLedBlinkInProgress = _FALSE;
4637 if(pLed->bLedScanBlinkInProgress == _TRUE)
4639 _cancel_timer_ex(&(pLed->BlinkTimer));
4640 pLed->bLedScanBlinkInProgress = _FALSE;
4642 pLed->bLedWPSBlinkInProgress = _TRUE;
4643 pLed->CurrLedState = LED_BLINK_WPS;
4646 pLed->BlinkingLedState = RTW_LED_OFF;
4647 _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_OFF_INTERVAL_NETGEAR);
4651 pLed->BlinkingLedState = RTW_LED_ON;
4652 _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_ON_INTERVAL_NETGEAR);
4657 case LED_CTL_STOP_WPS:
4658 if(pLed->bLedWPSBlinkInProgress)
4660 _cancel_timer_ex(&(pLed->BlinkTimer));
4661 pLed->bLedWPSBlinkInProgress = _FALSE;
4665 pLed->bLedWPSBlinkInProgress = _TRUE;
4668 pLed->bLedWPSBlinkInProgress = _FALSE;
4669 pLed->CurrLedState = LED_BLINK_WPS_STOP;
4672 pLed->BlinkingLedState = RTW_LED_OFF;
4674 _set_timer(&(pLed->BlinkTimer), 0);
4680 case LED_CTL_STOP_WPS_FAIL:
4681 case LED_CTL_STOP_WPS_FAIL_OVERLAP: //WPS session overlap
4682 if(pLed->bLedWPSBlinkInProgress)
4684 _cancel_timer_ex(&(pLed->BlinkTimer));
4685 pLed->bLedWPSBlinkInProgress = _FALSE;
4688 pLed->CurrLedState = RTW_LED_OFF;
4689 pLed->BlinkingLedState = RTW_LED_OFF;
4690 _set_timer(&(pLed->BlinkTimer), 0);
4693 case LED_CTL_START_TO_LINK:
4694 if((pLed->bLedBlinkInProgress == _FALSE) && (pLed->bLedWPSBlinkInProgress == _FALSE))
4696 pLed->bLedBlinkInProgress = _TRUE;
4697 pLed->BlinkingLedState = RTW_LED_ON;
4698 pLed->CurrLedState = LED_BLINK_LINK_IN_PROCESS;
4700 _set_timer(&(pLed->BlinkTimer), 0);
4704 case LED_CTL_NO_LINK:
4706 if(pLed->bLedWPSBlinkInProgress)
4710 if( pLed->bLedBlinkInProgress)
4712 _cancel_timer_ex(&(pLed->BlinkTimer));
4713 pLed->bLedBlinkInProgress = _FALSE;
4715 if( pLed->bLedScanBlinkInProgress)
4717 _cancel_timer_ex(&(pLed->BlinkTimer));
4718 pLed->bLedScanBlinkInProgress = _FALSE;
4720 //if(!IS_LED_BLINKING(pLed))
4722 pLed->CurrLedState = RTW_LED_OFF;
4723 pLed->BlinkingLedState = RTW_LED_OFF;
4724 _set_timer(&(pLed->BlinkTimer), 0);
4728 case LED_CTL_POWER_OFF:
4729 case LED_CTL_POWER_ON:
4730 pLed->CurrLedState = RTW_LED_OFF;
4731 pLed->BlinkingLedState = RTW_LED_OFF;
4732 if( pLed->bLedBlinkInProgress)
4734 _cancel_timer_ex(&(pLed->BlinkTimer));
4735 pLed->bLedBlinkInProgress = _FALSE;
4737 if( pLed->bLedScanBlinkInProgress)
4739 _cancel_timer_ex(&(pLed->BlinkTimer));
4740 pLed->bLedScanBlinkInProgress = _FALSE;
4742 if( pLed->bLedWPSBlinkInProgress )
4744 _cancel_timer_ex(&(pLed->BlinkTimer));
4745 pLed->bLedWPSBlinkInProgress = _FALSE;
4748 if (LedAction == LED_CTL_POWER_ON)
4749 _set_timer(&(pLed->BlinkTimer), 0);
4751 SwLedOff(Adapter, pLed);
4762 // Maddest add for DNI Buffalo
4766 IN PADAPTER Adapter,
4767 IN LED_CTL_MODE LedAction
4770 struct led_priv *ledpriv = &(Adapter->ledpriv);
4771 PLED_USB pLed = &(ledpriv->SwLed0);
4773 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 14 CurrLedState %d, LedAction %d\n", pLed->CurrLedState,LedAction));
4776 case LED_CTL_POWER_OFF:
4777 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 14 LED_CTL_POWER_OFF\n"));
4778 pLed->CurrLedState = RTW_LED_OFF;
4779 pLed->BlinkingLedState = RTW_LED_OFF;
4780 if( pLed->bLedBlinkInProgress)
4782 _cancel_timer_ex(&(pLed->BlinkTimer));
4783 pLed->bLedBlinkInProgress = _FALSE;
4785 SwLedOff(Adapter, pLed);
4788 case LED_CTL_POWER_ON:
4789 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 14 LED_CTL_POWER_ON\n"));
4790 SwLedOn(Adapter, pLed);
4794 case LED_CTL_NO_LINK:
4795 if (IS_HARDWARE_TYPE_8812AU(Adapter))
4796 SwLedOn(Adapter, pLed);
4801 if(pLed->bLedBlinkInProgress ==_FALSE)
4803 pLed->bLedBlinkInProgress = _TRUE;
4804 pLed->CurrLedState = LED_BLINK_TXRX;
4805 pLed->BlinkTimes = 2;
4808 pLed->BlinkingLedState = RTW_LED_OFF;
4809 if (IS_HARDWARE_TYPE_8812AU(Adapter))
4810 _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);
4812 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
4816 pLed->BlinkingLedState = RTW_LED_ON;
4817 if (IS_HARDWARE_TYPE_8812AU(Adapter))
4818 _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
4820 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
4830 // Maddest add for Dlink
4834 IN PADAPTER Adapter,
4835 IN LED_CTL_MODE LedAction
4838 struct led_priv *ledpriv = &(Adapter->ledpriv);
4839 struct mlme_priv *pmlmepriv = &Adapter->mlmepriv;
4840 PLED_USB pLed = &(ledpriv->SwLed0);
4842 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 CurrLedState %d, LedAction %d\n", pLed->CurrLedState,LedAction));
4845 case LED_CTL_START_WPS: //wait until xinpin finish
4846 case LED_CTL_START_WPS_BOTTON:
4847 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 LED_CTL_START_WPS\n"));
4848 if(pLed->bLedWPSBlinkInProgress ==_FALSE)
4850 if(pLed->bLedBlinkInProgress ==_TRUE)
4852 _cancel_timer_ex(&(pLed->BlinkTimer));
4853 pLed->bLedBlinkInProgress = _FALSE;
4855 if(pLed->bLedScanBlinkInProgress ==_TRUE)
4857 _cancel_timer_ex(&(pLed->BlinkTimer));
4858 pLed->bLedScanBlinkInProgress = _FALSE;
4860 pLed->bLedWPSBlinkInProgress = _TRUE;
4861 pLed->CurrLedState = LED_BLINK_WPS;
4864 pLed->BlinkingLedState = RTW_LED_OFF;
4865 _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_OFF_INTERVAL_NETGEAR);
4869 pLed->BlinkingLedState = RTW_LED_ON;
4870 _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_ON_INTERVAL_NETGEAR);
4875 case LED_CTL_STOP_WPS:
4876 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 LED_CTL_STOP_WPS\n"));
4877 if(pLed->bLedWPSBlinkInProgress)
4879 _cancel_timer_ex(&(pLed->BlinkTimer));
4882 pLed->CurrLedState = LED_BLINK_WPS_STOP;
4883 //if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
4885 pLed->BlinkingLedState = RTW_LED_ON;
4887 _set_timer(&(pLed->BlinkTimer), 0);
4892 case LED_CTL_STOP_WPS_FAIL:
4893 case LED_CTL_STOP_WPS_FAIL_OVERLAP: //WPS session overlap
4894 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 LED_CTL_STOP_WPS_FAIL\n"));
4895 if(pLed->bLedWPSBlinkInProgress)
4897 _cancel_timer_ex(&(pLed->BlinkTimer));
4898 pLed->bLedWPSBlinkInProgress = _FALSE;
4901 pLed->CurrLedState = RTW_LED_OFF;
4902 pLed->BlinkingLedState = RTW_LED_OFF;
4903 _set_timer(&(pLed->BlinkTimer), 0);
4906 case LED_CTL_NO_LINK:
4907 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 LED_CTL_NO_LINK\n"));
4908 if(pLed->bLedWPSBlinkInProgress)
4913 /*if(Adapter->securitypriv.dot11PrivacyAlgrthm > _NO_PRIVACY_)
4915 if(SecIsTxKeyInstalled(Adapter, pMgntInfo->Bssid))
4920 if(pMgntInfo->LEDAssocState ==LED_ASSOC_SECURITY_BEGIN)
4925 if( pLed->bLedBlinkInProgress)
4927 _cancel_timer_ex(&(pLed->BlinkTimer));
4928 pLed->bLedBlinkInProgress = _FALSE;
4930 if( pLed->bLedScanBlinkInProgress)
4932 _cancel_timer_ex(&(pLed->BlinkTimer));
4933 pLed->bLedScanBlinkInProgress = _FALSE;
4935 //if(!IS_LED_BLINKING(pLed))
4937 pLed->CurrLedState = LED_BLINK_NO_LINK;
4938 pLed->BlinkingLedState = RTW_LED_ON;
4939 _set_timer(&(pLed->BlinkTimer), 30);
4944 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 LED_CTL_LINK\n"));
4946 if(pLed->bLedWPSBlinkInProgress)
4951 if( pLed->bLedBlinkInProgress)
4953 _cancel_timer_ex(&(pLed->BlinkTimer));
4954 pLed->bLedBlinkInProgress = _FALSE;
4957 pLed->CurrLedState = LED_BLINK_LINK_IDEL;
4958 pLed->BlinkingLedState = RTW_LED_ON;
4960 _set_timer(&(pLed->BlinkTimer), 30);
4963 case LED_CTL_SITE_SURVEY :
4964 if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)
4967 if(pLed->bLedWPSBlinkInProgress ==_TRUE)
4970 if( pLed->bLedBlinkInProgress)
4972 _cancel_timer_ex(&(pLed->BlinkTimer));
4973 pLed->bLedBlinkInProgress = _FALSE;
4975 pLed->CurrLedState = LED_BLINK_SCAN;
4976 pLed->BlinkingLedState = RTW_LED_ON;
4977 _set_timer(&(pLed->BlinkTimer), 0);
4982 if(pLed->bLedWPSBlinkInProgress)
4987 if( pLed->bLedBlinkInProgress)
4989 _cancel_timer_ex(&(pLed->BlinkTimer));
4990 pLed->bLedBlinkInProgress = _FALSE;
4993 pLed->bLedBlinkInProgress = _TRUE;
4994 pLed->CurrLedState = LED_BLINK_TXRX;
4995 pLed->BlinkTimes = 2;
4997 pLed->BlinkingLedState = RTW_LED_OFF;
4999 pLed->BlinkingLedState = RTW_LED_ON;
5000 _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);
5011 LED_CTL_MODE LedAction
5014 struct led_priv *ledpriv = &(padapter->ledpriv);
5017 if (padapter->registrypriv.mp_mode == 1)
5021 if (RTW_CANNOT_RUN(padapter) || (!rtw_is_hw_init_completed(padapter))) {
5022 /*DBG_871X("%s bDriverStopped:%s, bSurpriseRemoved:%s\n"
5024 , rtw_is_drv_stopped(padapter)?"True":"False"
5025 , rtw_is_surprise_removed(padapter)?"True":"False" );*/
5029 if( ledpriv->bRegUseLed == _FALSE)
5032 //if(priv->bInHctTest)
5035 #ifdef CONFIG_CONCURRENT_MODE
5036 // Only do led action for PRIMARY_ADAPTER
5037 if (padapter->adapter_type != PRIMARY_ADAPTER)
5041 if( (adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on &&
5042 adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS) &&
5043 (LedAction == LED_CTL_TX || LedAction == LED_CTL_RX ||
5044 LedAction == LED_CTL_SITE_SURVEY ||
5045 LedAction == LED_CTL_LINK ||
5046 LedAction == LED_CTL_NO_LINK ||
5047 LedAction == LED_CTL_POWER_ON) )
5052 switch(ledpriv->LedStrategy)
5055 SwLedControlMode0(padapter, LedAction);
5059 SwLedControlMode1(padapter, LedAction);
5063 SwLedControlMode2(padapter, LedAction);
5067 SwLedControlMode3(padapter, LedAction);
5071 SwLedControlMode4(padapter, LedAction);
5075 SwLedControlMode5(padapter, LedAction);
5079 SwLedControlMode6(padapter, LedAction);
5083 SwLedControlMode7(padapter, LedAction);
5087 SwLedControlMode8(padapter, LedAction);
5091 SwLedControlMode9(padapter, LedAction);
5095 SwLedControlMode10(padapter, LedAction);
5099 SwLedControlMode11(padapter, LedAction);
5103 SwLedControlMode12(padapter, LedAction);
5107 SwLedControlMode13(padapter, LedAction);
5111 SwLedControlMode14(padapter, LedAction);
5115 SwLedControlMode15(padapter, LedAction);
5122 RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("LedStrategy:%d, LedAction %d\n", ledpriv->LedStrategy,LedAction));
5127 // Reset status of LED_871x object.
5129 void ResetLedStatus(PLED_USB pLed) {
5131 pLed->CurrLedState = RTW_LED_OFF; // Current LED state.
5132 pLed->bLedOn = _FALSE; // true if LED is ON, false if LED is OFF.
5134 pLed->bLedBlinkInProgress = _FALSE; // true if it is blinking, false o.w..
5135 pLed->bLedWPSBlinkInProgress = _FALSE;
5137 pLed->BlinkTimes = 0; // Number of times to toggle led state for blinking.
5138 pLed->BlinkCounter = 0;
5139 pLed->BlinkingLedState = LED_UNKNOWN; // Next state for blinking, either RTW_LED_ON or RTW_LED_OFF are.
5141 pLed->bLedNoLinkBlinkInProgress = _FALSE;
5142 pLed->bLedLinkBlinkInProgress = _FALSE;
5143 pLed->bLedStartToLinkBlinkInProgress = _FALSE;
5144 pLed->bLedScanBlinkInProgress = _FALSE;
5149 // Initialize an LED_871x object.
5158 pLed->padapter = padapter;
5159 pLed->LedPin = LedPin;
5161 ResetLedStatus(pLed);
5162 ATOMIC_SET(&pLed->bCancelWorkItem, _FALSE);
5163 _init_timer(&(pLed->BlinkTimer), padapter->pnetdev, BlinkTimerCallback, pLed);
5164 _init_workitem(&(pLed->BlinkWorkItem), BlinkWorkItemCallback, pLed);
5170 // DeInitialize an LED_871x object.
5177 ATOMIC_SET(&pLed->bCancelWorkItem, _TRUE);
5178 _cancel_workitem_sync(&(pLed->BlinkWorkItem));
5179 _cancel_timer_ex(&(pLed->BlinkTimer));
5180 ResetLedStatus(pLed);