Browse Source

fix(applications/vk_client):修正重连机制逻辑,同时添加超时重连判断

dev-rebuild
jujihjuji 5 months ago
parent
commit
95956871d9
  1. 23
      applications/VK_Client.c

23
applications/VK_Client.c

@ -152,22 +152,24 @@ int16_t client_tcp_connect(Cclient_t *client) {
return rtn;
}
static rt_tick_t last_rx_tick = 0;
int16_t client_yield(CLte_dev_t *pLte_dev) {
int16_t rtn = 0;
while (1) {
if (lte_dev.client1->connect_sta == true) {
rt_err_t ret = rt_sem_take(lte_dev.com_dev_rx_sem, 1000);
if (rt_tick_get() - last_rx_tick > RT_TICK_PER_SECOND * 10) {
rt_kprintf("timeout!!! reconnect.");
hw_printf("timeout!!! reconnect.");
pLte_dev->client1->connect_sta = false;
}
if (RT_EOK == ret) {
rt_ssize_t len = 0;
while (1) {
rt_memset(lte_dev.at_buf, 0, sizeof(lte_dev.at_buf));
len = rt_device_read(lte_dev.com_dev, 0, lte_dev.at_buf,
sizeof(lte_dev.at_buf));
rt_device_t fmu_com = fmu_com_get();
if (fmu_com) {
rt_device_write(fmu_com, 0, pLte_dev->at_buf, len);
}
if (len > 0) {
/*收到TCP关闭的消息*/
if (strstr((const char *)lte_dev.at_buf, CLOSED)) {
@ -176,22 +178,31 @@ int16_t client_yield(CLte_dev_t *pLte_dev) {
if (NULL != strstr((char *)lte_dev.at_buf, cmd_str)) {
EC800K_Reset();
pLte_dev->client1->connect_sta = false;
break;
}
return 1;
break;
} else if (strstr((const char *)lte_dev.at_buf, "NO CARRIER")) {
rt_kprintf("disconnect!!!");
hw_printf("disconnect!!!");
pLte_dev->client1->connect_sta = false;
break;
}
rt_device_t fmu_com = fmu_com_get();
if (fmu_com) {
rt_device_write(fmu_com, 0, pLte_dev->at_buf, len);
}
}else{
break;
}
last_rx_tick = rt_tick_get();
}
}
} else {
BSP_LTE_Config();
client_tcp_connect(lte_dev.client1);
last_rx_tick = rt_tick_get();
}
}

Loading…
Cancel
Save