TuyaOS
lwipopts.h
浏览该文件的文档.
1
8#ifndef LWIP_HDR_LWIPOPTS_H
9#define LWIP_HDR_LWIPOPTS_H
10
11//TUYA 平台宏
12#include "tuya_iot_config.h"
13
14
15/*
16 ----------------------------------------------
17 ---------- TUYA定制性能优化 options ----------
18 ----------------------------------------------
19*/
20//TCP头申请不到PBUF_RAM空间后,使用PBUF_POOL空间。打开该宏可能导致数据包丢包(一般驱动适配层用POOL)
21//#define LWIP_TCP_HEAD_ALLOC_REUSE_POLL 0
22
23/*
24tuya 线程的优先级功能,在应用发送消息后,会把当前应用的优先级升到最高,收到消息后再恢复到
25正常,用于加快应用速度。防止广播包过多的时候,TCPIP线程一直处理广播,应用层消息得不到处理。
26
27比如:涂鸦MCU仿真助手开开机的时候会发很多命令,会导致“__mq_ctrl_task”执行时间不足,recv得不
28到及时调度,导致发送失败。此时可以开启次功能,解决次问题,或在“sf_obj_dp_report_async”中加
29入“tuya_hal_system_sleep(100)”,减慢MCU仿真助手的调度频率,让mqtt线程可以及时调度。
30*/
31//#define LWIP_TUYA_APP_TCPIP_THREAD_SWITCH 1
32
33//#define IPEF_TEST_OPTIMIZE 0
34
35/*
36 ----------------------------------------------
37 --------------- 连接资源 options -------------
38 ----------------------------------------------
39*/
40//LWIP内核UDP个数
41//#define MEMP_NUM_UDP_PCB 6
42//LWIP内核已完成连接的活跃TCP个数
43//#define MEMP_NUM_TCP_PCB 10
44//LWIP内核处于listen状态的TCP个数
45//#define MEMP_NUM_TCP_PCB_LISTEN 5
46//NETCONN的个数,位于socket下一层
47//#define MEMP_NUM_NETCONN (MEMP_NUM_UDP_PCB+MEMP_NUM_TCP_PCB+MEMP_NUM_TCP_PCB_LISTEN)
48
49
50/*
51 ----------------------------------------------
52 ------------- 数据缓存资源 options -----------
53 ----------------------------------------------
54*/
55//数据包缓存大小,如果发送的数据较多,且发送速度较大,需要修改此值
56//#if IPEF_TEST_OPTIMIZE
57//#define MEM_SIZE (64*512)
58//#else
59//#define MEM_SIZE (48*512)
60//#endif
61
62
63//PBUF数据的缓存个数,所有数据包共用,如果发送的数据较多,且发送速度较大,需要修改此值
64//#define MEMP_NUM_PBUF 100
65
66//TCP发送缓存队列中TCP分配的个数
67//#define MEMP_NUM_TCP_SEG 20
68
69//数据包分片重组缓存个数
70//#define IP_REASS_MAX_PBUFS 10
71
72
73//POOL资源的个数,一般用在底层驱动收包
74//#define PBUF_POOL_SIZE (2*IP_REASS_MAX_PBUFS)
75//单个POOL池子的大小
76//#define PBUF_POOL_BUFSIZE 500
77//#define PBUF_LINK_ENCAPSULATION_HLEN 400
78
79//TCP发送缓存,单位字节
80//#define TCP_SND_BUF (5*TCP_MSS)
81
82//TCP发送缓存,单位个
83//#define TCP_SND_QUEUELEN (4*TCP_SND_BUF/TCP_MSS)
84
85//NETCON层接收数据包的缓存个数(UDP使用中,如果对端发送快于本地接收,这个缓存小会丢掉)
86//#define MEMP_NUM_NETBUF 8
87
88
89/*
90 ----------------------------------------------
91 ---------- 操作系统调度资源 options ----------
92 ----------------------------------------------
93*/
94//如果如果发送数据较多较快,需要加大以下的邮箱个数
95//TCPIP邮箱的深度
96//#define TCPIP_MBOX_SIZE 6
97//UDP接收邮箱深度
98//#define DEFAULT_UDP_RECVMBOX_SIZE 6
99//TCP接收邮箱深度
100//#define DEFAULT_TCP_RECVMBOX_SIZE 6
101//RAW接收邮箱深度
102//#define DEFAULT_RAW_RECVMBOX_SIZE 6
103//TCP accept邮箱深度
104//#define DEFAULT_ACCEPTMBOX_SIZE 6
105
106//LWIP定时器超时资源个数
107//#define MEMP_NUM_SYS_TIMEOUT 10
108
109
110
111/*
112 ----------------------------------------------
113 ------- TUYA固定业务(不需修改)options ------
114 ----------------------------------------------
115*/
116//TCPIP线程名字
117#define TCPIP_THREAD_NAME "TUYA_TCPIP"
118//是否给TCPIP线程加锁
119//#define LWIP_TCPIP_CORE_LOCKING 0
120//TCPIP线程是否支持超时
121#define LWIP_TCPIP_TIMEOUT 1
122
123//随机数生成,用于随机化TCP/UDP的端口号,保证每次开机后的端口号都不一样
124#define LWIP_RAND() tkl_system_get_random(0xFFFFFFFF)
125#define LWIP_SRAND()
126
127//其他线程大小,不需要关心
128#define DEFAULT_THREAD_STACKSIZE 500
129
130
131/* ---------- MTU options ---------- */
132#define LWIP_TUYA_MTU 1500
133
134/* ---------- TCP options ---------- */
135#define LWIP_TCP 1
136
137//是否支持KEEPALIVE保活
138#define LWIP_TCP_KEEPALIVE 1
139//发送超时
140//#define LWIP_SO_SNDTIMEO 1
141//接收超时
142//#define LWIP_SO_RCVTIMEO 1
143//TCP最大分片个数
144#define TCP_MSS (LWIP_TUYA_MTU - 40)
145//TCP窗口大小
146#define TCP_WND (5*TCP_MSS)
147
148/* ---------- EAPOL ---------------- */
149//#define LWIP_EAPOL_SUPPORT 1
150
151/* ---------- UDP options ---------- */
152#define LWIP_UDP 1
153
154/* ---------- ICMP options ---------- */
155#define LWIP_ICMP 1
156
157/* ---------- ARP options ----------- */
158#define LWIP_ARP 1
159
160/* ---------- DHCP options ---------- */
161#define LWIP_DHCP 1
162//tuya 这里由底层文件上提到该头文件,改为用户可配置
163#define DHCP_COARSE_TIMER_SECS 60
164//tuya 增加DHCP请求的seconds_elapsed,用于标记客户端首次向服务器发出请求后的时间,按照协议标准需要这么做(从rtk上移植)
165#define LWIP_DHCP_SECONDS_ELAPSE 1
166//DHCP请求transaction identifier 随机化
167#define DHCP_CREATE_RAND_XID 1
168
169
170/* ---------- DNS options ---------- */
171#define LWIP_DNS 1
172
173/* ---------- SO_REUSE options --------- */
174#define SO_REUSE 1
175
176/* Support Multicast */
177#define LWIP_IGMP 1
178
179/* ---------RAW option--------- */
180#define LWIP_RAW 1
181
182/* ---------IPv6 option--------- */
183//#define LWIP_IPV6 0
184
185/* ---------Socket options ---------*/
186#define LWIP_SOCKET 1
187//tuya 立即发送RST断开连接
188//#define LWIP_SO_LINGER 1
189//tuya 是否不等待unsend和unacked,直接发送RST关闭连接,需要配合socket so_linger机制
190//#define LWIP_TUYA_SO_LINGER_RST 1
191//使用LWIP提供的errno值
192//#define LWIP_PROVIDE_ERRNO 1
193//socket号从1开始
194#define LWIP_SOCKET_OFFSET 1
195
196/* ---------Enable Netconn API--------- */
197#define LWIP_NETCONN 1
198
199/* ------initial port before dhcp------ */
200#define LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS 1
201
202/*
203 ----------------------------------------------
204 ----------------- 调试 options ---------------
205 ----------------------------------------------
206*/
207//tuya TUYA底层驱动数据包wireshark打印
208#define LWIP_TUYA_PACKET_PRINT 0
209
210
211//LWIP_DEBUG同时管理了LWIP_NOASSERT(没有断言)和LWIP_STATS,注释掉“#define LWIP_DEBUG”可以节约20K空间
212//#define LWIP_DEBUG 0
213// Debug Options
214#define NETIF_DEBUG LWIP_DBG_OFF
215#define PBUF_DEBUG LWIP_DBG_OFF
216#define API_LIB_DEBUG LWIP_DBG_OFF
217#define API_MSG_DEBUG LWIP_DBG_OFF
218#define SOCKETS_DEBUG LWIP_DBG_OFF
219#define ICMP_DEBUG LWIP_DBG_OFF
220#define IGMP_DEBUG LWIP_DBG_OFF
221#define INET_DEBUG LWIP_DBG_OFF
222#define IP_DEBUG LWIP_DBG_OFF
223#define IP_REASS_DEBUG LWIP_DBG_OFF
224#define RAW_DEBUG LWIP_DBG_OFF
225#define MEM_DEBUG LWIP_DBG_OFF
226#define MEMP_DEBUG LWIP_DBG_OFF
227#define SYS_DEBUG LWIP_DBG_OFF
228#define TIMERS_DEBUG LWIP_DBG_OFF
229#define TCP_DEBUG LWIP_DBG_OFF
230#define TCP_INPUT_DEBUG LWIP_DBG_OFF
231#define TCP_FR_DEBUG LWIP_DBG_OFF
232#define TCP_RTO_DEBUG LWIP_DBG_OFF
233#define TCP_CWND_DEBUG LWIP_DBG_OFF
234#define TCP_WND_DEBUG LWIP_DBG_OFF
235#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
236#define TCP_RST_DEBUG LWIP_DBG_OFF
237#define TCP_QLEN_DEBUG LWIP_DBG_OFF
238#define UDP_DEBUG LWIP_DBG_OFF
239#define TCPIP_DEBUG LWIP_DBG_OFF
240#define SLIP_DEBUG LWIP_DBG_OFF
241#define DHCP_DEBUG LWIP_DBG_OFF
242#define AUTOIP_DEBUG LWIP_DBG_OFF
243#define DNS_DEBUG LWIP_DBG_OFF
244#define IP6_DEBUG LWIP_DBG_OFF
245
246#define ETHARP_DEBUG LWIP_DBG_OFF
247#define UDP_LPC_EMAC LWIP_DBG_OFF
248#define ETHEAPOL_DEBUG LWIP_DBG_ON
249
250
251#ifdef LWIP_DEBUG
252#define MEMP_OVERFLOW_CHECK 1
253#define MEMP_SANITY_CHECK 1
254#define LWIP_DBG_TYPES_ON LWIP_DBG_ON
255#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL
256#else
257//tuya 8720cf如果需要用到断言的话,需要去掉"cc.h"中的"#define LWIP_PLATFORM_ASSERT(x) //do { if(!(x)) while(1); } while(0)"
258#define LWIP_NOASSERT 0
259#define LWIP_STATS 0
260#endif
261
262//用于TUYA平台导入测试计数,用于监控状态
263#if LWIP_STATS
264//TCPIP线程统计计数需要用更大的线程
265#define TCPIP_THREAD_STACKSIZE (4096*2)
266
267#define LINK_STATS 1
268#define ETHARP_STATS 1
269#define IP_STATS 1
270#define IPFRAG_STATS 1
271#define ICMP_STATS 1
272#define IGMP_STATS 1
273#define UDP_STATS 1
274#define TCP_STATS 1
275#define MEM_STATS 1
276#define MEMP_STATS 1
277#define SYS_STATS 1
278#define LWIP_STATS_DISPLAY 1
279#define IP6_STATS 1
280#define ICMP6_STATS 1
281#define IP6_FRAG_STATS 1
282#define MLD6_STATS 1
283#define ND6_STATS 1
284#define MIB2_STATS 1
285#define MIB2_STATS 1
286
287//TUYA网口层监控函数,需要在驱动层适配
288#define TUYA_ETHERNETIF_STATS 1
289#endif
290
291
292/*
293 ----------------------------------------------
294 --------------- LWIP 内部头文件 --------------
295 ----------------------------------------------
296*/
297#include "lwip/init.h"
298
299
300/*
301 ----------------------------------------------
302 -------------- 原厂适配 options --------------
303 ----------------------------------------------
304*/
305//TCPIP线程的大小
306//#define TCPIP_THREAD_STACKSIZE (1024*4)
307//TCPIP线程的优先级,此处的“11”来源于freertos的configMAX_PRIORITIES,由于SDK不能包含操作系统,此处用数值代替
308//#define TCPIP_THREAD_PRIO (11 - 2)
309
310//DHCP CLIENT线程的大小
311//#define DHCPC_THREAD_STACKSIZE (1024*2)
312
313//DHCP CLIENT线程优先级
314//#define DHCPC_THREAD_PRIO 5
315
316//使用信号量代替锁
317#define LWIP_COMPAT_MUTEX 1
318
319//字节对齐方式
320#define MEM_ALIGNMENT 4
321
322#define LWIP_CHKSUM_ALGORITHM 3
323
324#define LWIP_NETIF_API 1
325
326//#define LWIP_TX_PBUF_ZERO_COPY 1
327
328//#define LWIP_DHCP_CHECK_LINK_UP 0
329
330//#define CONFIG_TUYA_SOCK_SHIM 1
331
332//#define LWIP_NETIF_HOSTNAME 1
333
334//#define LWIP_CHKSUM(buf, len) tkl_ethernetif_ip_chksum(buf, len)
335
336#define LWIP_HOOK_IP4_ROUTE_SRC(s, d) (void *)ip4_route_src_hook(s, d)
337
338#define LWIP_DHCP_DISCOVER_RETRY_INTERVAL_1S 1
339
340//#define SOCK_API_SYNC 1
341
342//#define LWIP_NETCONN_SEM_PER_THREAD 1
343
344#define MEMP_MEM_MALLOC 1
345
346//#define LWIP_DHCPC_STATIC_IPADDR_ENABLE 0
347
348#define LWIP_CONFIG_FAST_DHCP 1
349
350#endif /* LWIP_HDR_LWIPOPTS_H */