#ifndef BUZZER_PLAY_H__
#define BUZZER_PLAY_H__
//#define BUZZER_PLATFORM_16BIT
#ifdef BUZZER_PLATFORM_16BIT
typedef unsigned char Buzzer_uint8_t;
typedef unsigned int Buzzer_uint16_t;
typedef unsigned long Buzzer_uint32_t;
#else
typedef unsigned char Buzzer_uint8_t;
typedef unsigned short Buzzer_uint16_t;
typedef unsigned int Buzzer_uint32_t;
typedef unsigned long long Buzzer_uint64_t;
#endif
/*************************************************************************************/
/*当前文件版本号*/
#define BUZZER_VERSION_NUM 0X20U
/*操作函数返回状态*/
typedef enum
{
BUZZER_OPERATE_SUCCESS = 0UL, /*函数操作成功*/
BUZZER_OPERATE_FAIL, /*函数操作失败*/
} Buzzer_Operate_Type_en_t;
/*正极控制函数 1:打开 0:关闭*/
typedef Buzzer_Operate_Type_en_t (*Buzzer_Positive_Handle)(Buzzer_uint8_t u8BuzzerOnOff);
/*负极设置函数 u16BuzzerFre :频率 HZ 。 u16BuzzerDuty :占空比 千分之一精度*/
typedef Buzzer_Operate_Type_en_t (*Buzzer_Negative_Set)(Buzzer_uint16_t u16BuzzerFre, Buzzer_uint16_t u16BuzzerDuty);
typedef struct
{
Buzzer_Positive_Handle pfnBuzzerPositiveHandle;
Buzzer_Negative_Set pfnBuzzerNegativeSet;
} Buzzer_Init_st_t;
typedef struct
{
Buzzer_uint16_t u16BuzzerFrequency; /*频率 HZ*/
Buzzer_uint16_t u16BuzzerDuty; /*占空比 千分之一精度*/
Buzzer_uint16_t u16BuzzerChargeTime; /*充电时间 ms */
Buzzer_uint16_t u16BuzzerPlayONTime; /*正常播放时间 ms 需要一直播放时填 0xFFFFU */
Buzzer_uint16_t u16BuzzerFadeTime; /*淡出时间 ms */
} Buzzer_Attribute_st_t;
/*************************************************************************************/
/*KL30和每次唤醒时都调用一次*/
extern void Buzzer_Play_Init(Buzzer_Init_st_t *pstBuzzerInit);
/*声音播放计时函数 , 几毫秒调用一次就传入多少*/
extern void Buzzer_Play_Time_Count(Buzzer_uint8_t u8TimeBase);
/*获取当前播放状态函数 0:空闲 非0 :忙*/
extern Buzzer_uint8_t Buzzer_Get_Status(void);
/*开始播放函数*/
extern Buzzer_Operate_Type_en_t Buzzer_Start_Play(const Buzzer_Attribute_st_t *pstBuzzerAttribute);
/*停止播放函数*/
extern Buzzer_Operate_Type_en_t Buzzer_Stop_Play(void);
/*实时调用*/
extern void Buzzer_Play_Service(void);
/*确保空闲状态时调用,休眠初始化*/
extern Buzzer_Operate_Type_en_t Buzzer_Play_Sleep_Init(void);
/*读取版本号*/
extern Buzzer_uint8_t Buzzer_Play_Version_Read(void);
/*************************************************************************************/
#endif