fix(cat1): 修复DUCH模式30分钟重连空白期+TCP重连失败立即关机问题
1. DUCH_MODE 30分钟到期: 原走CAT_ONE_INIT(完整重初始化+不关TCP导致LIPOPEN失败→关机5分钟), 改为CLOSE_TCP→TCP_CONN(关TCP重开,~3秒恢复) 2. LIPOPEN: 0,0 重连失败: 原直接CAT_ONE_OFF(关机5分钟), 改为重试3次(每次关TCP→等5秒→重开), 都失败才关机 3. LIPOPEN: 0,1 连接成功: 重置重试计数器RegisterDelayCnt 4. CAT_ONE_CLOSE_TCP: 使用CatOne.NextStatus替代硬编码CAT_ONE_OFF,支持关TCP后跳转指定状态 5. LIPSEND失败路径: 进CLOSE_TCP前设置NextStatus=CAT_ONE_OFF保持原有行为 6. CAT_ONE_OFF: 重置RegisterDelayCnt 7. 版本信息移至main.h, 简化bsp.h硬件版本条件编译
This commit is contained in:
@@ -27,7 +27,7 @@
|
||||
|
||||
// <o>the stack size of main thread<1-4086>
|
||||
// <i>Default: 512
|
||||
#define RT_MAIN_THREAD_STACK_SIZE 512
|
||||
#define RT_MAIN_THREAD_STACK_SIZE 512 //4096
|
||||
|
||||
// </h>
|
||||
|
||||
|
||||
@@ -10,9 +10,6 @@
|
||||
#include "rtthread.h"
|
||||
#include "ff.h"
|
||||
|
||||
#define SOFTWARE_VERSION 10
|
||||
#define HARDWARE_VERSION 12
|
||||
|
||||
//#define USE_BOOTLOADER
|
||||
|
||||
//#define FLASH_SECTOR_SIZE 0x2000ul
|
||||
@@ -97,13 +94,8 @@
|
||||
#define DBG_OR_CAT1_CTRL_PORT (PortB)
|
||||
#define DBG_OR_CAT1_CTRL_PIN (Pin08)
|
||||
|
||||
#if (HARDWARE_VERSION == 12)
|
||||
#define DBG_ON() PORT_SetBits(DBG_OR_CAT1_CTRL_PORT, DBG_OR_CAT1_CTRL_PIN)
|
||||
#define CAT1_ON() PORT_ResetBits(DBG_OR_CAT1_CTRL_PORT, DBG_OR_CAT1_CTRL_PIN)
|
||||
#elif (HARDWARE_VERSION >= 13)
|
||||
#define DBG_ON() PORT_ResetBits(DBG_OR_CAT1_CTRL_PORT, DBG_OR_CAT1_CTRL_PIN)
|
||||
#define CAT1_ON() PORT_SetBits(DBG_OR_CAT1_CTRL_PORT, DBG_OR_CAT1_CTRL_PIN)
|
||||
#endif
|
||||
|
||||
#define CAT1_PWR_KEY_PORT (PortA)
|
||||
#define CAT1_PWR_KEY_PIN (Pin03)
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
#include "Public.h"
|
||||
#include "DebugCmd.h"
|
||||
|
||||
#define SOFTWARE_VERSION 10
|
||||
#define HARDWARE_VERSION 12
|
||||
|
||||
#define MAC_ADDR_TYPE 0//0为测试服务器
|
||||
|
||||
extern bool MainDispEn;
|
||||
|
||||
@@ -42,6 +42,8 @@ void Cat1DuchSend(const char *text, uint16_t len)
|
||||
#define CAT1_DBG_LOG(...) { if(CAT1DispEn) Debug_Printf(__VA_ARGS__);}
|
||||
|
||||
#define CATONE_RESET_DELAY_TIME_MAX (5 * 60 * 1000)
|
||||
#define CAT1_TCP_REOPEN_RETRY_MAX 3
|
||||
#define CAT1_TCP_REOPEN_RETRY_DLY 5000
|
||||
|
||||
const char *CatOneATCmdStr[16] = {
|
||||
"NULL",
|
||||
@@ -237,13 +239,23 @@ void CatOneAtCmdAnalyze(char *RxBuff)
|
||||
if(strstr(RxBuff, "LIPOPEN: 0,1") != NULL) {
|
||||
CAT1_DBG_LOG("Cat1 successfully to connect to the server.\r\n\r\n");
|
||||
CatOne.TcpConnFlag = true;
|
||||
CatOne.RegisterDelayCnt = 0;
|
||||
CatOne.Cat1Status = CatOne.NextStatus;
|
||||
rt_sem_release(CatOneRev_Sem);
|
||||
}
|
||||
else if(strstr(RxBuff, "LIPOPEN: 0,0") != NULL) {
|
||||
CAT1_DBG_LOG("Cat1 failed to connect to the server.\r\n\r\n");
|
||||
CatOne.TcpConnFlag = false;
|
||||
CatOne.Cat1Status = CAT_ONE_OFF;
|
||||
CatOne.RegisterDelayCnt++;
|
||||
if(CatOne.RegisterDelayCnt < CAT1_TCP_REOPEN_RETRY_MAX) {
|
||||
CAT1_DBG_LOG("Cat1 LIPOPEN failed, retry(%d)...\r\n\r\n", CatOne.RegisterDelayCnt);
|
||||
CatOne.NextStatus = CAT_ONE_TCP_CONN;
|
||||
CatOne.Cat1Status = CAT_ONE_CLOSE_TCP;
|
||||
}
|
||||
else {
|
||||
CAT1_DBG_LOG("Cat1 LIPOPEN failed %d times, power off!\r\n\r\n", CAT1_TCP_REOPEN_RETRY_MAX);
|
||||
CatOne.RegisterDelayCnt = 0;
|
||||
CatOne.Cat1Status = CAT_ONE_OFF;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -425,8 +437,10 @@ void CatOneLoopHandler(void)
|
||||
}
|
||||
else {
|
||||
CAT1_DBG_LOG("Cat1 error, Close!\r\n");
|
||||
if(CatOne.AtCmd == CAT_ONE_LIPSEND)
|
||||
if(CatOne.AtCmd == CAT_ONE_LIPSEND) {
|
||||
CatOne.NextStatus = CAT_ONE_OFF;
|
||||
CatOne.Cat1Status = CAT_ONE_CLOSE_TCP;
|
||||
}
|
||||
else
|
||||
CatOne.Cat1Status = CAT_ONE_OFF;
|
||||
}
|
||||
@@ -451,6 +465,8 @@ void CatOneLoopHandler(void)
|
||||
break;
|
||||
|
||||
case CAT_ONE_TCP_CONN:
|
||||
if(CatOne.RegisterDelayCnt > 0)
|
||||
rt_thread_delay(CAT1_TCP_REOPEN_RETRY_DLY);
|
||||
CatOneAtCmdSend(CAT_ONE_LIPOPEN, 2000, CAT_ONE_WAIT_CONN);
|
||||
break;
|
||||
|
||||
@@ -538,7 +554,7 @@ void CatOneLoopHandler(void)
|
||||
|
||||
case CAT_ONE_CLOSE_TCP:
|
||||
CatOne.AtCmdResendCnt = 3;
|
||||
CatOneAtCmdSend(CAT_ONE_LTPCLOSE, 1000, CAT_ONE_OFF);
|
||||
CatOneAtCmdSend(CAT_ONE_LTPCLOSE, 1000, CatOne.NextStatus);
|
||||
break;
|
||||
|
||||
case CAT_ONE_DUCH_MODE:
|
||||
@@ -568,8 +584,8 @@ void CatOneLoopHandler(void)
|
||||
runMs += 50;
|
||||
}
|
||||
if(runMs >= 1800000) {
|
||||
CatOne.Cat1Status = CAT_ONE_INIT;
|
||||
CatOne.AtCmdIdx = 0;
|
||||
CatOne.NextStatus = CAT_ONE_TCP_CONN;
|
||||
CatOne.Cat1Status = CAT_ONE_CLOSE_TCP;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -582,6 +598,7 @@ void CatOneLoopHandler(void)
|
||||
rt_thread_delay(3000);
|
||||
CAT1_PWR_KEY_SET();
|
||||
CatSendErrCnt = 0;
|
||||
CatOne.RegisterDelayCnt = 0;
|
||||
CAT1_DBG_LOG("Cat1 Power Off!\r\n");
|
||||
CatOne.Cat1Status = CAT_ONE_IDEL;
|
||||
CatOne.ResetDelayCnt = CATONE_RESET_DELAY_TIME_MAX;
|
||||
|
||||
Reference in New Issue
Block a user