| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166 |
- /******************************************************************************
- *
- * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of version 2 of the GNU General Public License as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
- *
- *
- ******************************************************************************/
- #include <drv_types.h>
- #include <hal_data.h>
- /*
- * Description:
- * Turn on LED according to LedPin specified.
- * */
- VOID
- HwLedBlink(
- IN PADAPTER Adapter,
- IN PLED_PCIE pLed
- )
- {
- switch (pLed->LedPin) {
- case LED_PIN_GPIO0:
- break;
- case LED_PIN_LED0:
- /* rtw_write8(Adapter, LED0Cfg, 0x2); */
- break;
- case LED_PIN_LED1:
- /* rtw_write8(Adapter, LED1Cfg, 0x2); */
- break;
- default:
- break;
- }
- pLed->bLedOn = _TRUE;
- }
- /*
- * Description:
- * Implement LED blinking behavior for SW_LED_MODE0.
- * It toggle off LED and schedule corresponding timer if necessary.
- * */
- VOID
- SwLedBlink(
- IN PLED_PCIE pLed
- )
- {
- PADAPTER Adapter = pLed->padapter;
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- BOOLEAN bStopBlinking = _FALSE;
- /* Change LED according to BlinkingLedState specified. */
- if (pLed->BlinkingLedState == RTW_LED_ON) {
- SwLedOn(Adapter, pLed);
- } else {
- SwLedOff(Adapter, pLed);
- }
- /* Determine if we shall change LED state again. */
- pLed->BlinkTimes--;
- switch (pLed->CurrLedState) {
- case LED_BLINK_NORMAL:
- case LED_BLINK_TXRX:
- case LED_BLINK_RUNTOP:
- if (pLed->BlinkTimes == 0)
- bStopBlinking = _TRUE;
- break;
- case LED_BLINK_SCAN:
- if (((check_fwstate(pmlmepriv, WIFI_STATION_STATE) && check_fwstate(pmlmepriv, _FW_LINKED)) ||
- (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE))) && /* Linked. */
- (!check_fwstate(pmlmepriv, _FW_UNDER_SURVEY)) && /* Not in scan stage. */
- (pLed->BlinkTimes % 2 == 0)) /* Even */
- bStopBlinking = _TRUE;
- break;
- case LED_BLINK_NO_LINK:
- case LED_BLINK_StartToBlink:
- if (check_fwstate(pmlmepriv, _FW_LINKED) && check_fwstate(pmlmepriv, WIFI_STATION_STATE))
- bStopBlinking = _TRUE;
- else if ((check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) &&
- (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)))
- bStopBlinking = _TRUE;
- else if (pLed->BlinkTimes == 0)
- bStopBlinking = _TRUE;
- break;
- case LED_BLINK_CAMEO:
- if (check_fwstate(pmlmepriv, _FW_LINKED) && check_fwstate(pmlmepriv, WIFI_STATION_STATE))
- bStopBlinking = _TRUE;
- else if (check_fwstate(pmlmepriv, _FW_LINKED) &&
- (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)))
- bStopBlinking = _TRUE;
- break;
- default:
- bStopBlinking = _TRUE;
- break;
- }
- if (bStopBlinking) {
- if (adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on)
- SwLedOff(Adapter, pLed);
- else if (pLed->CurrLedState == LED_BLINK_TXRX)
- SwLedOff(Adapter, pLed);
- else if (pLed->CurrLedState == LED_BLINK_RUNTOP)
- SwLedOff(Adapter, pLed);
- else if ((check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) && pLed->bLedOn == _FALSE)
- SwLedOn(Adapter, pLed);
- else if ((check_fwstate(pmlmepriv, _FW_LINKED) == _FALSE) && pLed->bLedOn == _TRUE)
- SwLedOff(Adapter, pLed);
- pLed->BlinkTimes = 0;
- pLed->bLedBlinkInProgress = _FALSE;
- } else {
- /* Assign LED state to toggle. */
- if (pLed->BlinkingLedState == RTW_LED_ON)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- /* Schedule a timer to toggle LED state. */
- switch (pLed->CurrLedState) {
- case LED_BLINK_NORMAL:
- case LED_BLINK_TXRX:
- case LED_BLINK_StartToBlink:
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
- break;
- case LED_BLINK_SLOWLY:
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
- break;
- case LED_BLINK_SCAN:
- case LED_BLINK_NO_LINK:
- if (pLed->bLedOn)
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- else
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_OFF_INTERVAL);
- break;
- case LED_BLINK_RUNTOP:
- _set_timer(&(pLed->BlinkTimer), LED_RunTop_BLINK_INTERVAL);
- break;
- case LED_BLINK_CAMEO:
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL_PORNET);
- break;
- default:
- /* RTW_INFO("SwLedCm2Blink(): unexpected state!\n"); */
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
- break;
- }
- }
- }
- VOID
- SwLedBlink5(
- IN PLED_PCIE pLed
- )
- {
- PADAPTER Adapter = pLed->padapter;
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- BOOLEAN bStopBlinking = _FALSE;
- /* Change LED according to BlinkingLedState specified. */
- if (pLed->BlinkingLedState == RTW_LED_ON) {
- SwLedOn(Adapter, pLed);
- } else {
- SwLedOff(Adapter, pLed);
- }
- switch (pLed->CurrLedState) {
- case RTW_LED_OFF:
- SwLedOff(Adapter, pLed);
- break;
- case LED_BLINK_SLOWLY:
- if (pLed->bLedOn)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL_NETTRONIX);
- break;
- case LED_BLINK_NORMAL:
- pLed->BlinkTimes--;
- if (pLed->BlinkTimes == 0)
- bStopBlinking = _TRUE;
- if (bStopBlinking) {
- if (adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on)
- SwLedOff(Adapter, pLed);
- else {
- pLed->bLedSlowBlinkInProgress = _TRUE;
- pLed->CurrLedState = LED_BLINK_SLOWLY;
- if (pLed->bLedOn)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL_NETTRONIX);
- }
- pLed->BlinkTimes = 0;
- pLed->bLedBlinkInProgress = _FALSE;
- } else {
- if (adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on)
- SwLedOff(Adapter, pLed);
- else {
- if (pLed->bLedOn)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL_NETTRONIX);
- }
- }
- break;
- default:
- break;
- }
- }
- VOID
- SwLedBlink6(
- IN PLED_PCIE pLed
- )
- {
- PADAPTER Adapter = pLed->padapter;
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- BOOLEAN bStopBlinking = _FALSE;
- /* Change LED according to BlinkingLedState specified. */
- if (pLed->BlinkingLedState == RTW_LED_ON) {
- SwLedOn(Adapter, pLed);
- } else {
- SwLedOff(Adapter, pLed);
- }
- switch (pLed->CurrLedState) {
- case RTW_LED_OFF:
- SwLedOff(Adapter, pLed);
- break;
- case LED_BLINK_SLOWLY:
- if (pLed->bLedOn)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL_PORNET);
- break;
- case LED_BLINK_NORMAL:
- pLed->BlinkTimes--;
- if (pLed->BlinkTimes == 0)
- bStopBlinking = _TRUE;
- if (bStopBlinking) {
- if (adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on)
- SwLedOff(Adapter, pLed);
- else {
- pLed->bLedSlowBlinkInProgress = _TRUE;
- pLed->CurrLedState = LED_BLINK_SLOWLY;
- if (pLed->bLedOn)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL_PORNET);
- }
- pLed->BlinkTimes = 0;
- pLed->bLedBlinkInProgress = _FALSE;
- } else {
- if (adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on)
- SwLedOff(Adapter, pLed);
- else {
- if (pLed->bLedOn)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL_PORNET);
- }
- }
- break;
- default:
- break;
- }
- }
- VOID
- SwLedBlink7(
- IN PLED_PCIE pLed
- )
- {
- PADAPTER Adapter = pLed->padapter;
- SwLedOn(Adapter, pLed);
- }
- /*
- * Description:
- * Implement LED blinking behavior for SW_LED_MODE8.
- * It toggle off LED and schedule corresponding timer if necessary.
- * */
- VOID
- SwLedBlink8(
- IN PLED_PCIE pLed
- )
- {
- PADAPTER Adapter = pLed->padapter;
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- BOOLEAN bStopBlinking = _FALSE;
- /* Change LED according to BlinkingLedState specified. */
- if (pLed->BlinkingLedState == RTW_LED_ON) {
- SwLedOn(Adapter, pLed);
- } else {
- SwLedOff(Adapter, pLed);
- }
- /* Determine if we shall change LED state again. */
- if (pLed->CurrLedState != LED_BLINK_NO_LINK)
- pLed->BlinkTimes--;
- switch (pLed->CurrLedState) {
- case LED_BLINK_NORMAL:
- case LED_BLINK_SCAN:
- if (pLed->BlinkTimes == 0)
- bStopBlinking = _TRUE;
- break;
- default:
- break;
- }
- if (bStopBlinking) {
- if (adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS) {
- pLed->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed);
- } else {
- pLed->CurrLedState = RTW_LED_ON;
- SwLedOn(Adapter, pLed);
- }
- pLed->BlinkTimes = 0;
- pLed->bLedBlinkInProgress = _FALSE;
- } else {
- /* Assign LED state to toggle. */
- if (pLed->BlinkingLedState == RTW_LED_ON)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- /* Schedule a timer to toggle LED state. */
- switch (pLed->CurrLedState) {
- case LED_BLINK_NORMAL:
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
- break;
- default:
- /* RTW_INFO("SwLedCm8Blink(): unexpected state!\n"); */
- break;
- }
- }
- }
- VOID
- SwLedBlink9(
- IN PLED_PCIE pLed
- )
- {
- PADAPTER Adapter = pLed->padapter;
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- BOOLEAN bStopBlinking = _FALSE;
- /* Change LED according to BlinkingLedState specified. */
- if (pLed->BlinkingLedState == RTW_LED_ON) {
- SwLedOn(Adapter, pLed);
- } else {
- SwLedOff(Adapter, pLed);
- }
- /* Determine if we shall change LED state again. */
- if (pLed->CurrLedState != LED_BLINK_NO_LINK)
- pLed->BlinkTimes--;
- switch (pLed->CurrLedState) {
- case LED_BLINK_NORMAL:
- case LED_BLINK_SCAN:
- if (pLed->BlinkTimes == 0)
- bStopBlinking = _TRUE;
- break;
- case LED_BLINK_NO_LINK:
- if (check_fwstate(pmlmepriv, _FW_LINKED) && check_fwstate(pmlmepriv, WIFI_STATION_STATE))
- bStopBlinking = _TRUE;
- else if (check_fwstate(pmlmepriv, _FW_LINKED) &&
- (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)))
- bStopBlinking = _TRUE;
- break;
- default:
- break;
- }
- if (bStopBlinking) {
- if (adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS) {
- pLed->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed);
- } else if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) {
- pLed->CurrLedState = RTW_LED_ON;
- SwLedOn(Adapter, pLed);
- } else if (check_fwstate(pmlmepriv, _FW_LINKED) == _FALSE) {
- pLed->CurrLedState = LED_BLINK_NO_LINK;
- if (pLed->bLedOn)
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- else
- _set_timer(&(pLed->BlinkTimer), LED_CM8_BLINK_OFF_INTERVAL);
- }
- pLed->BlinkTimes = 0;
- if (pLed->CurrLedState != LED_BLINK_NO_LINK)
- pLed->bLedBlinkInProgress = _FALSE;
- } else {
- /* Assign LED state to toggle. */
- if (pLed->BlinkingLedState == RTW_LED_ON)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- /* Schedule a timer to toggle LED state. */
- switch (pLed->CurrLedState) {
- case LED_BLINK_NORMAL:
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_FAST_INTERVAL_BITLAND);
- break;
- case LED_BLINK_SCAN:
- case LED_BLINK_NO_LINK:
- if (pLed->bLedOn)
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- else
- _set_timer(&(pLed->BlinkTimer), LED_CM8_BLINK_OFF_INTERVAL);
- break;
- default:
- /* RTW_INFO("SwLedCm2Blink(): unexpected state!\n"); */
- break;
- }
- }
- }
- VOID
- SwLedBlink10(
- IN PLED_PCIE pLed
- )
- {
- PADAPTER Adapter = pLed->padapter;
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- BOOLEAN bStopBlinking = _FALSE;
- /* Change LED according to BlinkingLedState specified. */
- if (pLed->BlinkingLedState == RTW_LED_ON) {
- SwLedOn(Adapter, pLed);
- } else {
- SwLedOff(Adapter, pLed);
- }
- /* Determine if we shall change LED state again. */
- if (pLed->CurrLedState != LED_BLINK_NO_LINK)
- pLed->BlinkTimes--;
- switch (pLed->CurrLedState) {
- case LED_BLINK_NORMAL:
- case LED_BLINK_SCAN:
- if (pLed->BlinkTimes == 0)
- bStopBlinking = _TRUE;
- break;
- default:
- break;
- }
- if (bStopBlinking) {
- pLed->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed);
- pLed->BlinkTimes = 0;
- pLed->bLedBlinkInProgress = _FALSE;
- } else {
- /* Assign LED state to toggle. */
- if (pLed->BlinkingLedState == RTW_LED_ON)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- /* Schedule a timer to toggle LED state. */
- switch (pLed->CurrLedState) {
- case LED_BLINK_NORMAL:
- case LED_BLINK_SCAN:
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_FAST_INTERVAL_BITLAND);
- break;
- default:
- /* RT_ASSERT(_FALSE, ("SwLedCm2Blink(): unexpected state!\n")); */
- break;
- }
- }
- }
- VOID
- SwLedBlink11(
- IN PLED_PCIE pLed
- )
- {
- PADAPTER Adapter = pLed->padapter;
- BOOLEAN bStopBlinking = _FALSE;
- /* Change LED according to BlinkingLedState specified. */
- if (pLed->bLedBlinkInProgress == _TRUE) {
- if (pLed->BlinkingLedState == RTW_LED_ON) {
- SwLedOn(Adapter, pLed);
- } else {
- SwLedOff(Adapter, pLed);
- }
- }
- /* Determine if we shall change LED state again. */
- if (pLed->CurrLedState != LED_BLINK_NO_LINK)
- pLed->BlinkTimes--;
- switch (pLed->CurrLedState) {
- case RTW_LED_ON:
- bStopBlinking = _TRUE; /* LED on for 3 seconds */
- default:
- break;
- }
- if (bStopBlinking) {
- pLed->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed);
- pLed->BlinkTimes = 0;
- pLed->bLedBlinkInProgress = _FALSE;
- } else {
- /* Assign LED state to toggle. */
- if (pLed->BlinkingLedState == RTW_LED_ON)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- /* Schedule a timer to toggle LED state. */
- switch (pLed->CurrLedState) {
- case LED_BLINK_XAVI:
- _set_timer(&(pLed->BlinkTimer), LED_CM11_BLINK_INTERVAL);
- break;
- default:
- /* RT_ASSERT(_FALSE, ("SwLedCm11Blink(): unexpected state!\n")); */
- break;
- }
- }
- }
- VOID
- SwLedBlink12(
- IN PLED_PCIE pLed
- )
- {
- PADAPTER Adapter = pLed->padapter;
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- BOOLEAN bStopBlinking = _FALSE;
- /* Change LED according to BlinkingLedState specified. */
- if (pLed->BlinkingLedState == RTW_LED_ON) {
- SwLedOn(Adapter, pLed);
- } else {
- SwLedOff(Adapter, pLed);
- }
- /* Determine if we shall change LED state again. */
- if (pLed->CurrLedState != LED_BLINK_NO_LINK && pLed->CurrLedState != LED_BLINK_Azurewave_5Mbps
- && pLed->CurrLedState != LED_BLINK_Azurewave_10Mbps && pLed->CurrLedState != LED_BLINK_Azurewave_20Mbps
- && pLed->CurrLedState != LED_BLINK_Azurewave_40Mbps && pLed->CurrLedState != LED_BLINK_Azurewave_80Mbps
- && pLed->CurrLedState != LED_BLINK_Azurewave_MAXMbps)
- pLed->BlinkTimes--;
- switch (pLed->CurrLedState) {
- case LED_BLINK_NORMAL:
- case LED_BLINK_SCAN:
- if (pLed->BlinkTimes == 0)
- bStopBlinking = _TRUE;
- break;
- case LED_BLINK_NO_LINK:
- if (check_fwstate(pmlmepriv, _FW_LINKED) && check_fwstate(pmlmepriv, WIFI_STATION_STATE))
- bStopBlinking = _TRUE;
- else if (check_fwstate(pmlmepriv, _FW_LINKED) &&
- (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)))
- bStopBlinking = _TRUE;
- break;
- case LED_BLINK_Azurewave_5Mbps:
- case LED_BLINK_Azurewave_10Mbps:
- case LED_BLINK_Azurewave_20Mbps:
- case LED_BLINK_Azurewave_40Mbps:
- case LED_BLINK_Azurewave_80Mbps:
- case LED_BLINK_Azurewave_MAXMbps:
- /* if(pTurboCa->TxThroughput + pTurboCa->RxThroughput == 0) */
- /* bStopBlinking = _TRUE; */
- default:
- break;
- }
- if (bStopBlinking) {
- if (adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS) {
- pLed->CurrLedState = RTW_LED_OFF;
- pLed->BlinkingLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed);
- } else if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) {
- pLed->CurrLedState = RTW_LED_ON;
- pLed->BlinkingLedState = RTW_LED_ON;
- SwLedOn(Adapter, pLed);
- } else if (check_fwstate(pmlmepriv, _FW_LINKED) == _FALSE) {
- pLed->CurrLedState = LED_BLINK_NO_LINK;
- if (pLed->bLedOn) {
- pLed->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- } else {
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_CM8_BLINK_OFF_INTERVAL);
- }
- }
- pLed->BlinkTimes = 0;
- if (pLed->CurrLedState != LED_BLINK_NO_LINK)
- pLed->bLedBlinkInProgress = _FALSE;
- } else {
- /* Assign LED state to toggle. */
- if (pLed->BlinkingLedState == RTW_LED_ON)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- /* Schedule a timer to toggle LED state. */
- switch (pLed->CurrLedState) {
- case LED_BLINK_Azurewave_5Mbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_5Mbps);
- break;
- case LED_BLINK_Azurewave_10Mbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_10Mbps);
- break;
- case LED_BLINK_Azurewave_20Mbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_20Mbps);
- break;
- case LED_BLINK_Azurewave_40Mbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_40Mbps);
- break;
- case LED_BLINK_Azurewave_80Mbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_80Mbps);
- break;
- case LED_BLINK_Azurewave_MAXMbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_MAXMbps);
- break;
- case LED_BLINK_SCAN:
- case LED_BLINK_NO_LINK:
- if (pLed->bLedOn)
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- else
- _set_timer(&(pLed->BlinkTimer), LED_CM8_BLINK_OFF_INTERVAL);
- break;
- default:
- /* RT_ASSERT(_FALSE, ("SwLedCm12Blink(): unexpected state!\n")); */
- break;
- }
- }
- }
- /*
- * Description:
- * Handler function of LED Blinking.
- * We dispatch acture LED blink action according to LedStrategy.
- * */
- void BlinkHandler(PLED_PCIE pLed)
- {
- _adapter *padapter = pLed->padapter;
- struct led_priv *ledpriv = &(padapter->ledpriv);
- if (RTW_CANNOT_RUN(padapter))
- return;
- if (IS_HARDWARE_TYPE_8188E(padapter) ||
- IS_HARDWARE_TYPE_JAGUAR(padapter) ||
- IS_HARDWARE_TYPE_8723B(padapter) ||
- IS_HARDWARE_TYPE_8192E(padapter))
- return;
- switch (ledpriv->LedStrategy) {
- case SW_LED_MODE1:
- /* SwLedBlink(pLed); */
- break;
- case SW_LED_MODE2:
- /* SwLedBlink(pLed); */
- break;
- case SW_LED_MODE3:
- /* SwLedBlink(pLed); */
- break;
- case SW_LED_MODE5:
- /* SwLedBlink5(pLed); */
- break;
- case SW_LED_MODE6:
- /* SwLedBlink6(pLed); */
- break;
- case SW_LED_MODE7:
- SwLedBlink7(pLed);
- break;
- case SW_LED_MODE8:
- SwLedBlink8(pLed);
- break;
- case SW_LED_MODE9:
- SwLedBlink9(pLed);
- break;
- case SW_LED_MODE10:
- SwLedBlink10(pLed);
- break;
- case SW_LED_MODE11:
- SwLedBlink11(pLed);
- break;
- case SW_LED_MODE12:
- SwLedBlink12(pLed);
- break;
- default:
- /* SwLedBlink(pLed); */
- break;
- }
- }
- /*
- * Description:
- * Callback function of LED BlinkTimer,
- * it just schedules to corresponding BlinkWorkItem/led_blink_hdl
- * */
- void BlinkTimerCallback(struct timer_list *t)
- {
- PLED_PCIE pLed = from_timer(pLed, t, BlinkTimer);
- _adapter *padapter = pLed->padapter;
- /* RTW_INFO("%s\n", __FUNCTION__); */
- if (RTW_CANNOT_RUN(padapter) || (!rtw_is_hw_init_completed(padapter))) {
- /*RTW_INFO("%s bDriverStopped:%s, bSurpriseRemoved:%s\n"
- , __func__
- , rtw_is_drv_stopped(padapter)?"True":"False"
- , rtw_is_surprise_removed(padapter)?"True":"False" );
- */
- return;
- }
- #ifdef CONFIG_LED_HANDLED_BY_CMD_THREAD
- rtw_led_blink_cmd(padapter, pLed);
- #else
- BlinkHandler(pLed);
- #endif
- }
- /*
- * Description:
- * Implement each led action for SW_LED_MODE0. */
- VOID
- SwLedControlMode0(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed0 = &(ledpriv->SwLed0);
- PLED_PCIE pLed1 = &(ledpriv->SwLed1);
- switch (LedAction) {
- case LED_CTL_TX:
- case LED_CTL_RX:
- break;
- case LED_CTL_LINK:
- pLed0->CurrLedState = RTW_LED_ON;
- SwLedOn(Adapter, pLed0);
- pLed1->CurrLedState = LED_BLINK_NORMAL;
- HwLedBlink(Adapter, pLed1);
- break;
- case LED_CTL_POWER_ON:
- pLed0->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed0);
- pLed1->CurrLedState = LED_BLINK_NORMAL;
- HwLedBlink(Adapter, pLed1);
- break;
- case LED_CTL_POWER_OFF:
- pLed0->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed0);
- pLed1->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed1);
- break;
- case LED_CTL_SITE_SURVEY:
- break;
- case LED_CTL_NO_LINK:
- pLed0->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed0);
- pLed1->CurrLedState = LED_BLINK_NORMAL;
- HwLedBlink(Adapter, pLed1);
- break;
- default:
- break;
- }
- }
- VOID
- SwLedControlMode1(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- PLED_PCIE pLed = &(ledpriv->SwLed1);
- /* Decide led state */
- switch (LedAction) {
- case LED_CTL_TX:
- case LED_CTL_RX:
- if (pLed->bLedBlinkInProgress == _FALSE) {
- pLed->bLedBlinkInProgress = _TRUE;
- pLed->CurrLedState = LED_BLINK_NORMAL;
- pLed->BlinkTimes = 2;
- if (pLed->bLedOn)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
- }
- break;
- case LED_CTL_SITE_SURVEY:
- if (pLed->bLedBlinkInProgress == _FALSE) {
- pLed->bLedBlinkInProgress = _TRUE;
- if ((check_fwstate(pmlmepriv, _FW_LINKED) && check_fwstate(pmlmepriv, WIFI_STATION_STATE)) ||
- (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE))) {
- pLed->CurrLedState = LED_BLINK_SCAN;
- pLed->BlinkTimes = 4;
- } else {
- pLed->CurrLedState = LED_BLINK_NO_LINK;
- pLed->BlinkTimes = 24;
- }
- if (pLed->bLedOn) {
- pLed->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- } else {
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_OFF_INTERVAL);
- }
- } else {
- if (pLed->CurrLedState != LED_BLINK_NO_LINK) {
- if ((check_fwstate(pmlmepriv, _FW_LINKED) && check_fwstate(pmlmepriv, WIFI_STATION_STATE)) ||
- (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)))
- pLed->CurrLedState = LED_BLINK_SCAN;
- else
- pLed->CurrLedState = LED_BLINK_NO_LINK;
- }
- }
- break;
- case LED_CTL_NO_LINK:
- if (pLed->bLedBlinkInProgress == _FALSE) {
- pLed->bLedBlinkInProgress = _TRUE;
- pLed->CurrLedState = LED_BLINK_NO_LINK;
- pLed->BlinkTimes = 24;
- if (pLed->bLedOn) {
- pLed->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- } else {
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_OFF_INTERVAL);
- }
- } else
- pLed->CurrLedState = LED_BLINK_NO_LINK;
- break;
- case LED_CTL_LINK:
- pLed->CurrLedState = RTW_LED_ON;
- if (pLed->bLedBlinkInProgress == _FALSE)
- SwLedOn(Adapter, pLed);
- break;
- case LED_CTL_POWER_OFF:
- pLed->CurrLedState = RTW_LED_OFF;
- if (pLed->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed);
- break;
- default:
- break;
- }
- }
- VOID
- SwLedControlMode2(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- PLED_PCIE pLed0 = &(ledpriv->SwLed0);
- PLED_PCIE pLed1 = &(ledpriv->SwLed1);
- /* Decide led state */
- switch (LedAction) {
- case LED_CTL_POWER_ON:
- pLed0->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed0);
- pLed1->CurrLedState = LED_BLINK_CAMEO;
- if (pLed1->bLedBlinkInProgress == _FALSE) {
- pLed1->bLedBlinkInProgress = _TRUE;
- pLed1->BlinkTimes = 6;
- if (pLed1->bLedOn)
- pLed1->BlinkingLedState = RTW_LED_OFF;
- else
- pLed1->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed1->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL_PORNET);
- }
- break;
- case LED_CTL_TX:
- case LED_CTL_RX:
- if (pLed0->bLedBlinkInProgress == _FALSE) {
- pLed0->bLedBlinkInProgress = _TRUE;
- pLed0->CurrLedState = LED_BLINK_TXRX;
- pLed0->BlinkTimes = 2;
- if (pLed0->bLedOn)
- pLed0->BlinkingLedState = RTW_LED_OFF;
- else
- pLed0->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed0->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
- }
- break;
- case LED_CTL_NO_LINK:
- pLed1->CurrLedState = LED_BLINK_CAMEO;
- if (pLed1->bLedBlinkInProgress == _FALSE) {
- pLed1->bLedBlinkInProgress = _TRUE;
- pLed1->BlinkTimes = 6;
- if (pLed1->bLedOn)
- pLed1->BlinkingLedState = RTW_LED_OFF;
- else
- pLed1->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed1->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL_PORNET);
- }
- break;
- case LED_CTL_LINK:
- pLed1->CurrLedState = RTW_LED_ON;
- if (pLed1->bLedBlinkInProgress == _FALSE)
- SwLedOn(Adapter, pLed1);
- break;
- case LED_CTL_POWER_OFF:
- pLed0->CurrLedState = RTW_LED_OFF;
- pLed1->CurrLedState = RTW_LED_OFF;
- if (pLed0->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedBlinkInProgress = _FALSE;
- }
- if (pLed1->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed1->BlinkTimer));
- pLed1->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed0);
- SwLedOff(Adapter, pLed1);
- break;
- default:
- break;
- }
- }
- VOID
- SwLedControlMode3(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed0 = &(ledpriv->SwLed0);
- PLED_PCIE pLed1 = &(ledpriv->SwLed1);
- /* Decide led state */
- switch (LedAction) {
- case LED_CTL_POWER_ON:
- pLed0->CurrLedState = RTW_LED_ON;
- SwLedOn(Adapter, pLed0);
- pLed1->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed1);
- break;
- case LED_CTL_TX:
- case LED_CTL_RX:
- if (pLed1->bLedBlinkInProgress == _FALSE) {
- pLed1->bLedBlinkInProgress = _TRUE;
- pLed1->CurrLedState = LED_BLINK_RUNTOP;
- pLed1->BlinkTimes = 2;
- if (pLed1->bLedOn)
- pLed1->BlinkingLedState = RTW_LED_OFF;
- else
- pLed1->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed1->BlinkTimer), LED_RunTop_BLINK_INTERVAL);
- }
- break;
- case LED_CTL_POWER_OFF:
- pLed0->CurrLedState = RTW_LED_OFF;
- pLed1->CurrLedState = RTW_LED_OFF;
- if (pLed0->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedBlinkInProgress = _FALSE;
- }
- if (pLed1->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed1->BlinkTimer));
- pLed1->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed0);
- SwLedOff(Adapter, pLed1);
- break;
- default:
- break;
- }
- }
- VOID
- SwLedControlMode4(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed0 = &(ledpriv->SwLed0);
- PLED_PCIE pLed1 = &(ledpriv->SwLed1);
- /* Decide led state */
- switch (LedAction) {
- case LED_CTL_POWER_ON:
- pLed1->CurrLedState = RTW_LED_ON;
- SwLedOn(Adapter, pLed1);
- pLed0->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed0);
- break;
- case LED_CTL_TX:
- case LED_CTL_RX:
- if (pLed0->bLedBlinkInProgress == _FALSE) {
- pLed0->bLedBlinkInProgress = _TRUE;
- pLed0->CurrLedState = LED_BLINK_RUNTOP;
- pLed0->BlinkTimes = 2;
- if (pLed0->bLedOn)
- pLed0->BlinkingLedState = RTW_LED_OFF;
- else
- pLed0->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed0->BlinkTimer), LED_RunTop_BLINK_INTERVAL);
- }
- break;
- case LED_CTL_POWER_OFF:
- pLed0->CurrLedState = RTW_LED_OFF;
- pLed1->CurrLedState = RTW_LED_OFF;
- if (pLed0->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedBlinkInProgress = _FALSE;
- }
- if (pLed1->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed1->BlinkTimer));
- pLed1->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed0);
- SwLedOff(Adapter, pLed1);
- break;
- default:
- break;
- }
- }
- /* added by vivi, for led new mode */
- VOID
- SwLedControlMode5(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed0 = &(ledpriv->SwLed0);
- PLED_PCIE pLed1 = &(ledpriv->SwLed1);
- /* Decide led state */
- switch (LedAction) {
- case LED_CTL_POWER_ON:
- case LED_CTL_START_TO_LINK:
- case LED_CTL_NO_LINK:
- pLed1->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed1);
- if (pLed0->bLedSlowBlinkInProgress == _FALSE) {
- pLed0->bLedSlowBlinkInProgress = _TRUE;
- pLed0->CurrLedState = LED_BLINK_SLOWLY;
- if (pLed0->bLedOn)
- pLed0->BlinkingLedState = RTW_LED_OFF;
- else
- pLed0->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed0->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL_NETTRONIX);
- }
- break;
- case LED_CTL_TX:
- case LED_CTL_RX:
- pLed1->CurrLedState = RTW_LED_ON;
- SwLedOn(Adapter, pLed1);
- if (pLed0->bLedBlinkInProgress == _FALSE) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedSlowBlinkInProgress = _FALSE;
- pLed0->bLedBlinkInProgress = _TRUE;
- pLed0->CurrLedState = LED_BLINK_NORMAL;
- pLed0->BlinkTimes = 2;
- if (pLed0->bLedOn)
- pLed0->BlinkingLedState = RTW_LED_OFF;
- else
- pLed0->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed0->BlinkTimer), LED_BLINK_NORMAL_INTERVAL_NETTRONIX);
- }
- break;
- case LED_CTL_LINK:
- pLed1->CurrLedState = RTW_LED_ON;
- SwLedOn(Adapter, pLed1);
- if (pLed0->bLedSlowBlinkInProgress == _FALSE) {
- pLed0->bLedSlowBlinkInProgress = _TRUE;
- pLed0->CurrLedState = LED_BLINK_SLOWLY;
- if (pLed0->bLedOn)
- pLed0->BlinkingLedState = RTW_LED_OFF;
- else
- pLed0->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed0->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL_NETTRONIX);
- }
- break;
- case LED_CTL_POWER_OFF:
- pLed0->CurrLedState = RTW_LED_OFF;
- pLed1->CurrLedState = RTW_LED_OFF;
- if (pLed0->bLedSlowBlinkInProgress == _TRUE) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedSlowBlinkInProgress = _FALSE;
- }
- if (pLed0->bLedBlinkInProgress == _TRUE) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed0);
- SwLedOff(Adapter, pLed1);
- break;
- default:
- break;
- }
- }
- /* added by vivi, for led new mode */
- VOID
- SwLedControlMode6(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed0 = &(ledpriv->SwLed0);
- PLED_PCIE pLed1 = &(ledpriv->SwLed1);
- switch (LedAction) {
- case LED_CTL_POWER_ON:
- case LED_CTL_START_TO_LINK:
- case LED_CTL_NO_LINK:
- case LED_CTL_LINK:
- case LED_CTL_SITE_SURVEY:
- pLed1->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed1);
- if (pLed0->bLedSlowBlinkInProgress == _FALSE) {
- pLed0->bLedSlowBlinkInProgress = _TRUE;
- pLed0->CurrLedState = LED_BLINK_SLOWLY;
- if (pLed0->bLedOn)
- pLed0->BlinkingLedState = RTW_LED_OFF;
- else
- pLed0->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed0->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL_PORNET);
- }
- break;
- case LED_CTL_TX:
- case LED_CTL_RX:
- pLed1->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed1);
- if (pLed0->bLedBlinkInProgress == _FALSE) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedSlowBlinkInProgress = _FALSE;
- pLed0->bLedBlinkInProgress = _TRUE;
- pLed0->CurrLedState = LED_BLINK_NORMAL;
- pLed0->BlinkTimes = 2;
- if (pLed0->bLedOn)
- pLed0->BlinkingLedState = RTW_LED_OFF;
- else
- pLed0->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed0->BlinkTimer), LED_BLINK_NORMAL_INTERVAL_PORNET);
- }
- break;
- case LED_CTL_POWER_OFF:
- pLed1->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed1);
- pLed0->CurrLedState = RTW_LED_OFF;
- if (pLed0->bLedSlowBlinkInProgress == _TRUE) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedSlowBlinkInProgress = _FALSE;
- }
- if (pLed0->bLedBlinkInProgress == _TRUE) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed0);
- break;
- default:
- break;
- }
- }
- /* added by chiyokolin, for Lenovo */
- VOID
- SwLedControlMode7(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed0 = &(ledpriv->SwLed0);
- switch (LedAction) {
- case LED_CTL_POWER_ON:
- case LED_CTL_LINK:
- case LED_CTL_NO_LINK:
- SwLedOn(Adapter, pLed0);
- break;
- case LED_CTL_POWER_OFF:
- SwLedOff(Adapter, pLed0);
- break;
- default:
- break;
- }
- }
- /* added by chiyokolin, for QMI */
- VOID
- SwLedControlMode8(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed = &(ledpriv->SwLed0);
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- /* Decide led state */
- switch (LedAction) {
- case LED_CTL_TX:
- case LED_CTL_RX:
- if (pLed->bLedBlinkInProgress == _FALSE && (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)) {
- pLed->bLedBlinkInProgress = _TRUE;
- pLed->CurrLedState = LED_BLINK_NORMAL;
- pLed->BlinkTimes = 2;
- if (pLed->bLedOn)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
- }
- break;
- case LED_CTL_SITE_SURVEY:
- case LED_CTL_POWER_ON:
- case LED_CTL_NO_LINK:
- case LED_CTL_LINK:
- pLed->CurrLedState = RTW_LED_ON;
- if (pLed->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->bLedBlinkInProgress = _FALSE;
- }
- SwLedOn(Adapter, pLed);
- break;
- case LED_CTL_POWER_OFF:
- pLed->CurrLedState = RTW_LED_OFF;
- if (pLed->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed);
- break;
- default:
- break;
- }
- }
- /* added by chiyokolin, for MSI */
- VOID
- SwLedControlMode9(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed = &(ledpriv->SwLed0);
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- /* Decide led state */
- switch (LedAction) {
- case LED_CTL_TX:
- case LED_CTL_RX:
- if (pLed->bLedBlinkInProgress == _FALSE && (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)) {
- pLed->bLedBlinkInProgress = _TRUE;
- pLed->CurrLedState = LED_BLINK_NORMAL;
- pLed->BlinkTimes = 2;
- if (pLed->bLedOn)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_BLINK_FAST_INTERVAL_BITLAND);
- }
- break;
- case LED_CTL_SITE_SURVEY:
- if (pLed->bLedBlinkInProgress == _FALSE) {
- pLed->bLedBlinkInProgress = _TRUE;
- pLed->CurrLedState = LED_BLINK_SCAN;
- pLed->BlinkTimes = 2;
- if (pLed->bLedOn) {
- pLed->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- } else {
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_CM8_BLINK_OFF_INTERVAL);
- }
- } else if (pLed->CurrLedState != LED_BLINK_SCAN) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->CurrLedState = LED_BLINK_SCAN;
- pLed->BlinkTimes = 2;
- if (pLed->bLedOn) {
- pLed->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- } else {
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_CM8_BLINK_OFF_INTERVAL);
- }
- }
- break;
- case LED_CTL_POWER_ON:
- case LED_CTL_NO_LINK:
- if (pLed->bLedBlinkInProgress == _FALSE) {
- pLed->bLedBlinkInProgress = _TRUE;
- pLed->CurrLedState = LED_BLINK_NO_LINK;
- pLed->BlinkTimes = 24;
- if (pLed->bLedOn) {
- pLed->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- } else {
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_CM8_BLINK_OFF_INTERVAL);
- }
- } else if (pLed->CurrLedState != LED_BLINK_SCAN && pLed->CurrLedState != LED_BLINK_NO_LINK) {
- pLed->CurrLedState = LED_BLINK_NO_LINK;
- pLed->BlinkTimes = 24;
- if (pLed->bLedOn) {
- pLed->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- } else {
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_CM8_BLINK_OFF_INTERVAL);
- }
- }
- break;
- case LED_CTL_LINK:
- pLed->CurrLedState = RTW_LED_ON;
- if (pLed->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->bLedBlinkInProgress = _FALSE;
- }
- SwLedOn(Adapter, pLed);
- break;
- case LED_CTL_POWER_OFF:
- pLed->CurrLedState = RTW_LED_OFF;
- if (pLed->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed);
- break;
- default:
- break;
- }
- }
- /* added by chiyokolin, for Edimax-ASUS */
- VOID
- SwLedControlMode10(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed0 = &(ledpriv->SwLed0);
- PLED_PCIE pLed1 = &(ledpriv->SwLed1);
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- /* Decide led state */
- switch (LedAction) {
- case LED_CTL_TX:
- case LED_CTL_RX:
- if (pLed1->bLedBlinkInProgress == _FALSE && pLed1->bLedWPSBlinkInProgress == _FALSE &&
- (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)) {
- pLed1->bLedBlinkInProgress = _TRUE;
- pLed1->CurrLedState = LED_BLINK_NORMAL;
- pLed1->BlinkTimes = 2;
- if (pLed1->bLedOn)
- pLed1->BlinkingLedState = RTW_LED_OFF;
- else
- pLed1->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed1->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
- }
- break;
- case LED_CTL_SITE_SURVEY:
- if (pLed1->bLedBlinkInProgress == _FALSE && pLed1->bLedWPSBlinkInProgress == _FALSE) {
- pLed1->bLedBlinkInProgress = _TRUE;
- pLed1->CurrLedState = LED_BLINK_SCAN;
- pLed1->BlinkTimes = 12;
- if (pLed1->bLedOn) {
- pLed1->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed1->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
- } else {
- pLed1->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed1->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
- }
- } else if (pLed1->CurrLedState != LED_BLINK_SCAN && pLed1->bLedWPSBlinkInProgress == _FALSE) {
- _cancel_timer_ex(&(pLed1->BlinkTimer));
- pLed1->CurrLedState = LED_BLINK_SCAN;
- pLed1->BlinkTimes = 24;
- if (pLed1->bLedOn) {
- pLed1->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed1->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
- } else {
- pLed1->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed1->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
- }
- }
- break;
- case LED_CTL_START_WPS:
- case LED_CTL_START_WPS_BOTTON:
- pLed1->CurrLedState = RTW_LED_ON;
- if (pLed1->bLedBlinkInProgress == _TRUE) {
- _cancel_timer_ex(&(pLed1->BlinkTimer));
- pLed1->bLedBlinkInProgress = _FALSE;
- }
- if (pLed1->bLedWPSBlinkInProgress == _FALSE) {
- pLed1->bLedWPSBlinkInProgress = _TRUE;
- SwLedOn(Adapter, pLed1);
- }
- break;
- case LED_CTL_STOP_WPS:
- case LED_CTL_STOP_WPS_FAIL:
- case LED_CTL_STOP_WPS_FAIL_OVERLAP:
- if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) {
- pLed0->CurrLedState = RTW_LED_ON;
- if (pLed0->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedBlinkInProgress = _FALSE;
- }
- SwLedOn(Adapter, pLed0);
- } else {
- pLed0->CurrLedState = RTW_LED_OFF;
- if (pLed0->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed0);
- }
- pLed1->CurrLedState = RTW_LED_OFF;
- if (pLed1->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed1->BlinkTimer));
- pLed1->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed1);
- pLed1->bLedWPSBlinkInProgress = _FALSE;
- break;
- case LED_CTL_LINK:
- pLed0->CurrLedState = RTW_LED_ON;
- if (pLed0->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedBlinkInProgress = _FALSE;
- }
- SwLedOn(Adapter, pLed0);
- break;
- case LED_CTL_NO_LINK:
- if (pLed1->bLedWPSBlinkInProgress == _TRUE) {
- SwLedOn(Adapter, pLed1);
- break;
- }
- if (pLed1->CurrLedState == LED_BLINK_SCAN)
- break;
- pLed0->CurrLedState = RTW_LED_OFF;
- if (pLed0->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed0);
- pLed1->CurrLedState = RTW_LED_OFF;
- if (pLed1->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed1->BlinkTimer));
- pLed1->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed1);
- break;
- case LED_CTL_POWER_ON:
- case LED_CTL_POWER_OFF:
- if (pLed1->bLedWPSBlinkInProgress == _TRUE) {
- SwLedOn(Adapter, pLed1);
- break;
- }
- pLed0->CurrLedState = RTW_LED_OFF;
- if (pLed0->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed0->BlinkTimer));
- pLed0->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed0);
- pLed1->CurrLedState = RTW_LED_OFF;
- if (pLed1->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed1->BlinkTimer));
- pLed1->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed1);
- break;
- default:
- break;
- }
- }
- /* added by hpfan, for Xavi */
- VOID
- SwLedControlMode11(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed = &(ledpriv->SwLed0);
- /* Decide led state */
- switch (LedAction) {
- case LED_CTL_START_WPS:
- case LED_CTL_START_WPS_BOTTON:
- pLed->bLedWPSBlinkInProgress = _TRUE;
- if (pLed->bLedBlinkInProgress == _FALSE) {
- pLed->bLedBlinkInProgress = _TRUE;
- pLed->CurrLedState = LED_BLINK_XAVI;
- if (pLed->bLedOn) {
- pLed->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed->BlinkTimer), LED_CM11_BLINK_INTERVAL);
- } else {
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_CM11_BLINK_INTERVAL);
- }
- }
- break;
- case LED_CTL_STOP_WPS:
- case LED_CTL_STOP_WPS_FAIL:
- case LED_CTL_STOP_WPS_FAIL_OVERLAP:
- pLed->bLedWPSBlinkInProgress = _FALSE;
- if (pLed->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->bLedBlinkInProgress = _FALSE;
- pLed->CurrLedState = RTW_LED_OFF;
- }
- SwLedOff(Adapter, pLed);
- break;
- case LED_CTL_LINK:
- if (pLed->bLedWPSBlinkInProgress)
- break;
- if (pLed->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->bLedBlinkInProgress = _FALSE;
- pLed->CurrLedState = RTW_LED_ON;
- if (!pLed->bLedOn)
- SwLedOn(Adapter, pLed);
- } else {
- pLed->CurrLedState = RTW_LED_ON;
- SwLedOn(Adapter, pLed);
- }
- _set_timer(&(pLed->BlinkTimer), LED_CM11_LINK_ON_INTERVEL);
- pLed->BlinkingLedState = RTW_LED_OFF;
- break;
- case LED_CTL_NO_LINK:
- if (pLed->bLedWPSBlinkInProgress)
- break;
- if (pLed->bLedBlinkInProgress == _TRUE) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->bLedBlinkInProgress = _FALSE;
- }
- pLed->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed);
- break;
- case LED_CTL_POWER_ON:
- case LED_CTL_POWER_OFF:
- if (pLed->bLedBlinkInProgress == _TRUE) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->bLedBlinkInProgress = _FALSE;
- }
- pLed->CurrLedState = RTW_LED_OFF;
- SwLedOff(Adapter, pLed);
- break;
- default:
- break;
- }
- }
- /* added by chiyokolin, for Azurewave */
- VOID
- SwLedControlMode12(
- IN PADAPTER Adapter,
- IN LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed = &(ledpriv->SwLed0);
- struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv);
- LED_STATE LedState = LED_UNKNOWN;
- /* Decide led state */
- switch (LedAction) {
- case LED_CTL_TX:
- case LED_CTL_RX:
- if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) {
- if (pLed->CurrLedState == LED_BLINK_SCAN)
- break;
- pLed->BlinkTimes = 0;
- if (pLed->bLedOn)
- pLed->BlinkingLedState = RTW_LED_OFF;
- else
- pLed->BlinkingLedState = RTW_LED_ON;
- /*if(pTurboCa->TotalThroughput <= 5)
- LedState = LED_BLINK_Azurewave_5Mbps;
- else if(pTurboCa->TotalThroughput <= 10)
- LedState = LED_BLINK_Azurewave_10Mbps;
- else if(pTurboCa->TotalThroughput <=20)
- LedState = LED_BLINK_Azurewave_20Mbps;
- else if(pTurboCa->TotalThroughput <=40)
- LedState = LED_BLINK_Azurewave_40Mbps;
- else if(pTurboCa->TotalThroughput <=80)
- LedState = LED_BLINK_Azurewave_80Mbps;
- else*/
- LedState = LED_BLINK_Azurewave_MAXMbps;
- if (pLed->bLedBlinkInProgress == _FALSE || pLed->CurrLedState != LedState) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->CurrLedState = LedState;
- pLed->bLedBlinkInProgress = _TRUE;
- switch (LedState) {
- case LED_BLINK_Azurewave_5Mbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_5Mbps);
- break;
- case LED_BLINK_Azurewave_10Mbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_10Mbps);
- break;
- case LED_BLINK_Azurewave_20Mbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_20Mbps);
- break;
- case LED_BLINK_Azurewave_40Mbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_40Mbps);
- break;
- case LED_BLINK_Azurewave_80Mbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_80Mbps);
- break;
- case LED_BLINK_Azurewave_MAXMbps:
- _set_timer(&(pLed->BlinkTimer), LED_CM12_BLINK_INTERVAL_MAXMbps);
- break;
- default:
- break;
- }
- }
- }
- break;
- case LED_CTL_SITE_SURVEY:
- case LED_CTL_START_WPS:
- case LED_CTL_START_WPS_BOTTON:
- if (pLed->bLedBlinkInProgress == _FALSE)
- pLed->bLedBlinkInProgress = _TRUE;
- else if (pLed->CurrLedState != LED_BLINK_SCAN)
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->CurrLedState = LED_BLINK_SCAN;
- pLed->BlinkTimes = 2;
- if (pLed->bLedOn) {
- pLed->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- } else {
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_CM8_BLINK_OFF_INTERVAL);
- }
- break;
- case LED_CTL_LINK:
- pLed->CurrLedState = RTW_LED_ON;
- if (pLed->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->bLedBlinkInProgress = _FALSE;
- }
- SwLedOn(Adapter, pLed);
- break;
- case LED_CTL_NO_LINK:
- case LED_CTL_POWER_ON:
- if (pLed->CurrLedState == LED_BLINK_SCAN)
- break;
- pLed->CurrLedState = LED_BLINK_NO_LINK;
- pLed->bLedBlinkInProgress = _TRUE;
- if (pLed->bLedOn) {
- pLed->BlinkingLedState = RTW_LED_OFF;
- _set_timer(&(pLed->BlinkTimer), LED_CM2_BLINK_ON_INTERVAL);
- } else {
- pLed->BlinkingLedState = RTW_LED_ON;
- _set_timer(&(pLed->BlinkTimer), LED_CM8_BLINK_OFF_INTERVAL);
- }
- break;
- case LED_CTL_POWER_OFF:
- pLed->CurrLedState = RTW_LED_OFF;
- if (pLed->bLedBlinkInProgress) {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- pLed->bLedBlinkInProgress = _FALSE;
- }
- SwLedOff(Adapter, pLed);
- break;
- default:
- break;
- }
- }
- void
- LedControlPCIE(
- _adapter *padapter,
- LED_CTL_MODE LedAction
- )
- {
- struct led_priv *ledpriv = &(padapter->ledpriv);
- #if (MP_DRIVER == 1)
- if (padapter->registrypriv.mp_mode == 1)
- return;
- #endif
- if (RTW_CANNOT_RUN(padapter) || (!rtw_is_hw_init_completed(padapter)))
- return;
- /* if(priv->bInHctTest) */
- /* return; */
- #ifdef CONFIG_CONCURRENT_MODE
- /* Only do led action for PRIMARY_ADAPTER */
- if (padapter->adapter_type != PRIMARY_ADAPTER)
- return;
- #endif
- if ((adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS) &&
- (LedAction == LED_CTL_TX ||
- LedAction == LED_CTL_RX ||
- LedAction == LED_CTL_SITE_SURVEY ||
- LedAction == LED_CTL_LINK ||
- LedAction == LED_CTL_NO_LINK ||
- LedAction == LED_CTL_START_TO_LINK ||
- LedAction == LED_CTL_POWER_ON)) {
- return;
- }
- switch (ledpriv->LedStrategy) {
- case SW_LED_MODE0:
- /* SwLedControlMode0(padapter, LedAction); */
- break;
- case SW_LED_MODE1:
- /* SwLedControlMode1(padapter, LedAction); */
- break;
- case SW_LED_MODE2:
- /* SwLedControlMode2(padapter, LedAction); */
- break;
- case SW_LED_MODE3:
- /* SwLedControlMode3(padapter, LedAction); */
- break;
- case SW_LED_MODE4:
- /* SwLedControlMode4(padapter, LedAction); */
- break;
- case SW_LED_MODE5:
- /* SwLedControlMode5(padapter, LedAction); */
- break;
- case SW_LED_MODE6:
- /* SwLedControlMode6(padapter, LedAction); */
- break;
- case SW_LED_MODE7:
- SwLedControlMode7(padapter, LedAction);
- break;
- case SW_LED_MODE8:
- SwLedControlMode8(padapter, LedAction);
- break;
- case SW_LED_MODE9:
- SwLedControlMode9(padapter, LedAction);
- break;
- case SW_LED_MODE10:
- SwLedControlMode10(padapter, LedAction);
- break;
- case SW_LED_MODE11:
- SwLedControlMode11(padapter, LedAction);
- break;
- case SW_LED_MODE12:
- SwLedControlMode12(padapter, LedAction);
- break;
- default:
- break;
- }
- }
- /*-----------------------------------------------------------------------------
- * Function: gen_RefreshLedState()
- *
- * Overview: When we call the function, media status is no link. It must be in SW/HW
- * radio off. Or IPS state. If IPS no link we will turn on LED, otherwise, we must turn off.
- * After MAC IO reset, we must write LED control 0x2f2 again.
- *
- * Input: IN PADAPTER Adapter)
- *
- * Output: NONE
- *
- * Return: NONE
- *
- * Revised History:
- * When Who Remark
- * 03/27/2009 MHC Create for LED judge only~!!
- *
- *---------------------------------------------------------------------------*/
- VOID
- gen_RefreshLedState(
- IN PADAPTER Adapter)
- {
- HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
- struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(Adapter);
- struct led_priv *pledpriv = &(Adapter->ledpriv);
- PLED_PCIE pLed0 = &(Adapter->ledpriv.SwLed0);
- RTW_INFO("gen_RefreshLedState:() pwrctrlpriv->rfoff_reason=%x\n", pwrctrlpriv->rfoff_reason);
- if (Adapter->bDriverIsGoingToUnload) {
- switch (pledpriv->LedStrategy) {
- case SW_LED_MODE9:
- case SW_LED_MODE10:
- rtw_led_control(Adapter, LED_CTL_POWER_OFF);
- break;
- default:
- /* Turn off LED if RF is not ON. */
- SwLedOff(Adapter, pLed0);
- break;
- }
- } else if (pwrctrlpriv->rfoff_reason == RF_CHANGE_BY_IPS) {
- switch (pledpriv->LedStrategy) {
- case SW_LED_MODE7:
- SwLedOn(Adapter, pLed0);
- break;
- case SW_LED_MODE8:
- case SW_LED_MODE9:
- rtw_led_control(Adapter, LED_CTL_NO_LINK);
- break;
- default:
- SwLedOn(Adapter, pLed0);
- break;
- }
- } else if (pwrctrlpriv->rfoff_reason == RF_CHANGE_BY_INIT) {
- switch (pledpriv->LedStrategy) {
- case SW_LED_MODE7:
- SwLedOn(Adapter, pLed0);
- break;
- case SW_LED_MODE9:
- rtw_led_control(Adapter, LED_CTL_NO_LINK);
- break;
- default:
- SwLedOn(Adapter, pLed0);
- break;
- }
- } else { /* SW/HW radio off */
- switch (pledpriv->LedStrategy) {
- case SW_LED_MODE9:
- rtw_led_control(Adapter, LED_CTL_POWER_OFF);
- break;
- default:
- /* Turn off LED if RF is not ON. */
- SwLedOff(Adapter, pLed0);
- break;
- }
- }
- }
- /*
- * Description:
- * Reset status of LED_871x object.
- * */
- void ResetLedStatus(PLED_PCIE pLed)
- {
- pLed->CurrLedState = RTW_LED_OFF; /* Current LED state. */
- pLed->bLedOn = _FALSE; /* true if LED is ON, false if LED is OFF. */
- pLed->bLedBlinkInProgress = _FALSE; /* true if it is blinking, false o.w.. */
- pLed->bLedWPSBlinkInProgress = _FALSE;
- pLed->bLedSlowBlinkInProgress = _FALSE;
- pLed->BlinkTimes = 0; /* Number of times to toggle led state for blinking. */
- pLed->BlinkingLedState = LED_UNKNOWN; /* Next state for blinking, either RTW_LED_ON or RTW_LED_OFF are. */
- }
- /*
- * Description:
- * Initialize an LED_871x object.
- * */
- void
- InitLed(
- _adapter *padapter,
- PLED_PCIE pLed,
- LED_PIN LedPin
- )
- {
- pLed->padapter = padapter;
- pLed->LedPin = LedPin;
- ResetLedStatus(pLed);
- rtw_init_timer(&(pLed->BlinkTimer), padapter, BlinkTimerCallback);
- }
- /*
- * Description:
- * DeInitialize an LED_871x object.
- * */
- void
- DeInitLed(
- PLED_PCIE pLed
- )
- {
- _cancel_timer_ex(&(pLed->BlinkTimer));
- ResetLedStatus(pLed);
- }
|