Dozingfiretruck 2 лет назад
Родитель
Сommit
f3fd5bd840

+ 0 - 40
components/multimedia/luat_audio_codec.c

@@ -1,40 +0,0 @@
-#include "luat_base.h"
-#include "luat_gpio.h"
-#include "luat_i2c.h"
-#include "luat_audio_codec.h"
-#include "luat_timer.h"
-
-int luat_audio_codec_init(luat_audio_codec_conf_t* conf){
-    
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 0 - 48
components/multimedia/luat_audio_codec.h

@@ -1,48 +0,0 @@
-#ifndef _LUAT_AUDIO_CODEC_H_
-#define _LUAT_AUDIO_CODEC_H_
-
-#define LUAT_CODEC_MODE_MASTER               0x00
-#define LUAT_CODEC_MODE_SLAVE                0x01
-
-#define LUAT_CODEC_PA_OFF                    0x00
-#define LUAT_CODEC_PA_ON                     0x01
-
-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;
-
-typedef struct luat_audio_codec_conf {
-    int i2c_id;
-    int samplerate;         //16k
-    int bits;               //16
-    int channels;           //1ch/2ch
-    int pa_pin;
-	uint8_t vol;
-	uint8_t pa_on_level;
-    uint32_t dummy_time_len;
-    uint32_t pa_delay_time;
-    const struct luat_audio_codec_opts* codec_opts;
-} luat_audio_codec_conf_t;
-
-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,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;
-
-
-extern const luat_audio_codec_opts_t codec_opts_es8311;
-
-
-#endif

+ 2 - 7
components/multimedia/luat_audio_es8311.c

@@ -1,16 +1,12 @@
 #include "luat_base.h"
 #include "luat_gpio.h"
 #include "luat_i2c.h"
-#include "luat_audio_codec.h"
+#include "luat_audio.h"
 #include "luat_timer.h"
 
-// #include "es8311.h"
-
 #define LUAT_LOG_TAG "es8311"
 #include "luat_log.h"
 
-#define I2C_REQ     400*1000
-
 #define ADC_VOLUME_GAIN 0xDF  //0xEF
 #define DADC_GAIN 0x1A        //0x17
 #define BCLK_DIV  0x13        //0x07
@@ -350,7 +346,6 @@ static int es8311_codec_init(luat_audio_codec_conf_t* conf){
         luat_gpio_mode(conf->pa_pin, Luat_GPIO_OUTPUT, Luat_GPIO_DEFAULT, !conf->pa_on_level);
         luat_gpio_set(conf->pa_pin, !conf->pa_on_level);
     }
-    // luat_i2c_setup(0, I2C_REQ);
     temp1 = es8311_read_reg(conf,ES8311_CHD1_REGFD);
     temp2 = es8311_read_reg(conf,ES8311_CHD2_REGFE);
     temp3 = es8311_read_reg(conf,ES8311_CHVER_REGFF);
@@ -417,7 +412,7 @@ static int es8311_codec_stop(luat_audio_codec_conf_t* conf){
     return 0;
 }
 
-const luat_audio_codec_opts_t codec_opts_es8311 = {
+luat_audio_codec_opts_t codec_opts_es8311 = {
     .name = "es8311",
     .init = es8311_codec_init,
     .deinit = es8311_codec_deinit,

+ 54 - 0
luat/include/luat_audio.h

@@ -25,6 +25,56 @@
 #ifndef __BSP_COMMON_H__
 #include "c_common.h"
 #endif
+
+#define LUAT_CODEC_MODE_MASTER               0x00
+#define LUAT_CODEC_MODE_SLAVE                0x01
+
+// #define LUAT_CODEC_PA_OFF                    0x00
+// #define LUAT_CODEC_PA_ON                     0x01
+
+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;
+
+typedef struct luat_audio_codec_conf {
+    int i2c_id;
+    int i2s_id;
+    int samplerate;         //16k
+    int bits;               //16
+    int channels;           //1ch/2ch
+	uint8_t vol;
+    uint8_t pa_pin;
+	uint8_t pa_on_level;
+    uint32_t dummy_time_len;
+    uint32_t pa_delay_time;
+    const struct luat_audio_codec_opts* codec_opts;
+} luat_audio_codec_conf_t;
+
+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,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;
+
+typedef struct luat_audio_conf {
+    uint8_t multimedia_id;
+    uint8_t bus_type;
+    luat_audio_codec_conf_t codec_conf;
+} luat_audio_conf_t;
+
+extern luat_audio_codec_opts_t codec_opts_es8311;
+
 /**
  * @brief 播放指定数量的文件或者ROM数组(文件数据直接写成数组形式)
  *
@@ -136,4 +186,8 @@ uint16_t luat_audio_vol(uint8_t multimedia_id, uint16_t vol);
  * @param bus_type 见MULTIMEDIA_AUDIO_BUS,目前只有0=DAC 1=I2S 2=SOFT_DAC
  */
 void luat_audio_set_bus_type(uint8_t bus_type);
+
+luat_audio_conf_t *luat_audio_get_config(uint8_t multimedia_id);
+int luat_audio_set_config(uint8_t multimedia_id,luat_audio_conf_t * config);
+
 #endif