#ifndef _LED_CONTROL_H
#define _LED_CONTROL_H

/*************************TYPE DEF**********************/
#define NUM_OF_LEDS 4

#define DSD_START_OFFSET                     0x0200
#define EEPROM_VERSION_OFFSET           	 0x020E
#define EEPROM_HW_PARAM_POINTER_ADDRESS 	 0x0218
#define EEPROM_HW_PARAM_POINTER_ADDRRES_MAP5 0x0220
#define GPIO_SECTION_START_OFFSET        	 0x03

#define COMPATIBILITY_SECTION_LENGTH         42
#define COMPATIBILITY_SECTION_LENGTH_MAP5    84


#define EEPROM_MAP5_MAJORVERSION             5
#define EEPROM_MAP5_MINORVERSION             0


#define MAX_NUM_OF_BLINKS 					10
#define NUM_OF_GPIO_PINS 					16

#define DISABLE_GPIO_NUM 					0xFF
#define EVENT_SIGNALED 						1

#define MAX_FILE_NAME_BUFFER_SIZE 			100

#define TURN_ON_LED(GPIO, index) do{ \
							UINT gpio_val = GPIO; \
							(Adapter->LEDInfo.LEDState[index].BitPolarity == 1) ? \
							wrmaltWithLock(Adapter,BCM_GPIO_OUTPUT_SET_REG, &gpio_val ,sizeof(gpio_val)) : \
							wrmaltWithLock(Adapter,BCM_GPIO_OUTPUT_CLR_REG, &gpio_val, sizeof(gpio_val)); \
						}while(0);

#define TURN_OFF_LED(GPIO, index)  do { \
							UINT gpio_val = GPIO; \
							(Adapter->LEDInfo.LEDState[index].BitPolarity == 1) ? \
							wrmaltWithLock(Adapter,BCM_GPIO_OUTPUT_CLR_REG,&gpio_val ,sizeof(gpio_val)) : \
							wrmaltWithLock(Adapter,BCM_GPIO_OUTPUT_SET_REG,&gpio_val ,sizeof(gpio_val));  \
						}while(0);

#define B_ULONG32 unsigned long

/*******************************************************/


typedef enum _LEDColors{
	RED_LED = 1,
	BLUE_LED = 2,
	YELLOW_LED = 3,
	GREEN_LED = 4
} LEDColors; 				/*Enumerated values of different LED types*/

typedef enum LedEvents {
	SHUTDOWN_EXIT = 0x00,
	DRIVER_INIT = 0x1,
	FW_DOWNLOAD = 0x2,
	FW_DOWNLOAD_DONE = 0x4,
	NO_NETWORK_ENTRY = 0x8,
	NORMAL_OPERATION = 0x10,
	LOWPOWER_MODE_ENTER = 0x20,
	IDLEMODE_CONTINUE = 0x40,
	IDLEMODE_EXIT = 0x80,
	LED_THREAD_INACTIVE = 0x100,  //Makes the LED thread Inactivce. It wil be equivallent to putting the thread on hold.
	LED_THREAD_ACTIVE = 0x200    //Makes the LED Thread Active back.
} LedEventInfo_t;			/*Enumerated values of different driver states*/

#define DRIVER_HALT 0xff


/*Structure which stores the information of different LED types
 *  and corresponding LED state information of driver states*/
typedef struct LedStateInfo_t
{
	UCHAR LED_Type; /* specify GPIO number - use 0xFF if not used */
	UCHAR LED_On_State; /* Bits set or reset for different states */
	UCHAR LED_Blink_State; /* Bits set or reset for blinking LEDs for different states */
	UCHAR GPIO_Num;
	UCHAR 			BitPolarity;				/*To represent whether H/W is normal polarity or reverse
											  polarity*/
}LEDStateInfo, *pLEDStateInfo;


typedef struct _LED_INFO_STRUCT
{
	LEDStateInfo	LEDState[NUM_OF_LEDS];
	BOOLEAN 		bIdleMode_tx_from_host; /*Variable to notify whether driver came out
											from idlemode due to Host or target*/
	BOOLEAN			bIdle_led_off;
	wait_queue_head_t   notify_led_event;
	wait_queue_head_t	idleModeSyncEvent;
 	struct task_struct  *led_cntrl_threadid;
    int                 led_thread_running;
	BOOLEAN			bLedInitDone;

} LED_INFO_STRUCT, *PLED_INFO_STRUCT;
//LED Thread state.
#define BCM_LED_THREAD_DISABLED			 	 0 //LED Thread is not running.
#define BCM_LED_THREAD_RUNNING_ACTIVELY  	 1 //LED thread is running.
#define BCM_LED_THREAD_RUNNING_INACTIVELY	 2 //LED thread has been put on hold



#endif

