net_lwip2.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef __NET_LWIP_H__
  2. #define __NET_LWIP_H__
  3. #define MAX_SOCK_NUM 8
  4. #include "luat_base.h"
  5. #include "dns_def.h"
  6. #include "luat_network_adapter.h"
  7. typedef struct
  8. {
  9. llist_head node;
  10. uint64_t tag; //考虑到socket复用的问题,必须有tag来做比对
  11. luat_ip_addr_t ip;
  12. uint8_t *data;
  13. uint32_t read_pos;
  14. uint16_t len;
  15. uint16_t port;
  16. uint8_t is_sending;
  17. uint8_t is_need_ack;
  18. }socket_data_t;
  19. typedef struct
  20. {
  21. uint64_t socket_tag;
  22. dns_client_t dns_client;
  23. socket_ctrl_t socket[MAX_SOCK_NUM];
  24. ip_addr_t ec618_ipv6;
  25. struct netif *lwip_netif[NW_ADAPTER_INDEX_LWIP_NETIF_QTY];
  26. CBFuncEx_t socket_cb;
  27. void *user_data;
  28. void *task_handle;
  29. uint32_t socket_busy;
  30. uint32_t socket_connect;
  31. uint8_t netif_network_ready[NW_ADAPTER_INDEX_LWIP_NETIF_QTY];
  32. // DNS相关
  33. struct udp_pcb *dns_udp[NW_ADAPTER_INDEX_LWIP_NETIF_QTY];
  34. HANDLE dns_timer[NW_ADAPTER_INDEX_LWIP_NETIF_QTY];
  35. uint8_t next_socket_index;
  36. }net_lwip2_ctrl_struct;
  37. void net_lwip2_register_adapter(uint8_t adapter_index);
  38. void net_lwip2_init(uint8_t adapter_index);
  39. int net_lwip_check_all_ack(int socket_id);
  40. void net_lwip2_set_netif(uint8_t adapter_index, struct netif *netif);
  41. struct netif * net_lwip2_get_netif(uint8_t adapter_index);
  42. /*
  43. * 如果是需要使用静态IP,则需要先设置好IP,再设置linkup
  44. * 如果之前设置了静态IP,现在想用动态IP,需要先删掉静态IP,再linkup
  45. * 一旦linkup,如果没有使用静态IP,就会启动DHCP
  46. * 不能用过DHCP获取IP的网卡,必须先设置静态IP!!!!!!,比如GPRS
  47. */
  48. void net_lwip2_set_link_state(uint8_t adapter_index, uint8_t updown);
  49. #endif