#ifndef __PROGRAMME_APP_H__
#define __PROGRAMME_APP_H__
#include "stdio.h"

/*睡眠模式数据定义*/
typedef struct
{
  uint16_t sleep_start_time;    //睡眠开启时间/min
  uint16_t sleep_end_time;      //睡眠关闭时间/min
  uint8_t sleep_hour;           //睡眠运行时长/h
  uint8_t sleep_run_state;      //睡眠运行状态  0：关闭，1：一阶段（当前设置温度运行）， 2：二阶段（当前设置温度+1/-1运行），3：三阶段（当前设置温度+2/-2运行）
  float temp;                //温度
}sleep_data_t;

/*定时数据段定义*/
typedef struct
{
  uint8_t enable;   //这一段使能/失能
  uint8_t on_off;   //开/关
  uint8_t state;    //段运行状态
  uint16_t time;    //时间
}sch_seg_data_t;

/*定时模式天数据定义*/
typedef struct
{
  sch_seg_data_t seg[4];
}sch_day_data_t;

/*编程模式数据定义*/
typedef struct
{ 
  sch_day_data_t day[7];
}sch_data_t;

/*编程模式段定义*/
typedef struct
{
  uint16_t time;    //min
  uint16_t temp;    //温度
  uint8_t state;    /*段运行状态*/
}pro_seg_data_t;

/*编程模式天数据定义*/
typedef struct
{
  pro_seg_data_t seg[6];
}pro_day_data_t;

/*编程模式数据定义*/
typedef struct
{ 
  pro_day_data_t day[7];
}pro_data_t;

typedef struct
{
  uint8_t temp_unit;        //温度单位0:摄氏度，1:华氏度
  uint8_t programme_sleep;  //睡眠模式
  uint8_t programme_pro;    //编程模式
  uint8_t programme_sch;    //定时模式
  uint8_t flash_flag;       //flash写入标志
  pro_data_t pro_data_cool;
  pro_data_t pro_data_heat;
  sleep_data_t sleep_data;
  sch_data_t sch_data;
} programme_data_t;


/*programme_type: 0:sleep 1:programme 2:schedule*/
void programme_state_set(uint8_t programme_type, uint8_t state);
uint8_t programme_state_get(uint8_t programme_type);
void programme_init(void);
programme_data_t programme_data_get(void);
void programme_data_set(programme_data_t param);
void programme_state_reset(void);
void prog_sch_state_reset(void);
void prog_sleep_state_reset(void);

void pro_cool_heat_set(uint8_t param);
uint8_t pro_cool_heat_get(void);
void programme_data_C_F(void);

void programme_data_cool_reset(uint8_t cool_heat_type);
void prog_schedule_data_reset(void);

void programme_falsh_data_check_write(void);
void programme_falsh_data_read(void);
#endif
