Explorar o código

add: 添加wlan.powerSave函数,支持设置省电模式 https://gitee.com/openLuat/LuatOS/issues/I6Q8IK

Wendal Chen %!s(int64=2) %!d(string=hai) anos
pai
achega
60b5a48e7c
Modificáronse 1 ficheiros con 34 adicións e 1 borrados
  1. 34 1
      components/wlan/luat_lib_wlan.c

+ 34 - 1
components/wlan/luat_lib_wlan.c

@@ -7,6 +7,8 @@
 @date    2022.09.30
 @demo wlan
 @tag LUAT_USE_WLAN
+@usage
+--提醒, 对于仅支持wifiscan的模块, 仅 init/scan/scanResult 函数是可用的
 */
 
 #include "luat_base.h"
@@ -353,6 +355,27 @@ static int l_wlan_get_info(lua_State *L) {
     return 1;
 }
 
+/*
+读取或设置省电模式
+@api wlan.powerSave(mode)
+@int 省电模式,可选, 设置就传支持, 例如wlan.PS_NONE
+@return int 当前省电模式/设置后的省电模式
+@usage
+-- 请查阅常量表  PS_NONE/PS_MIN_MODEM/PS_MAX_MODEM
+log.info("wlan", "PS", wlan.powerSave(wlan.PS_NONE))
+-- 本API于 2023.03.31 新增
+*/
+static int l_wlan_powerSave(lua_State *L) {
+    int mode = 0;
+    if (lua_isinteger(L, 1)) {
+        mode = luaL_checkinteger(L, 1);
+        luat_wlan_set_ps(mode);
+    }
+    mode = luat_wlan_get_ps();
+    lua_pushinteger(L, mode);
+    return 1;
+}
+
 #include "rotable2.h"
 static const rotable_Reg_t reg_wlan[] =
 {
@@ -373,9 +396,10 @@ static const rotable_Reg_t reg_wlan[] =
     { "getMac",              ROREG_FUNC(l_wlan_get_mac)},
     { "setMac",              ROREG_FUNC(l_wlan_set_mac)},
 
+    { "powerSave",           ROREG_FUNC(l_wlan_powerSave)},
+
     // AP相关
     { "createAP",            ROREG_FUNC(l_wlan_ap_start)},
-#endif
     // wifi模式
     //@const NONE WLAN模式,停用
     {"NONE",                ROREG_INT(LUAT_WLAN_MODE_NULL)},
@@ -397,6 +421,15 @@ static const rotable_Reg_t reg_wlan[] =
     {"ESPTOUCH_AIRKISS",    ROREG_INT(LUAT_SC_TYPE_ESPTOUCH_AIRKISS)},
     //@const ESPTOUCH_V2 esptouch配网, V2, 未测试
     {"ESPTOUCH_V2",         ROREG_INT(LUAT_SC_TYPE_ESPTOUCH_V2)},
+
+    //@const PS_NONE 关闭省电模式
+    {"PS_NONE",             ROREG_INT(0)},
+    //@const PS_MIN_MODEM 最小Modem省电模式
+    {"PS_MIN_MODEM",        ROREG_INT(1)},
+    //@const PS_MAX_MODEM 最大Modem省电模式
+    {"PS_MAX_MODEM",        ROREG_INT(2)},
+
+#endif
 	{ NULL,                 ROREG_INT(0)}
 };