h文件

#ifndef CRC_8_H_
#define CRC_8_H_
#include "Stdafw.h"
u8 get_crc8(const u8* pp_Data, u32 vp_len);
u8 calc_crc8(u8 vp_crc, const u8* pp_Data, u32 vp_len);

#endif
 

#ifndef EC20_AUD_PROTOCOL_H_
#define EC20_AUD_PROTOCOL_H_
#include "Stdafw.h"

/*起始头*/
#define PROTOCOL_HEAD_CODE 0xAA

/*传输协议帧*/
struct t_aud_frame
{
    u8 m_Head;    //起始头
    u8 m_Crc;     //crc校验
    u8 m_CmdId;   //命令id
    u16 m_DataLen;//数据长度
    u8* m_Data;   //数据指针
    BOOL m_Valid; //有效性   +++
};


/*协议字段*/
typedef enum {
    PROTOCOL_HEAD = 0,
    PROTOCOL_CRC,
    PROTOCOL_ID,
    PROTOCOL_DLEN,
    PROTOCOL_DATA
}E_PROTOCOL_TYPE;

/*协议命令*/
typedef enum
{
    // record
    START_RECORDER_REQ = 0X1,
    START_RECORDER_RSP = 0X2,
    STOP_RECORDER_REQ,
    STOP_RECORDER_RSP,
    DATA_RECORDER_IND,
    // audio play
    START_PLAY_AUDIO_REQ = 0x6,
    START_PLAY_AUDIO_RSP,
    STOP_PLAY_AUDIO_REQ,
    STOP_PLAY_AUDIO_RSP,
    AUDIO_DATA_IND,
    AUDIO_DATA_OVER_RSP,
    AUDIO_PLAY_RSP
}E_AUD_CMDID;

/*应答类型*/
typedef enum
{
    AUD_TYPE_RSP = 0,
    RECORDER_TYPE_RSP,
    STOP_REC_TYPE_RSP,
}E_TYPE_RSP;

/*应答帧*/
struct t_rsp_code
{
    i32 m_PlayResult;
    u32 m_ContextId;
};

/*错误码定义*/
typedef enum
{
    AUD_RET_OK = 0,
    AUD_ERR_PARAM = -1,
    AUD_ERR_BUSY = -2,
    AUD_ERR_INVAILD_DATA = -3,
    AUD_ERR_MEM_NOT_ENOUGH = -4,    // 内存不足
    AUD_ERR_INVAILD_OPERATE = -5,
    AUD_ERR_UNKNOWN = -6,
    AUD_ERR_TIMEOUT = -7,
    AUD_ERR_SRV_NOT_CONNECTED = -8,
    AUD_ERR_NOSUPPORT = -9,
    AUD_ERR_RES_CONFLICT = -10,    // 资源冲突
    AUD_ERR_RES_OVER = -11        // 资源不足

}E_ERRCODE;

/*命令执行函数映射表结构*/
struct t_cmd_hander
{
    u8  m_CmdId;
    BOOL(*m_handler)(struct t_aud_frame*, E_ERRCODE*);
};

/* =============================协议 接口======================================*/
/*audio协议帧解析*/
BOOL aud_protocol_parse(const void* pp_ptr, u32 vp_ulen, struct t_aud_frame** pp_aud_frame_out, E_PROTOCOL_TYPE** vp_status_out,BOOL* pp_exc_status);

/*audio协议帧执行*/
BOOL aud_protocol_excute(struct t_aud_frame* pp_aud_frame, struct t_cmd_hander* vp_cmd_handler_tbl, u8 vp_tab_len, E_ERRCODE* vp_errcode);

/*audio发送帧*/
u32 protocol_send_frame(u8 vp_CmdId, struct t_rsp_code* pp_rspcode, const E_TYPE_RSP vp_type_rsp);

/*audio释放帧*/
void aud_destory_frame(struct t_aud_frame* pp_aud_frame);

/*audio获取帧校验*/
u8 aud_get_crc8(struct t_aud_frame* pp_aud_frame);

/*audio帧应答*/
BOOL aud_protocol_response(struct t_aud_frame* pp_aud_frame, E_ERRCODE vp_errcode, struct t_rsp_code* pp_rspcode);

#endif

 

#ifndef EC20_AUD_MANAGE_H_
#define EC20_AUD_MANAGE_H_
#include "aud_protocol.h"
#include "aud_config.h"
#include "Stdafw.h"

/*音频播放状态*/
typedef enum
{
    PLAY_STATUS = 0,// 播放状态
    TRANS_STATUS,   // 数据传输状态
    STOP_STATUS,    // 停止状态
}E_AUD_STATUS;


/*录音状态*/
typedef enum
{
    RECORDER_START_STATUS = 0,// 录音状态
    RECORDER_STOP_STATUS,     // 停止状态
}E_RECORD_STATUS;

/*音频格式*/
typedef enum {
    MP3_FMT = 0,
    AMR_FMT,
    PCM_FMT,
}E_PCM_FORMAT;

/*音频数据属性*/
struct t_aud_media_inf
{
    u8 m_Crc;               //音频数据校验
    u32 m_MediaId;          //媒体标志id
    E_PCM_FORMAT m_Format;  //音频格式
    u8   m_Volume;          //音频音量
    u32  m_TotalSize;       //音频总大小
    u32  m_CurrentSize;     //当前音频大小
};

/*音频缓冲区*/
struct t_aud_media_buffer
{
    struct t_aud_media_inf m_Media_info;              //音频数据属性
    u8 m_Databuffer[AUD_DATABUF_MAX_SIZE];            //数据缓冲区
};

/* =============================音频应用 接口======================================*/
/*音频数据处理*/
BOOL aud_excute_rev(const void * pp_ptr, u32 vp_ulen);

/*音频超时扫描*/
void audio_scan_1hz(void);

/*音频初始化*/
BOOL audio_app_init(void);

/*音频回调结果*/
base_EEventResult pfv_aud_cb(base_EAudioKind vp_AudioKind, base_EAudioState vp_State);

/*录音回调结果*/
base_EEventResult pfv_record_cb(const u8 *pp_Pcm_Data, u32 vp_DataLen, t_ywCbContext vp_Ctx);
#endif
 

 

 

#ifndef AUD_CFG_H_
#define AUD_CFG_H_

#define AUD_AMR_POWIO           base_IO_GPIO4       //功放引脚
#define TIMEOUT_MAX_SEC         10                  //超时最大限制时间
#define AUD_DATABUF_MAX_SIZE    1*1024*1024 //1Mbyte   //音频缓存BUF大小
#define REC_DATABUF_MAX_SIZE    64*1024     //64Kbyte  //录音缓存BUF大小
#define USE_AUDIO_SCI           sci_seqThird           //音频应用使用的串口
#define AUD_DEBUG           //打印调试信息开关

#ifdef AUD_DEBUG
    #define AUD_TRACE(format, ...) printf (format, ##__VA_ARGS__)
#else
    #define AUD_TRACE(format, ...)
#endif

#endif

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值