修改联网策略,改为固定10s一次,所有发送失败都重新发起连接

This commit is contained in:
小马_666 2025-02-07 08:46:33 +08:00
parent 0acbc29baf
commit 782d77531c
2 changed files with 40 additions and 32 deletions

View File

@ -5,7 +5,7 @@
"type": "mrs-debugger", "type": "mrs-debugger",
"request": "launch", "request": "launch",
"name": "JT-DT-YD4N02A_RTT_MRS-4G", "name": "JT-DT-YD4N02A_RTT_MRS-4G",
"cwd": "c:\\Users\\张喆1223\\Desktop\\NT26K\\JT-DT-YD4N02A_4G_RTT_MRS", "cwd": "d:\\SXDT\\Project\\CH32\\JT-DT-YD4N02A_RTT_MRS-NT26K",
"openOCDCfg": { "openOCDCfg": {
"useLocalOpenOCD": true, "useLocalOpenOCD": true,
"executable": "c:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/openocd.exe", "executable": "c:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/openocd.exe",
@ -39,8 +39,8 @@
"additionalCommands": [] "additionalCommands": []
}, },
"loadedFiles": { "loadedFiles": {
"executableFile": "c:\\Users\\张喆1223\\Desktop\\NT26K\\JT-DT-YD4N02A_4G_RTT_MRS\\obj\\JT-DT-YD4N02A_RTT_MRS-4G.elf", "executableFile": "d:\\SXDT\\Project\\CH32\\JT-DT-YD4N02A_RTT_MRS-NT26K\\obj\\JT-DT-YD4N02A_RTT_MRS-4G.elf",
"symbolFile": "c:\\Users\\张喆1223\\Desktop\\NT26K\\JT-DT-YD4N02A_4G_RTT_MRS\\obj\\JT-DT-YD4N02A_RTT_MRS-4G.elf", "symbolFile": "d:\\SXDT\\Project\\CH32\\JT-DT-YD4N02A_RTT_MRS-NT26K\\obj\\JT-DT-YD4N02A_RTT_MRS-4G.elf",
"executableFileOffset": 0, "executableFileOffset": 0,
"symbolFileOffset": 0 "symbolFileOffset": 0
}, },

View File

