修改联网策略,改为固定10s一次,所有发送失败都重新发起连接
This commit is contained in:
parent
0acbc29baf
commit
782d77531c
|
@ -5,7 +5,7 @@
|
|||
"type": "mrs-debugger",
|
||||
"request": "launch",
|
||||
"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": {
|
||||
"useLocalOpenOCD": true,
|
||||
"executable": "c:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/openocd.exe",
|
||||
|
@ -39,8 +39,8 @@
|
|||
"additionalCommands": []
|
||||
},
|
||||
"loadedFiles": {
|
||||
"executableFile": "c:\\Users\\张喆1223\\Desktop\\NT26K\\JT-DT-YD4N02A_4G_RTT_MRS\\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",
|
||||
"executableFile": "d:\\SXDT\\Project\\CH32\\JT-DT-YD4N02A_RTT_MRS-NT26K\\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,
|
||||
"symbolFileOffset": 0
|
||||
},
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: mbw
|
||||
* @Date: 2024-10-09 08:42:14
|
||||
* @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
|
||||
* @Description:
|
||||
*
|
||||
|
@ -346,7 +346,7 @@ int Nt26k_Send_Data(struct Nt26k_Ops *ops, rt_uint8_t data_num, rt_uint8_t cmd,
|
|||
return RT_ERROR;
|
||||
}
|
||||
rt_memset(ops->body, 0, sizeof(struct DataBody));
|
||||
|
||||
|
||||
ret = nt26k_ops.update_data(ops, device_type, event_type);
|
||||
if (ret == RT_EOK)
|
||||
{
|
||||
|
@ -361,7 +361,7 @@ int Nt26k_Send_Data(struct Nt26k_Ops *ops, rt_uint8_t data_num, rt_uint8_t cmd,
|
|||
ret = -ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -795,13 +795,13 @@ int Nt26k_Process_Events(Nt26kEvent nt26k_recv_event, struct at_device *device,
|
|||
|
||||
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++)
|
||||
{
|
||||
if (nt26k_conncet_tcp_flag)
|
||||
{
|
||||
if (event->send_func)// 如果事件有关联的发送函数,则调用该发送函数
|
||||
if (event->send_func) // 如果事件有关联的发送函数,则调用该发送函数
|
||||
{
|
||||
#ifdef TEST_ENABLE
|
||||
RTC_ShowTime(); // 每次发送打印下时间,容易定位问题
|
||||
|
@ -811,7 +811,9 @@ int Nt26k_Process_Events(Nt26kEvent nt26k_recv_event, struct at_device *device,
|
|||
if (result != RT_EOK)
|
||||
{
|
||||
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;
|
||||
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;
|
||||
ret = RT_ERROR;
|
||||
nt26k_conncet_tcp_flag = 0;
|
||||
rt_sem_release(nt26k_disconnect_sem);
|
||||
ret = RT_ERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!nt26k_disconnect_retry_flag)
|
||||
{
|
||||
LOG_D("断网,启动重连\n");
|
||||
rt_sem_release(nt26k_disconnect_sem);
|
||||
}
|
||||
LOG_D("断网,等待连接中......\n");
|
||||
// if (!nt26k_disconnect_retry_flag)
|
||||
// {
|
||||
LOG_D("断网,启动重连\n");
|
||||
rt_sem_release(nt26k_disconnect_sem);
|
||||
// }
|
||||
// LOG_D("断网,等待连接中......\n");
|
||||
ret = RT_ERROR;
|
||||
}
|
||||
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);
|
||||
RT_ASSERT(device);
|
||||
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");
|
||||
|
||||
|
@ -1465,7 +1469,7 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
|
|||
{
|
||||
LOG_D("重连网络中...\n");
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
LOG_D("AT device power on success");
|
||||
rt_thread_mdelay(RT_TICK_PER_SECOND / 2);
|
||||
/* disable echo */
|
||||
at_client_obj_wait_connect(device->client, 5000);
|
||||
/* disable echo */
|
||||
|
@ -1531,6 +1536,7 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
|
|||
goto __exit;
|
||||
}
|
||||
}
|
||||
rt_thread_mdelay(1);
|
||||
at_delete_resp(resp);
|
||||
}
|
||||
}
|
||||
|
@ -1542,19 +1548,21 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
|
|||
__exit:
|
||||
if (result != RT_EOK)
|
||||
{
|
||||
nt26k_disconnect_retry_flag = 1;
|
||||
LOG_D("重连网络失败,等待%d s后重连\n", delay_n * 5);
|
||||
rt_thread_mdelay(5000);
|
||||
// nt26k_disconnect_retry_flag = 1;
|
||||
// LOG_D("重连网络失败,等待%d s后重连\n", delay_n * 5);
|
||||
LOG_D("重连网络失败,等待10s后重连\n");
|
||||
|
||||
// rt_thread_mdelay(delay_n * 5000);
|
||||
|
||||
// delay_n++;
|
||||
// if (delay_n >= 66) // 大于3小时的重连都不行,则重启设备
|
||||
// {
|
||||
// Flash_Set_WorkDuration(work_duration);
|
||||
// delay_n = 0;
|
||||
// reboot();
|
||||
// }
|
||||
nt26k_conncet_tcp_flag = 0;
|
||||
|
||||
delay_n++;
|
||||
if (delay_n >= 360) // 连续重连大于1小时都不行,则重启设备
|
||||
{
|
||||
Flash_Set_WorkDuration(work_duration);
|
||||
rt_thread_mdelay(100);
|
||||
reboot();
|
||||
}
|
||||
rt_thread_mdelay(10000);
|
||||
// nt26k_conncet_tcp_flag = 0;
|
||||
rt_sem_release(nt26k_disconnect_sem);
|
||||
}
|
||||
}
|
||||
|
@ -1582,7 +1590,7 @@ int BSP_Nt26k_Thread_Init(void)
|
|||
else
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue