将TCP重连优化,心跳改为3分钟
This commit is contained in:
parent
db30b6f7b3
commit
9d2cdf6e26
|
@ -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": "d:\\SXDT\\Project\\CH32\\JT-DT-YD4N02A_RTT_MRS-NT26K",
|
"cwd": "c:\\Users\\张喆1223\\Desktop\\NT26K\\JT-DT-YD4N02A_4G_RTT_MRS",
|
||||||
"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": "d:\\SXDT\\Project\\CH32\\JT-DT-YD4N02A_RTT_MRS-NT26K\\obj\\JT-DT-YD4N02A_RTT_MRS-4G.elf",
|
"executableFile": "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",
|
"symbolFile": "c:\\Users\\张喆1223\\Desktop\\NT26K\\JT-DT-YD4N02A_4G_RTT_MRS\\obj\\JT-DT-YD4N02A_RTT_MRS-4G.elf",
|
||||||
"executableFileOffset": 0,
|
"executableFileOffset": 0,
|
||||||
"symbolFileOffset": 0
|
"symbolFileOffset": 0
|
||||||
},
|
},
|
||||||
|
|
|
@ -111,7 +111,7 @@ static rt_err_t nt26k_power_off(struct at_device *device)
|
||||||
|
|
||||||
static rt_err_t nt26k_Close_Rf(struct at_device *device)
|
static rt_err_t nt26k_Close_Rf(struct at_device *device)
|
||||||
{
|
{
|
||||||
at_response_t resp = at_create_resp(64, 0, rt_tick_from_millisecond(60000));
|
at_response_t resp = at_create_resp(64, 0, rt_tick_from_millisecond(10000));
|
||||||
if (resp == RT_NULL)
|
if (resp == RT_NULL)
|
||||||
{
|
{
|
||||||
LOG_D("no memory for resp create.");
|
LOG_D("no memory for resp create.");
|
||||||
|
@ -888,7 +888,7 @@ static void nt26k_init_thread_entry(void *parameter)
|
||||||
goto __exit;
|
goto __exit;
|
||||||
}
|
}
|
||||||
/*设置保活信息*/
|
/*设置保活信息*/
|
||||||
if (at_obj_exec_cmd(device->client, resp, "AT+QICFG=\"tcp/keepalive\",1,1000,100,10") != RT_EOK)
|
if (at_obj_exec_cmd(device->client, resp, "AT+QICFG=\"tcp/keepalive\",1,180,75,9") != RT_EOK)
|
||||||
{
|
{
|
||||||
result = -RT_ERROR;
|
result = -RT_ERROR;
|
||||||
goto __exit;
|
goto __exit;
|
||||||
|
|
|
@ -1462,7 +1462,7 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
|
||||||
rt_err_t result = RT_ETIMEOUT;
|
rt_err_t result = RT_ETIMEOUT;
|
||||||
rt_uint32_t delay_n = 0;
|
rt_uint32_t delay_n = 0;
|
||||||
at_response_t resp = RT_NULL;
|
at_response_t resp = RT_NULL;
|
||||||
rt_uint32_t retry_delay = 1000;
|
rt_uint32_t retry_delay = 4000;
|
||||||
LOG_D("nt26k_life_thread entry\n");
|
LOG_D("nt26k_life_thread entry\n");
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
|
@ -1482,8 +1482,10 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
|
||||||
result = -RT_ETIMEOUT;
|
result = -RT_ETIMEOUT;
|
||||||
goto __exit;
|
goto __exit;
|
||||||
}
|
}
|
||||||
device->class->device_ops->control(device, AT_DEVICE_RF_CLOSE, RT_NULL);
|
device->class->device_ops->control(device, AT_DEVICE_CTRL_NET_DISCONN, RT_NULL);
|
||||||
rt_thread_mdelay(RT_TICK_PER_SECOND);//这里如果有TCP连接,先关掉TCP,没有返回错误无所谓
|
rt_thread_mdelay(RT_TICK_PER_SECOND);//这里如果有TCP连接,先关掉TCP,没有返回错误无所谓
|
||||||
|
device->class->device_ops->control(device, AT_DEVICE_RF_CLOSE, RT_NULL);
|
||||||
|
rt_thread_mdelay(RT_TICK_PER_SECOND);
|
||||||
if (device->class->device_ops->control(device, AT_DEVICE_CTRL_WAKEUP, RT_NULL) == RT_EOK)
|
if (device->class->device_ops->control(device, AT_DEVICE_CTRL_WAKEUP, RT_NULL) == RT_EOK)
|
||||||
{
|
{
|
||||||
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)
|
||||||
|
@ -1522,7 +1524,8 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
|
||||||
}
|
}
|
||||||
/*设置保活信息*/
|
/*设置保活信息*/
|
||||||
LOG_D("AT+QICFG=\"tcp/keepalive\",1,1000,100,10");
|
LOG_D("AT+QICFG=\"tcp/keepalive\",1,1000,100,10");
|
||||||
if (at_obj_exec_cmd(device->client, resp, "AT+QICFG=\"tcp/keepalive\",1,1000,100,10") != RT_EOK)
|
// if (at_obj_exec_cmd(device->client, resp, "AT+QICFG=\"tcp/keepalive\",1,1000,100,10") != RT_EOK)
|
||||||
|
if (at_obj_exec_cmd(device->client, resp, "AT+QICFG=\"tcp/keepalive\",1,180,75,9") != RT_EOK)
|
||||||
{
|
{
|
||||||
LOG_E("AT+QICFG=\"tcp/keepalive\" error\n");
|
LOG_E("AT+QICFG=\"tcp/keepalive\" error\n");
|
||||||
result = -RT_ETIMEOUT;
|
result = -RT_ETIMEOUT;
|
||||||
|
@ -1640,9 +1643,9 @@ static void Nt26k_Life_Thread_Entry(void *parameter)
|
||||||
nt26k_disconnect_retry_flag = 1;
|
nt26k_disconnect_retry_flag = 1;
|
||||||
LOG_D("联网错误,等待%dms后重连", retry_delay);
|
LOG_D("联网错误,等待%dms后重连", retry_delay);
|
||||||
rt_thread_mdelay(retry_delay);
|
rt_thread_mdelay(retry_delay);
|
||||||
retry_delay = MIN(retry_delay * 2, 60000); // 最大延迟60秒
|
retry_delay = MIN(retry_delay * 2, 1800000); // 最大延迟30min
|
||||||
delay_n++;
|
delay_n++;
|
||||||
if (delay_n >= 360) // 连续重连大于1小时都不行,则重启设备
|
if (delay_n >= 21) // 连续重连大于1小时都不行,则重启设备
|
||||||
{
|
{
|
||||||
Flash_Set_WorkDuration(work_duration);
|
Flash_Set_WorkDuration(work_duration);
|
||||||
rt_thread_mdelay(100);
|
rt_thread_mdelay(100);
|
||||||
|
|
Loading…
Reference in New Issue