@ -2,7 +2,7 @@
* @Author: mbw * @Author: mbw
* @Date: 2024-10-09 08:42:14 * @Date: 2024-10-09 08:42:14
* @LastEditors: mbw && 1600520629@qq.com * @LastEditors: mbw && 1600520629@qq.com
* @LastEditTime: 2025-02-06 09:27:48 * @LastEditTime: 2025-02-07 08:44:58
* @FilePath: \JT-DT-YD4N02A_RTT_MRS-NT26K\bsp\src\bsp_nt26k.c * @FilePath: \JT-DT-YD4N02A_RTT_MRS-NT26K\bsp\src\bsp_nt26k.c
* @Description: * @Description:
* *
@ -795,13 +795,13 @@ int Nt26k_Process_Events(Nt26kEvent nt26k_recv_event, struct at_device *device,
if (event) // 处理该事件 if (event) // 处理该事件
{ {
LOG_D("%s上报\n", event->event_name);// 打印事件的名称 LOG_D("%s上报\n", event->event_name); // 打印事件的名称
for (size_t i = 0; i < max_retry_count; i++) for (size_t i = 0; i < max_retry_count; i++)
{ {
if (nt26k_conncet_tcp_flag) if (nt26k_conncet_tcp_flag)
{ {
if (event->send_func)// 如果事件有关联的发送函数,则调用该发送函数 if (event->send_func) // 如果事件有关联的发送函数,则调用该发送函数
{ {
#ifdef TEST_ENABLE #ifdef TEST_ENABLE
RTC_ShowTime(); // 每次发送打印下时间,容易定位问题 RTC_ShowTime(); // 每次发送打印下时间,容易定位问题
@ -811,7 +811,9 @@ int Nt26k_Process_Events(Nt26kEvent nt26k_recv_event, struct at_device *device,
if (result != RT_EOK) if (result != RT_EOK)
{ {
LOG_E("nt26k send failed\n"); LOG_E("nt26k send failed\n");
nt26k_connect_sever_flag = 1; nt26k_connect_sever_flag = 0;
nt26k_conncet_tcp_flag = 0;
rt_sem_release(nt26k_disconnect_sem);
ret = RT_ERROR; ret = RT_ERROR;
continue; continue;
} }
@ -828,19 +830,21 @@ int Nt26k_Process_Events(Nt26kEvent nt26k_recv_event, struct at_device *device,
{ {
// 收不到说明在平台未注册或者信号不行,此时nt26k_connect_sever_flag 为0但nt26k_conncet_tcp_flag = 1此时不发起重连等待事件触发就行 // 收不到说明在平台未注册或者信号不行,此时nt26k_connect_sever_flag 为0但nt26k_conncet_tcp_flag = 1此时不发起重连等待事件触发就行
nt26k_connect_sever_flag = 0; nt26k_connect_sever_flag = 0;
ret = RT_ERROR; nt26k_conncet_tcp_flag = 0;
rt_sem_release(nt26k_disconnect_sem);
ret = RT_ERROR;
} }
} }
} }
} }
else else
{ {
if (!nt26k_disconnect_retry_flag) // if (!nt26k_disconnect_retry_flag)
{ // {
LOG_D("断网,启动重连\n"); LOG_D("断网,启动重连\n");
rt_sem_release(nt26k_disconnect_sem); rt_sem_release(nt26k_disconnect_sem);
} // }
LOG_D("断网,等待连接中......\n"); // LOG_D("断网,等待连接中......\n");
ret = RT_ERROR; ret = RT_ERROR;
} }
rt_thread_mdelay(5000); rt_thread_mdelay(5000);
@ -1452,7 +1456,7 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
struct at_device *device = at_device_get_by_name(AT_DEVICE_NAMETYPE_NETDEV, nt26k->device_name); struct at_device *device = at_device_get_by_name(AT_DEVICE_NAMETYPE_NETDEV, nt26k->device_name);
RT_ASSERT(device); RT_ASSERT(device);
rt_err_t result = RT_EOK; rt_err_t result = RT_EOK;
rt_uint32_t delay_n = 1; rt_uint32_t delay_n = 0;
LOG_D("nt26k_life_thread entry\n"); LOG_D("nt26k_life_thread entry\n");
@ -1465,7 +1469,7 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
{ {
LOG_D("重连网络中...\n"); LOG_D("重连网络中...\n");
nt26k_connect_sever_flag = 0; nt26k_connect_sever_flag = 0;
at_response_t resp = at_create_resp(64, 0, 5000); at_response_t resp = at_create_resp(128, 0, 5000);
if (resp == RT_NULL) if (resp == RT_NULL)
{ {
LOG_E("No memory for response structure!"); LOG_E("No memory for response structure!");
@ -1475,6 +1479,7 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
if (device->class->device_ops->control(device, AT_DEVICE_CTRL_POWER_ON, RT_NULL) == RT_EOK) if (device->class->device_ops->control(device, AT_DEVICE_CTRL_POWER_ON, RT_NULL) == RT_EOK)
{ {
LOG_D("AT device power on success"); LOG_D("AT device power on success");
rt_thread_mdelay(RT_TICK_PER_SECOND / 2);
/* disable echo */ /* disable echo */
at_client_obj_wait_connect(device->client, 5000); at_client_obj_wait_connect(device->client, 5000);
/* disable echo */ /* disable echo */
@ -1531,6 +1536,7 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
goto __exit; goto __exit;
} }
} }
rt_thread_mdelay(1);
at_delete_resp(resp); at_delete_resp(resp);
} }
} }
@ -1542,19 +1548,21 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
__exit: __exit:
if (result != RT_EOK) if (result != RT_EOK)
{ {
nt26k_disconnect_retry_flag = 1; // nt26k_disconnect_retry_flag = 1;
LOG_D("重连网络失败,等待%d s后重连\n", delay_n * 5); // LOG_D("重连网络失败,等待%d s后重连\n", delay_n * 5);
rt_thread_mdelay(5000); LOG_D("重连网络失败,等待10s后重连\n");
// rt_thread_mdelay(delay_n * 5000); // rt_thread_mdelay(delay_n * 5000);
// delay_n++; delay_n++;
// if (delay_n >= 66) // 大于3小时的重连都不行则重启设备 if (delay_n >= 360) // 连续重连大于1小时都不行则重启设备
// { {
// Flash_Set_WorkDuration(work_duration); Flash_Set_WorkDuration(work_duration);
// delay_n = 0; rt_thread_mdelay(100);
// reboot(); reboot();
// } }
nt26k_conncet_tcp_flag = 0; rt_thread_mdelay(10000);
// nt26k_conncet_tcp_flag = 0;
rt_sem_release(nt26k_disconnect_sem); rt_sem_release(nt26k_disconnect_sem);
} }
} }
@ -1582,7 +1590,7 @@ int BSP_Nt26k_Thread_Init(void)
else else
{ {
timeout = iot_upload_time * 60 * RT_TICK_PER_SECOND; timeout = iot_upload_time * 60 * RT_TICK_PER_SECOND;
if (timeout >= RT_TICK_MAX / 2)//超了就直接默认值 if (timeout >= RT_TICK_MAX / 2) // 超了就直接默认值
{ {
timeout = 60 * 60 * RT_TICK_PER_SECOND; timeout = 60 * 60 * RT_TICK_PER_SECOND;
} }