| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #ifndef LUAT_NETDRV_EVENT_H
- #define LUAT_NETDRV_EVENT_H
- #include "lwip/pbuf.h"
- #include "lwip/ip_addr.h"
- #include "luat_ulwip.h"
- // 事件, 用户可订阅
- enum {
- LUAT_NETDRV_EVENT_TCP = 0x10, // TCP连接事件
- LUAT_NETDRV_EVENT_UDP = 0x20, // UDP连接事件
- LUAT_NETDRV_EVENT_DNS = 0x30, // DNS解析事件
- LUAT_NETDRV_EVENT_LINK = 0x40, // 网卡连接状态变化事件
- };
- typedef struct netdrv_tcp_evt {
- uint8_t id; // 网络适配器ID
- uint8_t flags; // 事件标志, 标识
- uint8_t proto; // 协议类型, 1=TCP, 2=UDP, 3=HTTP, 4=MQTT, 5=WEBSOCKET, 6=FTP
- uint8_t re; // 保留字段, 目前未使用
- ip_addr_t local_ip; // 本地IP地址
- ip_addr_t remote_ip; // 远程IP地址
- ip_addr_t online_ip; // 连接上的IP地址, DNS事件无效
- uint16_t local_port; // 本地端口
- uint16_t remote_port; // 远程端口
- char domain_name[256]; // 解析的域名, DNS事件有效
- void* userdata; // 用户数据, 可用于回调时传递额外信息
- }netdrv_tcp_evt_t;
- typedef void (*luat_netdrv_tcp_evt_cb)(netdrv_tcp_evt_t* evt, void* userdata);
- typedef struct netdrv_tcpevt_reg {
- uint8_t id; // 网络适配器ID
- uint8_t flags; // 事件标志, 标识
- luat_netdrv_tcp_evt_cb cb; // TCP事件回调函数
- void* userdata; // 用户数据, 可用于回调时传递额外信息
- }netdrv_tcpevt_reg_t;
- void luat_netdrv_register_socket_event_cb(uint8_t id, uint32_t flags, luat_netdrv_tcp_evt_cb cb, void* userdata);
- void luat_netdrv_fire_socket_event_netctrl(uint32_t event_id, network_ctrl_t* ctrl, uint8_t proto);
- void luat_netdrv_send_ip_event(luat_netdrv_t* drv, uint8_t ready);
- void luat_netdrv_set_link_updown(luat_netdrv_t* drv, uint8_t updown);
- #endif
|