#ifndef __APP_BUFFER_H__
#define __APP_BUFFER_H__
#include <stdint.h>
#include <stdbool.h>

#define DAC_HPOUT_QUEUE_LOW_THRESHOLD			(48*3)
#define DAC_HPOUT_QUEUE_HIGH_THRESHOLD			(48*9)
#define DAC_HPOUT_QUEUE_ADJUST_LENGTH			(96 + 24)
#define DAC_HPOUT_QUEUE_ADJUST_TICK			 	3
#define DAC_HPOUT_QUEUE_MIN_IDLE_LENGTH			(1000*10*2)    // 最短10秒调节一次
#define DAC_HPOUT_QUEUE_BUF_LENGTH				(48*30)


#define ADC_MICIN_QUEUE_LOW_THRESHOLD			(48*3)
#define ADC_MICIN_QUEUE_HIGH_THRESHOLD			(48*9)
#define ADC_MICIN_QUEUE_ADJUST_LENGTH			(96 + 24)
#define ADC_MICIN_QUEUE_ADJUST_TICK			 	3
#define ADC_MICIN_QUEUE_MIN_IDLE_LENGTH			(1000*10*2)    // 最短10秒调节一次
#define ADC_MICIN_QUEUE_BUF_LENGTH				(48*17)


// 向队列中写入数据
bool DAcHpOutQueueWrite(unsigned int *p_buf , int len);
// 从队列中读出数据
int DAcHpOutQueueRead(unsigned int *p_buf , int len);
// 在队列接近满时，调节数据长度
bool DAcHpOutQueueFullAdjust(void);
// 在队列接近空时，调节数据长度
bool DAcHpOutQueueEmptyAdjust(void);
// 获取队列中数据长度
int DAcHpOutQueueDataLength(void);
// 复位调节记录值
void DAcHpOutQueueResetAdjRecord(void);

// 向队列中写入数据
bool AdcMicInQueueWrite(unsigned int *p_buf , int len);
// 从队列中读出数据
int AdcMicInQueueRead(unsigned int *p_buf , int len);
// 在队列接近满时，调节数据长度
bool AdcMicInQueueFullAdjust(void);
// 在队列接近空时，调节数据长度
bool AdcMicInQueueEmptyAdjust(void);
// 获取队列中数据长度
int AdcMicInQueueDataLength(void);
// 获取队列中剩余空间
int AdcMicQueueResidualSpace(void);
// 清空队列中所有数据
bool AdcMicQueueReset();
// 初始化所有队列
void app_buffer_power_on_init(void);


#endif