/*
 * 模块名称：Network Configuration
 * 模块功能：网络子系统配置宏定义，包括最大Socket数量、缓冲区大小、
 *          超时时间等参数配置
 * 适用平台：STM32F4 系列（CH395F 以太网芯片）
 * 作者：王建锋
 * 创建日期：2026-07-18
 * 修改记录：
 */

#ifndef __NET_CONFIG_H
#define __NET_CONFIG_H

#ifdef __cplusplus
extern "C" {
#endif

/*
 * 最大支持的 Socket 数量（CH395F 支持 0~7）
 */
#ifndef NET_MAX_SOCKETS
#define NET_MAX_SOCKETS                 8
#endif

/*
 * TCP Server 多连接模式配置
 * 监听 Socket 索引和数据 Socket 起始索引
 */
#ifndef NET_TCP_SERVER_LISTEN_SOCK
#define NET_TCP_SERVER_LISTEN_SOCK      0       /* 监听 Socket 索引 */
#endif

/*
 * 缓冲区大小配置
 */
#ifndef NET_SEND_BUF_SIZE
#define NET_SEND_BUF_SIZE               4096    /* 发送缓冲区大小（字节） */
#endif

#ifndef NET_RECV_BUF_SIZE
#define NET_RECV_BUF_SIZE               4096    /* 接收缓冲区大小（字节） */
#endif

/*
 * 超时时间配置（毫秒）
 * 0 = 无限等待（阻塞模式）
 */
#ifndef NET_CONNECT_TIMEOUT_MS
#define NET_CONNECT_TIMEOUT_MS          5000    /* 连接超时 */
#endif

#ifndef NET_ACCEPT_TIMEOUT_MS
#define NET_ACCEPT_TIMEOUT_MS           0       /* 接受连接超时（0=无限等待） */
#endif

#ifndef NET_SEND_TIMEOUT_MS
#define NET_SEND_TIMEOUT_MS             1000    /* 发送超时 */
#endif

#ifndef NET_RECV_TIMEOUT_MS
#define NET_RECV_TIMEOUT_MS             30000   /* 接收超时（30秒，0=无限等待） */
#endif

/*
 * TCP KeepAlive 配置
 */
#ifndef NET_KEEPALIVE_IDLE_MS
#define NET_KEEPALIVE_IDLE_MS           7200000 /* KeepAlive 空闲时间（默认2小时） */
#endif

#ifndef NET_KEEPALIVE_INTVL_MS
#define NET_KEEPALIVE_INTVL_MS          75000   /* KeepAlive 探测间隔（默认75秒） */
#endif

#ifndef NET_KEEPALIVE_CNT
#define NET_KEEPALIVE_CNT               9       /* KeepAlive 探测次数（默认9次） */
#endif

/*
 * select/poll 最大 fd 数量
 */
#ifndef NET_SELECT_MAX_FDS
#define NET_SELECT_MAX_FDS              NET_MAX_SOCKETS
#endif

/*
 * 轮询延时配置（毫秒）
 */
#ifndef NET_POLL_DELAY_MS
#define NET_POLL_DELAY_MS               1       /* 非阻塞轮询延时 */
#endif

/*
 * 消息队列配置
 */
#ifndef NET_MSG_QUEUE_LENGTH
#define NET_MSG_QUEUE_LENGTH            8       /* 消息队列深度 */
#endif

#ifdef __cplusplus
}
#endif

#endif /* __NET_CONFIG_H */
