diff --git a/applications/VK_Client.c b/applications/VK_Client.c index 5d0daeb..be51ce6 100644 --- a/applications/VK_Client.c +++ b/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; } - } else { + 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(); } }