#ifndef __DEBUG_H__
#define __DEBUG_H__

#endif

#ifndef __DISPLAY_COMMON_H__
#define __DISPLAY_COMMON_H__

#include <stdlib.h>
#include <stdint.h>
#include "control_comm.h"

#define  AIR_CONDITION      				1
#define  FLOOR_HEATING						2
#define	 FAN								3


//enum{
//	SYSTEM_MODE_OFF 				= 0,
//	SYSTEM_MODE_AUTO 				= 1,
//	SYSTEM_MODE_MANUAL 				= 2,
//	SYSTEM_MODE_COOLING 			= 3,
//	SYSTEM_MODE_HEATING 			= 4,
//	SYSTEM_MODE_EMERGENCY_HEATING 	= 5,
//	SYSTEM_MODE_PRE_COOLING			= 6,
//	SYSTEM_MODE_AIR					= 7,	
//	SYSTEM_MODE_DRY					= 8,
//	SYSTEM_MODE_SLEEP				= 9,
//	SYSTEM_MODE_ROLL				= 10,
//};
enum{
	ERROR_CODE_NONE 				= 0,
	ERROR_CODE_SENSOR_WRONG 		= 1,
	ERROR_CODE_ZIGBEE_WRONG 		= 2,
	ERROR_CODE_FILTER_WASH 			= 3,
	ERROR_CODE_COOL_DEFIND 			= 4,
	ERROR_CODE_AIR_CONDITION		= 5,
};
typedef struct
{
	u8    on_off;							//开关							
	u8    power_off_time;                   //倒计时时间  
    u8    power_off_flage;                  //延时关机图标	
    s16   real_temperature;				    //环境温度 
    u16   set_temperature;				    //设置温度 
    s8    correct_temperature;              //温度校准值
    u8    system_type; 						//系统类型   
    u8    operation_mode;                   //运行模式 
    u8    wind_speed;                       //风速   0 关 1 低 2 中 3 高，4 开，5，自动 ，6 智能 7，中低，8 中高 ，9 超高   默认自动    
    u8    lock_flage;                       //儿童锁显示图标 
	u8    air_cond_type;					//空调类型   1.风机盘管  2，线控器
	u8    air_wind_direct;					//风向  0 下 1，中 2，高       有 1
	u8    error;							//error code
	u16   screen_save_time;					//屏保时间       00  代表30
	u16   filter_wash_time;					//滤网清洗时间    3000
	u8    no_disturb_mode;					//勿扰模式      0
	u8    air_product_id;					//空调品牌
	u8    air_type		;					//空调类型
	u8    air_master_slavery_mode;			//主从模式
}OLED_AIR_DSD;
typedef struct
{
	u8    on_off;							//开关			  1				
	u8    power_off_time;                   //倒计时时间  
    u8    power_off_flage;                  //延时关机图标	
    s16   real_temperature;				    //环境温度 
    u16   set_temperature;				    //设置温度        26
    s8    correct_temperature;              //温度校准值
    u8    system_type; 						//系统类型       手动
    u8    lock_flage;                       //儿童锁显示图标 
	u8    floor_heating_type;				//地暖类型   1.水地暖  2，电地暖
	u8    error;							//error code
	u16   screen_save_time;					//屏保时间
	u8    no_disturb_mode;					//勿扰模式
}OLED_FLOOR_HEATING_DSD;
typedef struct
{
	u8    on_off;							//开关							
	u8    power_off_time;                   //倒计时时间  
    u8    power_off_flage;                  //延时关机图标
	s16   real_temperature;				    //环境温度 
	s8    correct_temperature;              //温度校准值	
    u8    system_type; 						//系统类型   
    u8    wind_speed;                       //风速    1 低 2 中 3 高，5，自动        自动
    u8    lock_flage;                       //儿童锁显示图标 
	u8    error;							//error code
	u16   screen_save_time;					//屏保时间
	u16   filter_wash_time;					//滤网清洗时间
	u8    no_disturb_mode;					//勿扰模式
}OLED_FAN_DSD;
typedef struct Display_Data
{     
	u8    		device_type;
    u8   		net_work_flage;                   //ZigBee通信状态图标
	u8	  		screen_page;
    u8    		aging_test_flag;                  //老化标志位  0 进入0-15min前的老化，1，进入15min - 4小时老化 2，表示老化完成
	uint64_t    local_timer;					  //当前时间（从上电开始计算）
	u8    		mcu_Version;                       //min58版本
	u8    		zigbee_Version;                    //zigbee版本
	u8          binding_device;					  //0 未绑定  1，绑定空调，2，地暖，3，绑定新风
	u8          recv_lcd_off;					  //接受到控制息屏的指令后
	u8			is_dispaly_cur_temp;
	u8			zigbee_mac[8];
	OLED_AIR_DSD  Air_Device;
	OLED_FLOOR_HEATING_DSD  FLOOR_Device;
	OLED_FAN_DSD  FAN_Device;
}OLED_ALL_DSD;

	
typedef struct 
{
    u8  adjust_fan_speed_status;     //按下风速按键   （key2）
	u8  presss_status;     			//按下风速按键   （key2）

}Key_Operation_Status;
typedef struct{
	u32  onDuration;
	u32  offDuration;
	u32  onCounter;
	u32  offCounter;
	u8   start;
	u8   end;
	u32  blink_cnt;
}NET_INDICATOR;

