1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
|
#ifndef __INC_HALCOMLED_H
#define __INC_HALCOMLED_H
/*++
Copyright (c) Realtek Semiconductor Corp. All rights reserved.
Module Name:
HalComLed.h
Abstract:
LED related data structure and interface to manipulate LED.
Major Change History:
When Who What
---------- --------------- -------------------------------
2012-12-23 Isaiah Create.
--*/
//================================================================================
// LED Behavior Constant.
//================================================================================
// Default LED behavior.
//
#define LED_BLINK_NORMAL_INTERVAL 100
#define LED_BLINK_SLOWLY_INTERVAL 200
#define LED_BLINK_LONG_INTERVAL 400
#define LED_INITIAL_INTERVAL 1800
// LED Customerization
//NETTRONIX
#define LED_BLINK_NORMAL_INTERVAL_NETTRONIX 100
#define LED_BLINK_SLOWLY_INTERVAL_NETTRONIX 2000
//PORNET
#define LED_BLINK_SLOWLY_INTERVAL_PORNET 1000
#define LED_BLINK_NORMAL_INTERVAL_PORNET 100
#define LED_BLINK_FAST_INTERVAL_BITLAND 30
//AzWave.
#define LED_CM2_BLINK_ON_INTERVAL 250
#define LED_CM2_BLINK_OFF_INTERVAL 4750
#define LED_CM8_BLINK_OFF_INTERVAL 3750 //for QMI
//RunTop
#define LED_RunTop_BLINK_INTERVAL 300
//ALPHA
#define LED_BLINK_NO_LINK_INTERVAL_ALPHA 1000
#define LED_BLINK_NO_LINK_INTERVAL_ALPHA_500MS 500 //add by ylb 20121012 for customer led for alpha
#define LED_BLINK_LINK_INTERVAL_ALPHA 500 //500
#define LED_BLINK_SCAN_INTERVAL_ALPHA 180 //150
#define LED_BLINK_FASTER_INTERVAL_ALPHA 50
#define LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA 5000
// 111122 by hpfan: Customized for Xavi
#define LED_CM11_BLINK_INTERVAL 300
#define LED_CM11_LINK_ON_INTERVEL 3000
//Netgear
#define LED_BLINK_LINK_INTERVAL_NETGEAR 500
#define LED_BLINK_LINK_SLOWLY_INTERVAL_NETGEAR 1000
#define LED_WPS_BLINK_OFF_INTERVAL_NETGEAR 100
#define LED_WPS_BLINK_ON_INTERVAL_NETGEAR 500
//Belkin AC950
#define LED_BLINK_LINK_INTERVAL_ON_BELKIN 200
#define LED_BLINK_LINK_INTERVAL_OFF_BELKIN 100
#define LED_BLINK_ERROR_INTERVAL_BELKIN 100
//by chiyokolin for Azurewave
#define LED_CM12_BLINK_INTERVAL_5Mbps 160
#define LED_CM12_BLINK_INTERVAL_10Mbps 80
#define LED_CM12_BLINK_INTERVAL_20Mbps 50
#define LED_CM12_BLINK_INTERVAL_40Mbps 40
#define LED_CM12_BLINK_INTERVAL_80Mbps 30
#define LED_CM12_BLINK_INTERVAL_MAXMbps 25
//ECS
#define LED_BLINK_INTERVAL_OVER_2Mbps 500
#define LED_BLINK_INTERVAL_OVER_1Mbps 1000
//Dlink
#define LED_BLINK_NO_LINK_INTERVAL 1000
#define LED_BLINK_LINK_IDEL_INTERVAL 100
#define LED_BLINK_SCAN_ON_INTERVAL 30
#define LED_BLINK_SCAN_OFF_INTERVAL 300
#define LED_WPS_BLINK_ON_INTERVAL_DLINK 30
#define LED_WPS_BLINK_OFF_INTERVAL_DLINK 300
#define LED_WPS_BLINK_LINKED_ON_INTERVAL_DLINK 5000
//Mitac
#define LED_BLINK_TRX_INYERVAL_MITAC 500
#define LED_BLINK_ON_OFF_INYERVAL_MITAC 100
//ELECOM
#define LED_BLINK_WPS_INTERVAL_ELECOM 500
#define LED_BLINK_TRX_INTERVAL_ELECOM 100
//================================================================================
// LED object.
//================================================================================
typedef enum _LED_STATE{
LED_UNKNOWN = 0,
LED_ON = 1,
LED_OFF = 2,
LED_BLINK_NORMAL = 3,
LED_BLINK_SLOWLY = 4,
LED_POWER_ON_BLINK = 5,
LED_SCAN_BLINK = 6, // LED is blinking during scanning period, the # of times to blink is depend on time for scanning.
LED_NO_LINK_BLINK = 7, // LED is blinking during no link state.
LED_BLINK_StartToBlink = 8, // Customzied for Sercomm Printer Server case
LED_BLINK_TXRX = 9,
LED_BLINK_WPS = 10, // LED is blinkg during WPS communication
LED_BLINK_WPS_STOP = 11, //for ALPHA
LED_BLINK_WPS_STOP_OVERLAP = 12, //for BELKIN
LED_BLINK_RUNTOP = 13, // Customized for RunTop
LED_BLINK_CAMEO = 14,
LED_BLINK_XAVI = 15,
LED_BLINK_ALWAYS_ON = 16,
LED_BLINK_LINK_IN_PROCESS = 17, //Customized for Belkin AC950
LED_BLINK_AUTH_ERROR = 18, //Customized for Belkin AC950
LED_BLINK_Azurewave_5Mbps = 19,
LED_BLINK_Azurewave_10Mbps = 20,
LED_BLINK_Azurewave_20Mbps = 21,
LED_BLINK_Azurewave_40Mbps = 22,
LED_BLINK_Azurewave_80Mbps = 23,
LED_BLINK_Azurewave_MAXMbps = 24,
LED_BLINK_LINK_IDEL = 25,
LED_BLINK_WPS_LINKED = 26,
LED_BLINK_TIME_BY_REG = 27,
LED_BLINK_ECS_Below_1Mbps = 28,
LED_BLINK_ECS_Over_1Mbps = 29,
LED_BLINK_ECS_Over_2Mbps = 30,
}LED_STATE;
typedef enum _LED_PIN{
LED_PIN_GPIO0,
LED_PIN_LED0,
LED_PIN_LED1,
LED_PIN_LED2,
LED_PIN_LED3,
LED_PIN_LED_ALL
}LED_PIN;
//================================================================================
// SDIO LED Definition.
//================================================================================
#define IS_LED_WPS_BLINKING(_LED_SDIO) (((PLED_SDIO)_LED_SDIO)->CurrLedState==LED_BLINK_WPS \
|| ((PLED_SDIO)_LED_SDIO)->CurrLedState==LED_BLINK_WPS_STOP \
|| ((PLED_SDIO)_LED_SDIO)->bLedWPSBlinkInProgress)
#define IS_LED_BLINKING(_LED_SDIO) (((PLED_SDIO)_LED_SDIO)->bLedWPSBlinkInProgress \
||((PLED_SDIO)_LED_SDIO)->bLedScanBlinkInProgress)
typedef enum _LED_STRATEGY_SDIO{
SW_LED_MODE0, // SW control 1 LED via GPIO0. It is default option.
SW_LED_MODE1, // 2 LEDs, through LED0 and LED1. For ALPHA.
SW_LED_MODE2, // SW control 1 LED via GPIO0, customized for AzWave 8187 minicard.
SW_LED_MODE3, // SW control 1 LED via GPIO0, customized for Sercomm Printer Server case.
SW_LED_MODE4, //for Edimax / Belkin
SW_LED_MODE5, //for Sercomm / Belkin
SW_LED_MODE6, //for 88CU minicard, porting from ce SW_LED_MODE7
SW_LED_MODE7, //for ECS
HW_LED, // HW control 2 LEDs, LED0 and LED1 (there are 4 different control modes, see MAC.CONFIG1 for details.)
}LED_STRATEGY_SDIO, *PLED_STRATEGY_SDIO;
typedef struct _LED_SDIO{
PVOID pAdapter;
LED_PIN LedPin; // Identify how to implement this SW led.
LED_STATE CurrLedState; // Current LED state.
BOOLEAN bLedOn; // TRUE if LED is ON, FALSE if LED is OFF.
BOOLEAN bSWLedCtrl;
BOOLEAN bLedBlinkInProgress; // TRUE if it is blinking, FALSE o.w..
// ALPHA, added by chiyoko, 20090106
BOOLEAN bLedNoLinkBlinkInProgress;
BOOLEAN bLedLinkBlinkInProgress;
BOOLEAN bLedStartToLinkBlinkInProgress;
BOOLEAN bLedScanBlinkInProgress;
BOOLEAN bLedWPSBlinkInProgress;
u4Byte BlinkTimes; // Number of times to toggle led state for blinking.
LED_STATE BlinkingLedState; // Next state for blinking, either LED_ON or LED_OFF are.
RT_TIMER BlinkTimer; // Timer object for led blinking.
RT_WORK_ITEM BlinkWorkItem; // Workitem used by BlinkTimer to manipulate H/W to blink LED.
} LED_SDIO, *PLED_SDIO;
VOID
LedControlSDIO(
IN PADAPTER Adapter,
IN LED_CTL_MODE LedAction
);
//================================================================================
// Interface to manipulate LED objects.
//================================================================================
#define SwLedOn(_Adapter, _pLed) \
if(IS_HARDWARE_TYPE_8814A(_Adapter)) \
SwLedOn_8814A(_Adapter, _pLed); \
else if(IS_HARDWARE_TYPE_JAGUAR(_Adapter)) \
IS_HARDWARE_TYPE_8821(_Adapter) ? SwLedOn_8821A(_Adapter, _pLed) : SwLedOn_8812A(_Adapter, _pLed); \
else if(IS_HARDWARE_TYPE_8723B(_Adapter)||IS_HARDWARE_TYPE_8192E(_Adapter)) \
IS_HARDWARE_TYPE_8192E(_Adapter) ? SwLedOn_8192E(_Adapter, _pLed) : SwLedOn_8723B(_Adapter, _pLed); \
else if(IS_HARDWARE_TYPE_8821B(_Adapter)) \
SwLedOn_8821B(_Adapter, _pLed); \
else if(IS_HARDWARE_TYPE_8822B(_Adapter)) \
SwLedOn_8822B(_Adapter, _pLed); \
else if(IS_HARDWARE_TYPE_8703B(_Adapter)) \
SwLedOn_8703B(_Adapter,_pLed); \
else if(IS_HARDWARE_TYPE_8188F(_Adapter)) \
SwLedOn_8188F(_Adapter,_pLed); \
else if(IS_HARDWARE_TYPE_8723D(_Adapter)) \
SwLedOn_8723D(_Adapter,_pLed); \
else \
IS_HARDWARE_TYPE_8188E(_Adapter) ? SwLedOn_8188E(_Adapter, _pLed) : SwLedOn_Dummy(_Adapter, _pLed)
#define SwLedOff(_Adapter, _pLed) \
if(IS_HARDWARE_TYPE_8814A(_Adapter)) \
SwLedOff_8814A(_Adapter, _pLed); \
else if(IS_HARDWARE_TYPE_JAGUAR(_Adapter)) \
IS_HARDWARE_TYPE_8821(_Adapter) ? SwLedOff_8821A(_Adapter, _pLed) : SwLedOff_8812A(_Adapter, _pLed); \
else if(IS_HARDWARE_TYPE_8723B(_Adapter)||IS_HARDWARE_TYPE_8192E(_Adapter)) \
IS_HARDWARE_TYPE_8192E(_Adapter) ? SwLedOff_8192E(_Adapter, _pLed) : SwLedOff_8723B(_Adapter, _pLed); \
else if(IS_HARDWARE_TYPE_8821B(_Adapter)) \
SwLedOff_8821B(_Adapter, _pLed); \
else if(IS_HARDWARE_TYPE_8822B(_Adapter)) \
SwLedOff_8822B(_Adapter, _pLed); \
else if(IS_HARDWARE_TYPE_8703B(_Adapter)) \
SwLedOff_8703B(_Adapter,_pLed); \
else if(IS_HARDWARE_TYPE_8188F(_Adapter)) \
SwLedOff_8188F(_Adapter,_pLed); \
else if(IS_HARDWARE_TYPE_8723D(_Adapter)) \
SwLedOff_8723D(_Adapter,_pLed); \
else \
IS_HARDWARE_TYPE_8188E(_Adapter) ? SwLedOff_8188E(_Adapter, _pLed) : SwLedOff_Dummy(_Adapter, _pLed)
VOID
InitSwLeds(
IN PADAPTER Adapter
);
VOID
DeInitSwLeds(
IN PADAPTER Adapter
);
VOID
SwLedOn_Dummy(
IN PADAPTER Adapter,
IN PVOID pLed
);
VOID
SwLedOff_Dummy(
IN PADAPTER Adapter,
IN PVOID pLed
);
#endif /*__INC_HALCOMLED_H*/
|