fix: restore CH390 bridge flow and sync driver docs

This commit is contained in:
2026-04-03 05:18:02 +08:00
parent 1ef1ba9490
commit fd1fae8ad7
18 changed files with 501 additions and 178 deletions
+20 -2
View File
@@ -106,6 +106,7 @@ static err_t tcp_client_on_connected(void *arg, struct tcp_pcb *pcb, err_t err)
ctx->pcb = pcb;
ctx->status.state = TCP_CLIENT_STATE_CONNECTED;
tcp_nagle_disable(pcb);
tcp_arg(pcb, ctx);
tcp_recv(pcb, tcp_client_on_recv);
tcp_sent(pcb, tcp_client_on_sent);
@@ -118,8 +119,9 @@ int tcp_client_init(const tcp_client_config_t *config)
memset(&g_client, 0, sizeof(g_client));
g_client.config.server_ip[0] = 192u;
g_client.config.server_ip[1] = 168u;
g_client.config.server_ip[2] = 1u;
g_client.config.server_ip[3] = 100u;
g_client.config.server_ip[2] = 31u;
g_client.config.server_ip[3] = 1u;
g_client.config.local_port = TCP_CLIENT_DEFAULT_PORT;
g_client.config.server_port = TCP_CLIENT_DEFAULT_PORT;
g_client.config.auto_reconnect = true;
g_client.config.reconnect_interval_ms = TCP_CLIENT_RECONNECT_DELAY_MS;
@@ -148,6 +150,17 @@ int tcp_client_connect(void)
return -1;
}
if (g_client.config.local_port != 0u) {
err = tcp_bind(pcb, IP_ANY_TYPE, g_client.config.local_port);
if (err != ERR_OK) {
tcp_abort(pcb);
g_client.status.state = TCP_CLIENT_STATE_DISCONNECTED;
g_client.status.errors++;
g_client.next_retry_ms = HAL_GetTick() + g_client.config.reconnect_interval_ms;
return -1;
}
}
IP_ADDR4(&remote_addr,
g_client.config.server_ip[0],
g_client.config.server_ip[1],
@@ -192,6 +205,11 @@ int tcp_client_send(const uint8_t *data, uint16_t len)
return -1;
}
if ((g_client.pcb->flags & TF_RXCLOSED) != 0u) {
g_client.status.errors++;
return -1;
}
if (tcp_sndbuf(g_client.pcb) < len) {
return 0;
}