#ifndef __ELEC_SEAL_H
#define __ELEC_SEAL_H
#include "stm32f7xx_hal.h"

#define User_Screen_5size  1
typedef struct
{
	uint16_t Car_type;//车型号
	uint16_t Full_Oil_Mode;//装油模式
	uint16_t Auto_Sealing_time;//自动施封时间
	uint16_t Decrease_Oil_time;//卸油完成时间
	uint8_t Car_state;					//车辆状态
	uint8_t Car_state_disp;
	uint16_t Random_code;//随机码
	uint16_t Ask_code;//匹配码
	uint16_t Real_operation_ID;//实时操作仓号（装卸油）1 2 3 4
	uint8_t Auto_full_oil_mode;//装油模式，0手动按键  1自动监测
	uint16_t Start_Full_flag;//开始装油标志 0 默认 1开始装油 2装油中  3装油完成 进行施封  4.装油异常
	uint16_t Start_Decrease_flag;//开始卸油标志
	uint8_t Start_Seal_flag;//开始施封标志
	uint16_t Charge_num;//开始切换界面
	uint16_t Null_ID;//空仓编号  bit显示-----某一位为1表明该仓号的状态为空仓状态//李伟添加注释 20210722
	uint16_t Null_ID_disp;
	uint16_t Break_sealing_Id;//破封仓号      bit显示-----某一位为1表明该仓号的状态为破封状态//李伟添加注释 20210722 
//	u8 Break_sealing_taiId;//具体破封单个仓号
	uint8_t Auto_sealedOK_ID;//自动施封OK的仓号  bit显示-----某一位为1表明该仓号的状态为施封状态//李伟添加注释 20210722 
	uint8_t Auto_sealedNOK_ID;//自动施封NOK的仓号  bit显示
	uint8_t Auto_Sealing_state;//解封状态， 0默认  1成功  2失败
	uint8_t Auto_Write_history_flag;//历史数据开始写标志  1 破封 2施封  3解封 0默认不记录
	uint8_t Auto_Write_history_ID;//写历史数据的仓号
	uint8_t Save_flag ;//保存到EEPROM里面标志
	uint8_t Re_sealing_falg;//补封标志
	uint8_t Re_star_sealing_flag;//手动补封开关
	uint8_t Set_Null_ID_flag ;//手动回复空仓
	uint8_t Bottom_key_all;//气动底阀开关状态
	uint8_t Bottom_unload_all;//卸尽状态
	uint8_t Loading_Oil_state;//装油状态   1正在装油  0，装油结束
	uint8_t Read_NULL_ID;//空仓读取，位为1 读取，为0则不读取，开机需要去读取这个值，默认为0
	uint8_t finger_mark_time;//指纹解锁时间标记
}Full_Oil_Info_TypeDef;
extern Full_Oil_Info_TypeDef Full_Oil_allinfo;

extern uint8_t Send_data_nu;

extern uint8_t SealedOK_backup;
extern uint8_t Full_oil_flag ;
extern uint8_t Fill_Oil_fish_ID ;
extern uint8_t Fill_Oil_Nfish_ID ;
extern uint8_t Auto_unload_clear_info_flag,Auto_unload_clear_start_flag;
void Elect_cover(void);
void Usart2_data_analysis(void);


void Test_get_state(void);//获取阀门实施状态
void Real_time_display(void);//
void Offloading_Oil( void);//卸油
void Fill_Oil( void);//装油

void Write_State_history(void);//写历史数据检测
void Break_Seal(void);
void Un_sealing_loading(void);
void  Save_elect_data(void );//保存EEPROM数据，防止掉电丢失
void Car_stateUpdate(void);//车辆状态判断是否OK
void ReSealing_data(void );//自动补封（5分钟内时间在中断函数中改）
void Write_resealing_screen(void);//写自动补封状态
void Read_autoResealing(void);//读自动补封的设置开关

void Send_Sealing_fish(void);//写施封完成
void Write_Clear_Random_code(void);//清空随机码与匹配码
void Auto_Set_NUllID(void);//自动回复空仓
void Auto_unload_clear_info(void);
void Auto_check_Seal_all(void);//自动施封


#endif

