#ifndef _SR_KEY_PRODUCT_H
#define _SR_KEY_PRODUCT_H

#include "sr_key.h"
#include "key/bsp/bsp_key.h"

//按键按下类型
typedef enum{
    /*默认状态*/
    E_KEY_INIT_STATE,
    /*按键开红外*/
    E_KEY_OPEN_IR,
    /*按键NB上报*/
    E_KEY_OPNE_NB,
    /*强磁干扰*/
    E_KEY_MAGNETIC
}SR_KEY_TYPE_E;

//按键管理变量
typedef struct{
    SR_KEY_TYPE_E e_keyPressType;
    gw_u16 key_cnt;   
}SR_KEY_T;

#define KEY_OPEN_IR_TIME                3
#define KEY_OPEN_NB_TIME                7
#define KEY_MAGNETIC_TIME               30

#if  0
SR_KEY_TYPE_E SR_Wm_Key_Task(void);
void SR_Wm_ClaerKeyType(void);
SR_KEY_T *SR_Wm_KeyGet_Data(void);
void SR_Wm_KeyTimerCallback(void);
void SR_Wm_KeyRelease(SR_KEY_T *ps_key);
void SR_Wm_KeyPress(SR_KEY_T *ps_key);
E_Gpio_State SR_Wm_KeyGetState(void);
E_Result_Check SR_Wm_KeyIsBusy(void);
void SR_Wm_KeyInit(void);
void SR_Wm_KeyWakeup_Init(void);
#endif



//按键定时扫描任务，  1s周期执行
#define SR_AppKeyTimerCb()    SR_KeyScanTask()

//按键业务轮询任务
void SR_AppKeyPollTask(void);  

//按键硬件初始化
int SR_AppKeyHwInit(void);

//按键模块初始化
int SR_AppKeyInit(void);


/**
 * @brief: 按键模块是否忙
 * @return 1:按键模块忙，0:按键模块空闲
 */
int SR_AppKeyIsBusy(void);


//获取按键内部变量
SR_KEY_T *SR_AppKeyGetData(void);

//清除按键按下type
void SR_AppKeyClearPresType(void);

//获取按键按下type
SR_KEY_TYPE_E SR_AppGetKeyPresType(void);

#endif
