#ifndef _BSP_BUTTON_
    #define _BSP_BUTTON_

#define    OFF        0
#define    ON         1
#define    ERROR       9
#define    ERROR_END   10
extern  uint8_t         SW_Data[8];
//extern  uint8_t         HW_Data[8];
extern volatile  uint16_t  ErrorCode;
extern uint16_t ENDCode;
//extern uint8_t Manage_Data[8];
extern uint8_t SendSW_HW;
extern uint8_t TFTUp_Switch;
extern uint8_t BDC_PE_ALL;

/*
typedef struct
{
    uint8_t   Flag;

}_UDS;
*/
typedef struct
{
    uint8_t   Flag;      // 按下标志
    uint16_t  Time;      // 按下计时
    uint8_t   Statu;     // 按键状态
    uint8_t   Until;       // 持续标志
  // uint8_t   Value;     // 按键值
  //  unsigned int Alarm           :  1 ; // 
  //  unsigned int SpeedUp         :  1 ; // 
  //  unsigned int SpeedDown       :  1 ; //  
}Class;

extern Class  g_UDS;

typedef struct//union 
{
    Class        S30             ; // 30电
    Class        S15             ; // 15电
    Class        Auto            ; // 自检
    uint8_t      Alarm           ; // 报警
    Class        SpeedUp         ; // 车速+
    Class        SpeedDown       ; // 车速-
    uint8_t      SpeedValue      ; // 车速按键值
    Class        LED/*Up*/       ; // LED
    uint8_t      LEDValue        ; // LED按键值
    Class        FuelWaterUp     ; // 水油按键值+
    Class        FuelWaterDown   ; // 水油按键值-
    uint8_t      FuelWaterValue  ; // 水油按键值
    Class        TFTUp           ; // TFT+
    Class        TFTDown         ; // TFT-
    Class        Other           ; // 其他
    uint8_t      OtherValue      ; // 其他按键值
    Class        End             ; // 结束
    uint8_t      Count           ; // 计数
    Class        EOL             ; // EOL配置   
}_BUTTON;
extern _BUTTON Botton;


typedef struct//union 
{
    uint8_t      Statu           ; // 状态
    uint8_t      Flag            ; // 标志位
}_Eol;
extern _Eol EOL;

#define BDC_PE_STD_PART_NUM  "94023Q8000"  
#define BDC_PE_SVC_PART_NUM  "94033Q8000"  


#define DL3C_SVC_PART_NUM "94013L6000"
#define DL3C_STD_PART_NUM "94003L6000"


extern void APP_SPEED_OUTPUT(void);
extern void APP_CAN_Output_Show (void);
extern void APP_LED_OUTPUT(void) ;
extern void Gui_Temp(void);
extern void APP_TFT_OUTPUT(void);
extern void APP_EOL(void); 
extern void Delay(uint16_t msec); 
extern void APP_AUTO(void);
extern void APP_ELSE(void);
extern void APP_END(void);
extern void Buzzer_Alarm();
extern void User_Delay(uint16_t Delay_Time);
extern void GetPartNum(void);
extern void GetInfo(void);
/*
:  1 
:  1 
:  1 
:  1 
:  1 
:  1 
:  1 
:  1 

:  1 
:  1 
:  1 
:  1 
:  1 
:  3 


*/










extern void Get_Button_Value(void);
extern void Stage_Manage(void);
extern void Button_Statu_Manage(void);
extern void GetPartNum(void);


#endif // #define _BSP_BUTTON_