Просмотр исходного кода

update:改进一下socket.adapter,去除设置默认网卡功能,增加查找可联网的网卡功能

alienwalker 3 лет назад
Родитель
Сommit
c3e4664fdc
1 измененных файлов с 25 добавлено и 15 удалено
  1. 25 15
      components/network/adapter/luat_lib_socket.c

+ 25 - 15
components/network/adapter/luat_lib_socket.c

@@ -1328,30 +1328,40 @@ static int l_socket_set_ssl_log(lua_State *L)
 #endif
 
 /*
-查看网卡适配器的联网状态,设置默认网卡适配器
-@api socket.adapter(index, default)
-@int 需要查看的适配器序号,可以留空会查看默认网卡,如果指定网卡,只能是socket.ETH0(外置以太网),socket.LWIP_ETH(内置以太网),socket.LWIP_STA(内置WIFI的STA),socket.LWIP_AP(内置WIFI的AP),socket.LWIP_GP(内置蜂窝网络的GPRS),socket.USB(外置USB网卡)
-@int 需要设置的默认网卡适配器序号,一般情况下不需要设置,不需要填写
+查看网卡适配器的联网状态
+@api socket.adapter(index)
+@int 需要查看的适配器序号,可以留空会查看全部网卡,直到遇到IP READY的,如果指定网卡,只能是socket.ETH0(外置以太网),socket.LWIP_ETH(内置以太网),socket.LWIP_STA(内置WIFI的STA),socket.LWIP_AP(内置WIFI的AP),socket.LWIP_GP(内置蜂窝网络的GPRS),socket.USB(外置USB网卡)
 @return boolean 被查看的适配器是否IP READY,true表示已经准备好可以联网了,false暂时不可以联网
-@return int 默认使用的适配器序号,即socket.create时不指定网卡的情况下,默认使用的网卡
+@return int 最后一个被查看的适配器序号
 @usage
---查看默认网卡是否IP READY
-local isReady,default = socket.adapter()
+-- 查看全部网卡,直到找到一个是IP READY的
+local isReady,index = socket.adapter() --如果isReady为true,则index为IP READY的网卡适配器序号
 --查看外置以太网(比如W5500)是否IP READY
 local isReady,default = socket.adapter(socket.ETH0)
---设置外置以太网(比如W5500)为默认网卡
-local isReady,default = socket.adapter(nil, socket.ETH0)
 */
 static int l_socket_adapter(lua_State *L)
 {
-	int new_index = luaL_optinteger(L, 2, -1);
-	if (new_index > NW_ADAPTER_INDEX_LWIP_NONE &&  new_index < NW_ADAPTER_QTY)
+	int adapter_index = luaL_optinteger(L, 1, -1);
+	if (adapter_index > NW_ADAPTER_INDEX_LWIP_NONE &&  adapter_index < NW_ADAPTER_QTY)
 	{
-		network_register_set_default(new_index);
+		lua_pushboolean(L, network_check_ready(NULL, adapter_index));
+		lua_pushinteger(L, adapter_index);
 	}
-	int adapter_index = luaL_optinteger(L, 1, network_get_last_register_adapter());
-	lua_pushboolean(L, network_check_ready(NULL, adapter_index));
-	lua_pushinteger(L, network_get_last_register_adapter());
+	else
+	{
+		for(int i = NW_ADAPTER_INDEX_LWIP_GPRS; i < NW_ADAPTER_QTY; i++)
+		{
+			if (network_check_ready(NULL, i))
+			{
+				lua_pushboolean(L, 1);
+				lua_pushinteger(L, i);
+				return 2;
+			}
+		}
+		lua_pushboolean(L, 0);
+		lua_pushinteger(L, NW_ADAPTER_QTY - 1);
+	}
+
 	return 2;
 }