增加网络配置界面
This commit is contained in:
+30
-4
@@ -17,6 +17,7 @@
|
||||
#include "cmsis_os.h"
|
||||
#include "net_socket.h"
|
||||
#include "net_select.h"
|
||||
#include "net_cfg.h"
|
||||
#include "ch395f.h"
|
||||
#include "sys_events.h"
|
||||
|
||||
@@ -27,14 +28,29 @@
|
||||
* 函数功能:CH395F 协议栈一次性初始化(两种构建模式共用)
|
||||
* 入口参数:无
|
||||
* 返 回 值:0 - 成功,-1 - 失败
|
||||
* 函数说明:net_init → MAC 打印 → PHY 强制 100M 全双工 → 广播网络就绪事件。
|
||||
* 函数说明:net_cfg 加载(首启/无文件 = 工厂默认)→ net_init → MAC 回写
|
||||
* 配置模块 → MAC 打印 → PHY 强制 100M 全双工 → 广播网络就绪事件。
|
||||
* NET 层模式由 netTask 调用;硬件层模式(阶段 1~5)netTask 不创建,
|
||||
* 由 testTask 调用后独占 CH395F。
|
||||
*/
|
||||
int net_stack_bring_up(void) {
|
||||
const net_cfg_t *cfg;
|
||||
char ip[16];
|
||||
char mask[16];
|
||||
char gw[16];
|
||||
|
||||
DBG_INFO("=== Network Init ===");
|
||||
|
||||
if (net_init("192.168.1.100", "255.255.255.0", "192.168.1.1") != 0) {
|
||||
/* 加载网络配置(存储后端:NAND 上 FatFS 文件 /cfg/netcfg.bin;
|
||||
* 首启/存储未就绪 = 工厂默认,与既有硬编码组网值一致) */
|
||||
(void)net_cfg_load();
|
||||
cfg = net_cfg_get();
|
||||
|
||||
net_cfg_fmt_ipv4(cfg->ip, ip, sizeof(ip));
|
||||
net_cfg_fmt_ipv4(cfg->mask, mask, sizeof(mask));
|
||||
net_cfg_fmt_ipv4(cfg->gw, gw, sizeof(gw));
|
||||
|
||||
if (net_init(ip, mask, gw, cfg->mac) != 0) {
|
||||
DBG_ERROR("net init: FAIL");
|
||||
return -1;
|
||||
}
|
||||
@@ -45,6 +61,10 @@ int net_stack_bring_up(void) {
|
||||
DBG_INFO("MAC: %02X:%02X:%02X:%02X:%02X:%02X",
|
||||
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||
|
||||
/* 回写芯片实际 MAC 到配置模块(UI "网口设置"页只读影子,
|
||||
* 不直接触 CH395F SPI——SPI 归 netTask 集中处理) */
|
||||
net_cfg_set_active_mac(mac);
|
||||
|
||||
uint8_t ipinf[20];
|
||||
ch395f_get_ip_inf(ipinf);
|
||||
DBG_INFO("IP_INF: IP=%d.%d.%d.%d GW=%d.%d.%d.%d MASK=%d.%d.%d.%d",
|
||||
@@ -95,7 +115,8 @@ int net_task_init(void) {
|
||||
* 函数功能:网络任务主函数
|
||||
* 入口参数:arg - FreeRTOS 传入参数(未使用)
|
||||
* 返 回 值:无
|
||||
* 函数说明:启动后先调用 net_stack_bring_up() 初始化 CH395F 协议栈,
|
||||
* 函数说明:等待存储就绪(就绪屏障,10s 超时回退工厂默认,存储故障
|
||||
* 不阻塞组网)→ net_stack_bring_up() 初始化 CH395F 协议栈,
|
||||
* 再进入轮询循环处理网络事件。
|
||||
* 仅 NET 层测试模式(阶段 6~10)会创建本任务;
|
||||
* 硬件层模式下 netTask 不创建,CH395F 由 testTask 独占。
|
||||
@@ -103,7 +124,12 @@ int net_task_init(void) {
|
||||
void net_task_func(void const *arg) {
|
||||
(void)arg;
|
||||
|
||||
osDelay(2000);
|
||||
/* 配置在 NAND 的 FatFS 卷上:等存储就绪再读(取代原 2s 魔法延时);
|
||||
* 超时(存储异常)继续以工厂默认组网,不卡网络启动 */
|
||||
if (sys_evtHandle != NULL) {
|
||||
(void)osEventFlagsWait(sys_evtHandle, SYS_EVT_STORAGE_READY,
|
||||
osFlagsWaitAny, 10000u);
|
||||
}
|
||||
|
||||
if (net_stack_bring_up() != 0) {
|
||||
for (;;) {
|
||||
|
||||
Reference in New Issue
Block a user