فهرست منبع

add:添加静音接口

Dozingfiretruck 2 سال پیش
والد
کامیت
becd596814
2فایلهای تغییر یافته به همراه23 افزوده شده و 13 حذف شده
  1. 14 12
      components/multimedia/luat_audio_codec.h
  2. 9 1
      components/multimedia/luat_audio_es8311.c

+ 14 - 12
components/multimedia/luat_audio_codec.h

@@ -7,13 +7,15 @@
 #define LUAT_CODEC_PA_OFF                    0x00
 #define LUAT_CODEC_PA_ON                     0x01
 
-#define LUAT_CODEC_CTL_MODE                  0x00
-#define LUAT_CODEC_CTL_VOLUME                0x01
-#define LUAT_CODEC_CTL_RATE                  0x02
-#define LUAT_CODEC_CTL_BITS                  0x03
-#define LUAT_CODEC_CTL_CHANNEL               0x04
-#define LUAT_CODEC_CTL_PA                    0x05
-
+typedef enum {
+    LUAT_CODEC_CTL_MODE,        // 模式设置
+    LUAT_CODEC_CTL_VOLUME,      // 音量设置
+    LUAT_CODEC_CTL_MUTE,        // 静音设置
+    LUAT_CODEC_CTL_RATE,        // 采样率设置
+    LUAT_CODEC_CTL_BITS,        // 采样位设置
+    LUAT_CODEC_CTL_CHANNEL,     // 通道设置
+    LUAT_CODEC_CTL_PA,          // pa控制
+} luat_audio_codec_ctl_t;
 
 struct luat_audio_codec_opts;
 
@@ -32,11 +34,11 @@ typedef struct luat_audio_codec_conf {
 
 typedef struct luat_audio_codec_opts{
     const char* name;
-    int (*init)(luat_audio_codec_conf_t* conf);
-    int (*deinit)(luat_audio_codec_conf_t* conf);
-    int (*control)(luat_audio_codec_conf_t* conf,uint8_t cmd,int data);
-    int (*start)(luat_audio_codec_conf_t* conf);
-    int (*stop)(luat_audio_codec_conf_t* conf);
+    int (*init)(luat_audio_codec_conf_t* conf);                         //初始化
+    int (*deinit)(luat_audio_codec_conf_t* conf);                       //反初始化
+    int (*control)(luat_audio_codec_conf_t* conf,luat_audio_codec_ctl_t cmd,uint32_t data); //控制函数
+    int (*start)(luat_audio_codec_conf_t* conf);                        //停止
+    int (*stop)(luat_audio_codec_conf_t* conf);                         //开始
 } luat_audio_codec_opts_t;
 
 

+ 9 - 1
components/multimedia/luat_audio_es8311.c

@@ -98,6 +98,12 @@ static int es8311_codec_standby(void){
     return 0;
 }
 
+static uint8_t es8311_codec_mute(uint8_t enable){
+    if (enable)  es8311_write_reg(ES8311_DAC_REG31, 0x64);
+    else es8311_write_reg(ES8311_DAC_REG31, 0x00);
+	return 0;
+}
+
 static uint8_t es8311_codec_vol(uint8_t vol){
     if(vol < 0 || vol > 100){
 		return -1;
@@ -377,7 +383,7 @@ static void es8311_codec_pa(luat_audio_codec_conf_t* conf,uint8_t on){
 	}
 }
 
-static int es8311_codec_control(luat_audio_codec_conf_t* conf,uint8_t cmd,int data){
+static int es8311_codec_control(luat_audio_codec_conf_t* conf,luat_audio_codec_ctl_t cmd,uint32_t data){
     switch (cmd)
     {
     case LUAT_CODEC_CTL_MODE:
@@ -385,6 +391,8 @@ static int es8311_codec_control(luat_audio_codec_conf_t* conf,uint8_t cmd,int da
         break;
     case LUAT_CODEC_CTL_VOLUME:
         es8311_codec_vol((uint8_t)data);
+    case LUAT_CODEC_CTL_MUTE:
+        es8311_codec_mute((uint8_t)data);
         break;
     case LUAT_CODEC_CTL_RATE:
         es8311_codec_samplerate((uint16_t)data);