#ifndef __ATCMD_LWIP_H__ #define __ATCMD_LWIP_H__ #include "main.h" #include #include "lwip/sockets.h" #include "lwip/api.h" #include "lwip/sys.h" #include "lwip/igmp.h" #include "lwip/inet.h" #include "lwip/tcp.h" #include "lwip/raw.h" #include "lwip/udp.h" #include "lwip/tcpip.h" #include "lwip/pbuf.h" #include "lwip/netdb.h" #include "lwip_netconf.h" #define _AT_TRANSPORT_MODE_ "ATP1" #define _AT_TRANSPORT_LOCAL_PORT_ "ATP2" #define _AT_TRANSPORT_REMOTE_IP_ "ATP3" #define _AT_TRANSPORT_REMOTE_PORT_ "ATP4" #define _AT_TRANSPORT_START_SERVER_ "ATP5" #define _AT_TRANSPORT_START_CLIENT_ "ATP6" #define _AT_TRANSPORT_SHOW_SETTING_ "ATP?" #define _AT_TRANSPORT_RECEIVE_DATA_ "ATR0" #define _AT_TRANSPORT_RECEIVE_PACKET_SIZE_ "ATR1" #define _AT_TRANSPORT_WRITE_DATA_ "ATRA" #define _AT_TRANSPORT_WRITE_PACKET_SIZE_ "ATRB" #define NODE_MODE_TCP 0 #define NODE_MODE_UDP 1 #define NODE_ROLE_SERVER 0 #define NODE_ROLE_CLIENT 1 #define NODE_ROLE_SEED 2 #define INVALID_SOCKET_ID (-1) //parameters #ifndef NET_IF_NUM #define NET_IF_NUM 2 #endif #define ATCMD_LWIP_TASK_PRIORITY (tskIDLE_PRIORITY + 1) #if ATCMD_VER == ATVER_2 #define SERVER "127.0.0.1" #define NUM_NS (MEMP_NUM_NETCONN) //maximum number of node and seed, same as NUM_SOCKETS #define ETH_MAX_MTU 1500 #define INVALID_CON_ID (-1) #define RECV_SELECT_TIMEOUT_SEC (0) #define RECV_SELECT_TIMEOUT_USEC (20000) //20ms typedef struct ns { int con_id; int sockfd; s8_t role; int protocol; u32_t addr; u16_t port; u32_t local_addr; u16_t local_port; xTaskHandle handletask; struct ns* next; struct ns* nextseed; } node; extern xTaskHandle atcmd_lwip_tt_task; extern xSemaphoreHandle atcmd_lwip_tt_sema; extern volatile int atcmd_lwip_tt_datasize; extern volatile int atcmd_lwip_tt_lasttickcnt; #define ATCMD_LWIP_TT_MAX_DELAY_TIME_MS (20) //transparent transmission interval extern int atcmd_lwip_is_tt_mode(void); extern void atcmd_lwip_set_tt_mode(int enable); int atcmd_lwip_send_data(node *curnode, u8 *data, u16 data_sz, struct sockaddr_in cli_addr); int atcmd_lwip_receive_data(node *curnode, u8 *buffer, u16 buffer_size, int *recv_size, u8_t *udp_clientaddr, u16_t *udp_clientport); node* create_node(int mode, s8_t role); void init_node_pool(void); void delete_node(node *n); int hang_node(node* insert_node); int hang_seednode(node* main_node ,node* insert_node); node *seek_node(int con_id); node *tryget_node(int n); #endif #endif //#ifndef __ATCMD_LWIP_H__