diff --git a/Project/GateWay/MDK/RTE/RTOS/rtconfig.h b/Project/GateWay/MDK/RTE/RTOS/rtconfig.h index 0aa25fe..6353a58 100644 --- a/Project/GateWay/MDK/RTE/RTOS/rtconfig.h +++ b/Project/GateWay/MDK/RTE/RTOS/rtconfig.h @@ -27,7 +27,7 @@ // the stack size of main thread<1-4086> // Default: 512 -#define RT_MAIN_THREAD_STACK_SIZE 512 +#define RT_MAIN_THREAD_STACK_SIZE 512 //4096 // diff --git a/Project/GateWay/source/User/Inc/bsp.h b/Project/GateWay/source/User/Inc/bsp.h index 2722cc3..b012fd9 100644 --- a/Project/GateWay/source/User/Inc/bsp.h +++ b/Project/GateWay/source/User/Inc/bsp.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) diff --git a/Project/GateWay/source/User/Inc/main.h b/Project/GateWay/source/User/Inc/main.h index c0f4740..e911463 100644 --- a/Project/GateWay/source/User/Inc/main.h +++ b/Project/GateWay/source/User/Inc/main.h @@ -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; diff --git a/Project/GateWay/source/User/Src/CatOneTask.c b/Project/GateWay/source/User/Src/CatOneTask.c index 4b29acf..55146f2 100644 --- a/Project/GateWay/source/User/Src/CatOneTask.c +++ b/Project/GateWay/source/User/Src/CatOneTask.c @@ -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;