Browse Source

update:更新api

Dozingfiretruck 2 years ago
parent
commit
951bcdaed3
2 changed files with 18 additions and 16 deletions
  1. 17 16
      luat/include/luat_i2s.h
  2. 1 0
      luat/modules/luat_lib_i2s.c

+ 17 - 16
luat/include/luat_i2s.h

@@ -32,19 +32,21 @@ enum {
     LUAT_I2S_STATE_RUNING,      // i2s传输状态
 };
 
-typedef struct luat_i2s_conf{
-    uint8_t id;                 // i2s id
-    uint8_t mode;               // i2s模式
-    uint8_t standard;           // i2s数据标准
-    uint8_t channel_format;     // i2s声道格式
-    uint8_t data_bits;          // i2s有效数据位数
-    uint8_t channel_bits;       // i2s通道数据位数
-    volatile uint8_t state;     // i2s状态
-    uint8_t is_full_duplex;		// 是否全双工
-    uint32_t sample_rate;       // i2s采样率  
-    uint32_t cb_rx_len;         // 接收触发回调数据长度
+typedef int (*luat_i2s_event_callback_t)(uint8_t id ,luat_i2s_event_t event, void *param); //  i2s回调函数
 
-    void *userdata;             // 用户数据
+typedef struct luat_i2s_conf{
+    uint8_t id;                                             // i2s id
+    uint8_t mode;                                           // i2s模式
+    uint8_t standard;                                       // i2s数据标准
+    uint8_t channel_format;                                 // i2s声道格式
+    uint8_t data_bits;                                      // i2s有效数据位数
+    uint8_t channel_bits;                                   // i2s通道数据位数
+    volatile uint8_t state;                                 // i2s状态
+    uint8_t is_full_duplex;		                            // 是否全双工
+    uint32_t sample_rate;                                   // i2s采样率  
+    uint32_t cb_rx_len;                                     // 接收触发回调数据长度
+    luat_i2s_event_callback_t* luat_i2s_event_callback;     // i2s回调函数
+    void *userdata;                                         // 用户数据
 }luat_i2s_conf_t;
 
 typedef enum {
@@ -59,10 +61,9 @@ typedef enum {
 // 初始化
 int luat_i2s_setup(luat_i2s_conf_t *conf);      // 初始化i2s
 // 传输(异步接口)
-int luat_i2s_event_cb(uint8_t id ,luat_i2s_event_t event, void *param); //  i2s回调函数 (替换掉原 luat_i2s_rx_cb)
-int luat_i2s_send(uint8_t id, uint8_t* buff, size_t len);               //  i2s发送数据
-int luat_i2s_recv(uint8_t id, uint8_t* buff, size_t len);               //  i2s接收数据
-int luat_i2s_transfer(uint8_t id, uint8_t* txbuff, size_t len);         //  i2s传输数据(全双工)
+int luat_i2s_send(uint8_t id, uint8_t* buff, size_t len);                                   //  i2s发送数据
+int luat_i2s_recv(uint8_t id, uint8_t* buff, size_t len);                                   //  i2s接收数据
+int luat_i2s_transfer(uint8_t id, uint8_t* txbuff, size_t len);                             //  i2s传输数据(全双工)
 int luat_i2s_transfer_loop(uint8_t id, uint8_t* buff, uint32_t one_truck_byte_len, uint32_t total_trunk_cnt, uint8_t need_callback);   //  i2s循环传输数据(全双工)
 // 控制
 int luat_i2s_pause(uint8_t id);                 // i2s传输暂停

+ 1 - 0
luat/modules/luat_lib_i2s.c

@@ -108,6 +108,7 @@ static int l_i2s_setup(lua_State *L) {
     conf.standard = luaL_optinteger(L, 6, LUAT_I2S_MODE_I2S);
     conf.channel_bits = luaL_optinteger(L, 7, LUAT_I2S_BITS_16);
     int ret = luat_i2s_setup(&conf);
+    conf.luat_i2s_event_callback = luat_i2s_event_cb;
     lua_pushboolean(L, ret == 0 ? 1 : 0);
     lua_pushinteger(L, ret);
     return 2;