typedef struct{
	u8   enter_config_mode;
	u8   config_page;
	u8   config_page1_func_value;
	u8   config_page2_value;
	u8   support_function_len;
	u8   support_function_list[6];       //1,风机盘管管制设置 2,温度校准 3,是否显示当前房间温度设置,4, 超时进入屏保时间设置 10 恢复出厂设置
	volatile u32  config_time_ms;
	volatile u8   config_time_s;
	u8   config_timeout_display;
}Local_Config_Operation;
typedef enum  {
	LOCAL_FUNC_FAN_PANEL_SETTING 			= 1,
	LOCAL_FUNC_CALIBRATE_TEMPER  			= 2,
	LOCAL_FUNC_IS_DISPLAY_CURRENT_TEMPER  	= 3,
	LOCAL_FUNC_SCREEN_SAVING_TIME  			= 4,
	LOCAL_FUNC_NOT_DISTURB  				= 5,
	LOCAL_FUNC_FILTER_TIME  				= 10,
	LOCAL_FUNC_RESET_FACTORY  				= 100,
}Local_Config_Function;

#define   SysIndicatorScanTimer  20

extern  OLED_ALL_DSD  Oled_Display_Info; 
extern  BACKLIGHT_CONTROL sBacklight;
extern  Key_Operation_Status  gKey_Press_Info;
	

void Display_poweroff_time(u8 display_time);
extern void  display_error(u8 error_value);
void Operate_Led_Button(u8 device_type,u8 on_off);
void Set_CMD_Handler(u8 device_type,u16 opcode,u8 *arg,u8 arg_len);
void display_current_page(void);
u16 GetNetScanTime( void );
void SetNetScanTime(u16 uSetkeyScanTime);
u8  kNetIndicatorIsBlinking(void);
void kNetIndicatorOptTrigger(uint8_t id, uint32_t duration_on_ms, uint32_t duration_off_ms, uint32_t times, u8 start, u8 end );
void kLedModuleActionDetectCallback(void );

void  display_set_temp(u8 display_mode,int temp_value,u8 ararm_f);
void  display_system_mode(u8 heat,u8 dry,u8 cold ,u8 air,u8 sleep,u8 manufture,u8 Auto,u8 Roll);
void  display_wind_speed(u8 wind_speed,u8 support_type);
void  display_wind_direct(u8 low,u8 mediu,u8 high);
void Displayt_System_Mode(u8 system_mode);
void Oled_Display_whole(void);
void PowerOff(void);
void EnterScreenSaveMode(void);
void Detect_Human_Dispaly(void);
u8 System_Mode_Trans(u8 device_type,u8 is_support_sleep);
void Fan_Button_Handler(void);
void delay_confirm_fan_speed(void);								//提前打断延时,
void Control_LED_ON_OFF(u8 onoff_bits);
u8 Key_Operate_Config_Operation(u8 keyid,u8 keyEvent);
u8 IsLocalConfigMode(void);
u8  kAllLedIsBlinking(void);
void Display_Up_Contend(u8 device_type);
void Setup_Mode_Handle (void);

#define Operation_LED(X) 	 		Operate_Led_Button(Oled_Display_Info.screen_page,X)
#define  Reload_Save_Time()   		do{ sBacklight.blacklight_flag 		= 1;\
										sBacklight.time_blacklight_ms 	= 0;\
										sBacklight.time_blacklight_s 	= 0;\
										LCD_CONTROL(1);	\
										Operation_LED(1);}while(0);

										
										
										
#endif 
