luat_netdrv_event.h 1.7 KB

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