luat_audio_codec.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef _LUAT_AUDIO_CODEC_H_
  2. #define _LUAT_AUDIO_CODEC_H_
  3. #define LUAT_CODEC_MODE_MASTER 0x00
  4. #define LUAT_CODEC_MODE_SLAVE 0x01
  5. #define LUAT_CODEC_PA_OFF 0x00
  6. #define LUAT_CODEC_PA_ON 0x01
  7. typedef enum {
  8. LUAT_CODEC_CTL_MODE, // 模式设置
  9. LUAT_CODEC_CTL_VOLUME, // 音量设置
  10. LUAT_CODEC_CTL_MUTE, // 静音设置
  11. LUAT_CODEC_CTL_RATE, // 采样率设置
  12. LUAT_CODEC_CTL_BITS, // 采样位设置
  13. LUAT_CODEC_CTL_CHANNEL, // 通道设置
  14. LUAT_CODEC_CTL_PA, // pa控制
  15. } luat_audio_codec_ctl_t;
  16. struct luat_audio_codec_opts;
  17. typedef struct luat_audio_codec_conf {
  18. int i2c_id;
  19. int samplerate; //16k
  20. int bits; //16
  21. int channels; //1ch/2ch
  22. int pa_pin;
  23. uint8_t vol;
  24. uint8_t pa_on_level;
  25. uint32_t dummy_time_len;
  26. uint32_t pa_delay_time;
  27. const struct luat_audio_codec_opts* codec_opts;
  28. } luat_audio_codec_conf_t;
  29. typedef struct luat_audio_codec_opts{
  30. const char* name;
  31. int (*init)(luat_audio_codec_conf_t* conf); //初始化
  32. int (*deinit)(luat_audio_codec_conf_t* conf); //反初始化
  33. int (*control)(luat_audio_codec_conf_t* conf,luat_audio_codec_ctl_t cmd,uint32_t data); //控制函数
  34. int (*start)(luat_audio_codec_conf_t* conf); //停止
  35. int (*stop)(luat_audio_codec_conf_t* conf); //开始
  36. } luat_audio_codec_opts_t;
  37. extern const luat_audio_codec_opts_t codec_opts_es8311;
  38. #endif