net_lwip2.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. struct udp_pcb *dns_udp;
  30. uint32_t socket_busy;
  31. uint32_t socket_connect;
  32. HANDLE dns_timer;//dhcp_fine_tmr,dhcp6_tmr
  33. uint8_t dns_adapter_index;
  34. uint8_t netif_network_ready[NW_ADAPTER_INDEX_LWIP_NETIF_QTY];
  35. // uint8_t common_timer_active;
  36. // uint8_t fast_sleep_enable;
  37. uint8_t next_socket_index;
  38. }net_lwip2_ctrl_struct;
  39. void net_lwip2_register_adapter(uint8_t adapter_index);
  40. void net_lwip2_init(uint8_t adapter_index);
  41. int net_lwip_check_all_ack(int socket_id);
  42. void net_lwip2_set_netif(uint8_t adapter_index, struct netif *netif);
  43. struct netif * net_lwip2_get_netif(uint8_t adapter_index);
  44. /*
  45. * 如果是需要使用静态IP,则需要先设置好IP,再设置linkup
  46. * 如果之前设置了静态IP,现在想用动态IP,需要先删掉静态IP,再linkup
  47. * 一旦linkup,如果没有使用静态IP,就会启动DHCP
  48. * 不能用过DHCP获取IP的网卡,必须先设置静态IP!!!!!!,比如GPRS
  49. */
  50. void net_lwip2_set_link_state(uint8_t adapter_index, uint8_t updown);
  51. #endif