修复了网络参数的保存逻辑
This commit is contained in:
@@ -35,6 +35,8 @@ static uint8_t g_rx[64];
|
||||
|
||||
static int g_listen = -1;
|
||||
static int g_client = -1;
|
||||
static uint16_t g_port; /* 监听端口(网络重建后重监听用) */
|
||||
static uint32_t g_gen; /* 建立监听时的网络代次号(变化 = 网络已重建) */
|
||||
|
||||
/*
|
||||
* 函数功能:计算 RemoDispBus 数据段异或校验值
|
||||
@@ -204,6 +206,7 @@ static void remo_handle(const uint8_t *f, int n)
|
||||
*/
|
||||
int ui_net_sink_start(uint16_t port)
|
||||
{
|
||||
g_port = port;
|
||||
g_listen = net_socket(NET_AF_INET, NET_SOCK_STREAM);
|
||||
if (g_listen < 0) {
|
||||
return -1;
|
||||
@@ -225,6 +228,7 @@ int ui_net_sink_start(uint16_t port)
|
||||
return -1;
|
||||
}
|
||||
g_client = -1;
|
||||
g_gen = net_get_generation(); /* 成功才记录代次;失败保持旧值以便下轮重试 */
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -236,9 +240,21 @@ int ui_net_sink_start(uint16_t port)
|
||||
* 函数说明:1. 无客户端时尝试接受连接(不主动上报 INIT,由客户端按需请求)
|
||||
* 2. 有客户端时非阻塞收帧并解析
|
||||
* 3. 连接关闭或异常时复位,等待重监听,不阻塞界面刷新
|
||||
* 4. 网络重建(net_init 代次变化)时关闭旧监听并重建(IP 变更后自愈)
|
||||
*/
|
||||
void ui_net_sink_poll(void)
|
||||
{
|
||||
/* 网络重建(net_init 代次变化):旧监听/客户端已随芯片复位失效,重建监听 */
|
||||
if (net_get_generation() != g_gen) {
|
||||
if (g_listen >= 0) {
|
||||
net_close(g_listen);
|
||||
g_listen = -1;
|
||||
}
|
||||
g_client = -1;
|
||||
(void)ui_net_sink_start(g_port); /* 失败则下轮再试(g_gen 未更新) */
|
||||
return;
|
||||
}
|
||||
|
||||
if (g_listen < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user