ppp_api_update_all_runtime_status();
ppp_get_network_signal_info();
-
+
+ ppp_start_dial();
#endif
return ERRCODE_SUCC;
// 根据网络注册状态设置网络连接状态
uint8_t network_on = (network_status == 1 || network_status == 5) ? 1 : 0;
- cat1_api_runtime_set_cat1_networkstat(network_on);
+ // cat1_api_runtime_set_cat1_networkstat(network_on);
cat1_api_runtime_set_cat1_networktype(network_status);
PPP_DEBUG_INFO("Updated network status (CEREG): %d, network_on: %d", network_status, network_on);
#include "ppp_debug.h"
#include "ppp_serial.h"
#include "ppp_power_ctl.h" // 添加电源控制头文件
+#include "ppp_cat1_api.h" // 添加cat1_api头文件,用于更新runtime状态
#include "securec.h"
#include "osal_addr.h" // 添加OSAL内存管理头文件
#include "osal_timer.h" // 添加OSAL时间函数头文件
/* 停止连接监控 */
ppp_lwip_stop_connection_monitor();
+ /* 清空runtime状态 */
+ cat1_api_runtime_set_cat1_networkstat(0);
+ PPP_DEBUG_INFO("PPP runtime: network_on cleared to 0");
+
err_t err = pppapi_close(g_lwip_ctx.ppp_pcb, 0);
if (err != ERR_OK) {
PPP_DEBUG_ERROR("Failed to close PPP connection: %d", err);
g_lwip_ctx.connected = false;
event.type = PPP_LWIP_EVENT_DISCONNECTED;
PPP_DEBUG_INFO("PPP connection disconnected (phase DISCONNECT)");
+
+ /* 清空runtime状态 */
+ cat1_api_runtime_set_cat1_networkstat(0);
+ PPP_DEBUG_INFO("PPP runtime: network_on cleared (phase DISCONNECT)");
break;
default:
PPP_DEBUG_WARN("PPP link down: %d", err_code);
g_lwip_ctx.connected = false;
+ /* 清空runtime状态 */
+ cat1_api_runtime_set_cat1_networkstat(0);
+ PPP_DEBUG_INFO("PPP runtime: network_on cleared (link down)");
+
/* 通知链路断开 */
if (g_lwip_ctx.event_callback) {
ppp_lwip_event_t event;
(g_lwip_ctx.remote_ip >> 8) & 0xFF,
(g_lwip_ctx.remote_ip >> 16) & 0xFF,
(g_lwip_ctx.remote_ip >> 24) & 0xFF);
+
+ // ⚠️ 网络连接成功,更新runtime状态
+ cat1_api_runtime_set_cat1_networkstat(1);
+ PPP_DEBUG_INFO("PPP runtime: network_on set to 1");
}
}
}
#define TCP_TIMER_CREATE(id, cb, arg, period, cycle) (*(id) = 0) /* 简化实现 */
#define TCP_TIMER_DELETE(id) /* 简化实现 */
#define TCP_TASK_CREATE(func, arg, name, size) \
- do { \
- osal_kthread_create((osal_kthread_handler)func, arg, name, size); \
- } while(0)
+ osal_kthread_create((osal_kthread_handler)func, arg, name, size)
#define TCP_SLEEP_MS(ms) osal_msleep(ms)
#define TCP_STRERROR(err) "socket error"
}
*send_arg = conn_id;
- TCP_TASK_CREATE(tcp_test_send_worker, send_arg, "tcp_send", 4096);
+ // ⚠️ 减小栈大小:4096 -> 2048,节省内存
+ osal_task *send_task = TCP_TASK_CREATE(tcp_test_send_worker, send_arg, "tcp_send", 2048);
+ if (!send_task) {
+ ZHIHUI_TCP_LOG_ERROR("[连接 %03d] 创建发送线程失败 (内存不足)", conn_id);
+ free(send_arg);
+ TCP_CLOSE(conn->socket_fd);
+ conn->connected = false;
+ TCP_MUTEX_LOCK(g_tcp_stats_mutex);
+ g_tcp_test_manager.global_stats.failed_connections++;
+ g_tcp_test_manager.global_stats.successful_connections--;
+ TCP_MUTEX_UNLOCK(g_tcp_stats_mutex);
+ return ERRCODE_FAIL;
+ }
// 创建接收线程
uint16_t *recv_arg = malloc(sizeof(uint16_t));
}
*recv_arg = conn_id;
- TCP_TASK_CREATE(tcp_test_recv_worker, recv_arg, "tcp_recv", 4096);
+ osal_task *recv_task = TCP_TASK_CREATE(tcp_test_recv_worker, recv_arg, "tcp_recv", 2048);
+ if (!recv_task) {
+ ZHIHUI_TCP_LOG_ERROR("[连接 %03d] 创建接收线程失败 (内存不足)", conn_id);
+ free(recv_arg);
+ free(send_arg);
+ TCP_CLOSE(conn->socket_fd);
+ conn->connected = false;
+ TCP_MUTEX_LOCK(g_tcp_stats_mutex);
+ g_tcp_test_manager.global_stats.failed_connections++;
+ g_tcp_test_manager.global_stats.successful_connections--;
+ TCP_MUTEX_UNLOCK(g_tcp_stats_mutex);
+ return ERRCODE_FAIL;
+ }
+ ZHIHUI_TCP_LOG_INFO("[连接 %03d] 发送和接收线程创建成功", conn_id);
return ERRCODE_SUCC;
}
/**