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

update: websocket,完善netdrv事件

Wendal Chen 6 месяцев назад
Родитель
Сommit
044f4b4270

+ 2 - 2
components/network/netdrv/src/luat_netdrv_event.c

@@ -52,8 +52,8 @@ __NETDRV_CODE_IN_RAM__ void luat_netdrv_fire_socket_event_netctrl(uint32_t event
     netdrv_tcp_evt_t evt = {0};
     netdrv_tcp_evt_t evt = {0};
     evt.id = adapter_id;
     evt.id = adapter_id;
     evt.flags = event_id;
     evt.flags = event_id;
-    if (proto == 0) {
-        proto = ctrl->is_tcp ? 1 : 2;
+    if (proto == 0 && event_id != (0x81)) {
+        evt.proto = ctrl->is_tcp ? 1 : 2;
     }
     }
     else {
     else {
         evt.proto = proto;
         evt.proto = proto;

+ 8 - 0
components/network/websocket/luat_lib_websocket.c

@@ -50,6 +50,11 @@ static const char *error_string[WEBSOCKET_MSG_ERROR_MAX - WEBSOCKET_MSG_ERROR_CO
 		"other"
 		"other"
 };
 };
 
 
+#ifdef LUAT_USE_NETDRV
+#include "luat_netdrv.h"
+#include "luat_netdrv_event.h"
+#endif
+
 static luat_websocket_ctrl_t *get_websocket_ctrl(lua_State *L)
 static luat_websocket_ctrl_t *get_websocket_ctrl(lua_State *L)
 {
 {
 	if (luaL_testudata(L, 1, LUAT_WEBSOCKET_CTRL_TYPE))
 	if (luaL_testudata(L, 1, LUAT_WEBSOCKET_CTRL_TYPE))
@@ -174,6 +179,9 @@ int l_websocket_callback(lua_State *L, void *ptr)
 				lua_call(L, 4, 0);
 				lua_call(L, 4, 0);
 			}
 			}
 		}
 		}
+		#ifdef LUAT_USE_NETDRV
+		luat_netdrv_fire_socket_event_netctrl(EV_NW_SOCKET_ERROR, websocket_ctrl->netc, 5);
+		#endif
 		break;
 		break;
 	}
 	}
 	default:
 	default:

+ 9 - 2
components/network/websocket/luat_websocket.c

@@ -29,6 +29,10 @@ static void print_pkg(const char *tag, char *buff, luat_websocket_pkg_t *pkg)
 #define print_pkg(...)
 #define print_pkg(...)
 #endif
 #endif
 
 
+#ifdef LUAT_USE_NETDRV
+extern void luat_netdrv_fire_socket_event_netctrl(uint32_t event_id, network_ctrl_t* ctrl, uint8_t proto);
+#endif
+
 static int32_t luat_websocket_callback(void *data, void *param);
 static int32_t luat_websocket_callback(void *data, void *param);
 
 
 #ifdef __LUATOS__
 #ifdef __LUATOS__
@@ -110,7 +114,7 @@ int luat_websocket_send_packet(void *socket_info, const void *buf, unsigned int
 	int ret = network_tx(websocket_ctrl->netc, buf, count, 0, NULL, 0, &tx_len, 0);
 	int ret = network_tx(websocket_ctrl->netc, buf, count, 0, NULL, 0, &tx_len, 0);
 	if (ret < 0)
 	if (ret < 0)
 	{
 	{
-		LLOGI("network_tx %d , close socket", ret);
+		LLOGI("send pkg err %d , close socket", ret);
 		luat_websocket_msg_cb(websocket_ctrl, WEBSOCKET_MSG_ERROR_TX, 0);
 		luat_websocket_msg_cb(websocket_ctrl, WEBSOCKET_MSG_ERROR_TX, 0);
 		luat_websocket_close_socket(websocket_ctrl);
 		luat_websocket_close_socket(websocket_ctrl);
 		return 0;
 		return 0;
@@ -588,7 +592,7 @@ int luat_websocket_read_packet(luat_websocket_ctrl_t *websocket_ctrl)
 		}
 		}
 	}
 	}
 	if (WEBSOCKET_RECV_BUF_LEN_MAX + 8 < websocket_ctrl->buffer_offset) {
 	if (WEBSOCKET_RECV_BUF_LEN_MAX + 8 < websocket_ctrl->buffer_offset) {
-		LLOGD("pkg maybe too large");
+		LLOGD("pkg maybe too large %d", websocket_ctrl->buffer_offset);
 		return -1;
 		return -1;
 	}
 	}
 	return 0;
 	return 0;
@@ -648,6 +652,7 @@ static int32_t luat_websocket_callback(void *data, void *param)
 	if (event->Param1)
 	if (event->Param1)
 	{
 	{
 		LLOGW("websocket_callback param1 %d, closing socket", event->Param1);
 		LLOGW("websocket_callback param1 %d, closing socket", event->Param1);
+		luat_websocket_msg_cb(websocket_ctrl, WEBSOCKET_MSG_ERROR_CONN, 0);
 		luat_websocket_close_socket(websocket_ctrl);
 		luat_websocket_close_socket(websocket_ctrl);
 		return 0;
 		return 0;
 	}
 	}
@@ -655,6 +660,7 @@ static int32_t luat_websocket_callback(void *data, void *param)
 	if (ret < 0)
 	if (ret < 0)
 	{
 	{
 		LLOGW("network_wait_event ret %d, closing socket", ret);
 		LLOGW("network_wait_event ret %d, closing socket", ret);
+		luat_websocket_msg_cb(websocket_ctrl, WEBSOCKET_MSG_ERROR_CONN, 0);
 		luat_websocket_close_socket(websocket_ctrl);
 		luat_websocket_close_socket(websocket_ctrl);
 		return -1;
 		return -1;
 	}
 	}
@@ -672,6 +678,7 @@ int luat_websocket_connect(luat_websocket_ctrl_t *websocket_ctrl)
 	LLOGD("network_connect ret %d", ret);
 	LLOGD("network_connect ret %d", ret);
 	if (ret < 0)
 	if (ret < 0)
 	{
 	{
+		luat_websocket_msg_cb(websocket_ctrl, WEBSOCKET_MSG_ERROR_CONN, 0);
 		network_close(websocket_ctrl->netc, 0);
 		network_close(websocket_ctrl->netc, 0);
 		return -1;
 		return -1;
 	}
 	}