#ifndef __PTZ_POWER_OFF_H_
#define __PTZ_POWER_OFF_H_
//#include "gd32f4xx_gpio.h"
#include "ptz_struct.h"
//L6235D涡轮蜗杆重型云台
#ifdef PTZ_HEAVY_WORM_L6235D_AS5047D
  #define PTZ_POWER_DOWN_INC          0.2  //电压降低的量（伏）
#endif

//L6235D蜗轮蜗杆中型云台AS5047D
#ifdef PTZ_MEDIUM_WORM_L6235D_AS5047D
  #define PTZ_POWER_DOWN_INC          0.2  //电压降低的量（伏）
#endif

//直齿轻型云台
#ifdef PTZ_LIGHT_GEAR_L6235D_AS5047D 
  #define PTZ_POWER_DOWN_INC          0.2  //电压降低的量（伏）
#endif

//L6235D涡轮蜗杆超轻型云台
#ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_12V 
  #define PTZ_POWER_DOWN_INC          0.2  //电压降低的量（伏）
#endif

#ifdef PTZ_SUPER_LIGHT_WORM_L6235D_AS5047D_24V 
  #define PTZ_POWER_DOWN_INC          0.2  //电压降低的量（伏）
#endif

//步进电机
#ifdef PTZ_SUPER_LIGHT_WORM_STEP_DRV8711_AS5047D_12V
  #define PTZ_POWER_DOWN_INC          0.2 //电压降低的量（伏）
#endif

#ifdef PTZ_SUPER_LIGHT_WORM_STEP_DRV8711_AS5047D_24V
  #define PTZ_POWER_DOWN_INC          0.2 //电压降低的量（伏）
#endif

#ifdef PTZ_SUPER_LIGHT_WORM_STEP_TMC2160_AS5047D_24V    
  #define PTZ_POWER_DOWN_INC          0.2 //电压降低的量（伏）
#endif

#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V    
  #define PTZ_POWER_DOWN_INC          0.2 //电压降低的量（伏）
#endif


#define PTZ_MB85RC64_ADD_A            0x0000//掉电存储地址A
#define PTZ_MB85RC64_ADD_B            0x0400//掉电存储地址B

#define PTZ_POWER_OFF_DATA_SAVE_NUM   2//最多存储的次数
#define PTZ_POWER_OFF_DATA_READ_NUM   2//最多存储的次数
//#define PTZ_POWER_OFF_ADC_MANY        1
#define PTZ_POWER_OFF_ADC_SINGLE      2

typedef struct _PowerOffData_ 
{
  PtzAs5047D hori_as5047d;
  PtzAs5047D vert_as5047d;
  float hori_angle;
  float vert_angle;
  float power_down_offset_anle;
  unsigned short int num;//编号，数字越大，表示存储的数据越新，主要用于判断最后一次保存的数据
  float crc;
}PowerOffData;


void init_power_off_module(void);
char ptz_power_off_data_read();
char ptz_power_off_data_erase(unsigned short int add);
char ptz_power_off_data_save(unsigned short int add);
#endif