فهرست منبع

add: airlink,添加一个全局暂停开关 airlink.pause(1) 函数

Wendal Chen 10 ماه پیش
والد
کامیت
6209b85bad

+ 7 - 0
components/airlink/binding/luat_lib_airlink.c

@@ -17,6 +17,7 @@
 
 extern airlink_statistic_t g_airlink_statistic;
 extern uint32_t g_airlink_spi_task_mode;
+extern uint32_t g_airlink_pause;
 
 static int l_airlink_init(lua_State *L) {
     LLOGD("初始化AirLink");
@@ -289,6 +290,11 @@ static int l_airlink_debug(lua_State *L) {
     return 0;
 }
 
+static int l_airlink_pause(lua_State *L) {
+    g_airlink_pause = luaL_checkinteger(L, 1);
+    return 0;
+}
+
 #include "rotable2.h"
 static const rotable_Reg_t reg_airlink[] =
 {
@@ -302,6 +308,7 @@ static const rotable_Reg_t reg_airlink[] =
     { "cmd",           ROREG_FUNC(l_airlink_cmd)},
     { "statistics",    ROREG_FUNC(l_airlink_statistics )},
     { "slave_reboot",  ROREG_FUNC(l_airlink_slave_reboot )},
+    { "pause",         ROREG_FUNC(l_airlink_pause)},
 
     // 测试用的fota指令
     { "sfota",         ROREG_FUNC(l_airlink_sfota )},

+ 1 - 0
components/airlink/src/luat_airlink.c

@@ -33,6 +33,7 @@ airlink_statistic_t g_airlink_statistic;
 uint32_t g_airlink_spi_task_mode;
 uint64_t g_airlink_last_cmd_timestamp;
 uint32_t g_airlink_debug;
+uint32_t g_airlink_pause;
 
 int luat_airlink_init(void)
 {

+ 7 - 0
components/airlink/src/task/luat_airlink_spi_master_task.c

@@ -33,6 +33,7 @@
 #endif
 
 extern airlink_statistic_t g_airlink_statistic;
+extern uint32_t g_airlink_pause;
 
 // static uint8_t start;
 // static uint8_t slave_rdy;
@@ -218,6 +219,12 @@ __USER_FUNC_IN_RAM__ void airlink_wait_and_prepare_data(uint8_t *txbuff)
 {
     luat_event_t event = {0};
     airlink_queue_item_t item = {0};
+    if (g_airlink_pause) {
+        while (g_airlink_pause) {
+            LLOGD("airlink spi 交互暂停中,允许主控休眠, 监测周期1000ms");
+            luat_rtos_task_sleep(1000);
+        }
+    }
     // 等到消息
     if (link != NULL && (link->flags.queue_cmd != 0 || link->flags.queue_cmd != 0))
     {