feat(debug): 新增 up 上传网关状态和 reg 重新注册命令

This commit is contained in:
2026-06-15 18:38:41 +08:00
parent 8052721c21
commit 626a486945
4 changed files with 47 additions and 35 deletions
+3 -1
View File
@@ -87,7 +87,7 @@ typedef enum {
}CatOneNetType_m; }CatOneNetType_m;
typedef struct { typedef struct {
CatOneStatus_m Status; CatOneStatus_m Cat1Status;
CatOneStatus_m NextStatus; CatOneStatus_m NextStatus;
CatOneRetStatus_m ATCmdRet; CatOneRetStatus_m ATCmdRet;
uint32_t CatOne1mSDelayCnt; uint32_t CatOne1mSDelayCnt;
@@ -131,6 +131,8 @@ void CatOneGetLocationInfo(int *Longitude, int *Latitude);
void CatOneGetIMEIAndSIM(char *Imei, char *Sim); void CatOneGetIMEIAndSIM(char *Imei, char *Sim);
bool CatOneGetStatus(void); bool CatOneGetStatus(void);
bool CatOneEthSendQueue(uint8_t *sData, uint16_t sLen); bool CatOneEthSendQueue(uint8_t *sData, uint16_t sLen);
void CatOneTriggerRegister(void);
void ETHTriggerRegister(void);
void CatOne_Eth_Thread_Entry(void *parameter); void CatOne_Eth_Thread_Entry(void *parameter);
void EthRxOverhandler(void); void EthRxOverhandler(void);
void CatReadImeiOrSim(char *Imei, char *Sim); void CatReadImeiOrSim(char *Imei, char *Sim);
+41 -31
View File
@@ -100,10 +100,10 @@ const CatOneATCMD_m CatOneModeSetCmdArray[] = {
//{ //{
// rt_err_t result; // rt_err_t result;
// //
// if(CatOne.Status != CAT_ONE_IDEL && CatOne.Status != CAT_ONE_WAIT_SEND) // if(CatOne.Cat1Status != CAT_ONE_IDEL && CatOne.Cat1Status != CAT_ONE_WAIT_SEND)
// return CAT_ONE_RET_ERR; // return CAT_ONE_RET_ERR;
// //
// //CatOne.Status = CAT_ONE_RESET; // //CatOne.Cat1Status = CAT_ONE_RESET;
// result = rt_mq_send(CatOneRev_MQ, sData, sLen); // result = rt_mq_send(CatOneRev_MQ, sData, sLen);
// if(result != RT_EOK) { // if(result != RT_EOK) {
// CAT1_DBG_LOG("CatOne MQ Send ERR...\r\n"); // CAT1_DBG_LOG("CatOne MQ Send ERR...\r\n");
@@ -115,7 +115,7 @@ const CatOneATCMD_m CatOneModeSetCmdArray[] = {
void CatOneStop(void) void CatOneStop(void)
{ {
CatOne.Status = CAT_ONE_OFF; CatOne.Cat1Status = CAT_ONE_OFF;
} }
void ETHStop(void) void ETHStop(void)
@@ -149,14 +149,14 @@ void CatOneGetIMEIAndSIM(char *Imei, char *Sim)
//返回true-busy, false-Idle //返回true-busy, false-Idle
bool CatOneGetStatus(void) bool CatOneGetStatus(void)
{ {
if(CatOne.Status == CAT_ONE_IDEL) if(CatOne.Cat1Status == CAT_ONE_IDEL)
return false; return false;
return true; return true;
} }
void CatOneReset(void) void CatOneReset(void)
{ {
CatOne.Status = CAT_ONE_RESET; CatOne.Cat1Status = CAT_ONE_RESET;
} }
void CatTimeSync(char *Data) void CatTimeSync(char *Data)
@@ -272,7 +272,7 @@ void CatOneAtCmdAnalyze(char *RxBuff)
case CAT_ONE_LIPOPEN: case CAT_ONE_LIPOPEN:
if(strstr(RxBuff, "OK") != NULL) { if(strstr(RxBuff, "OK") != NULL) {
CatOne.Status = CatOne.NextStatus; CatOne.Cat1Status = CatOne.NextStatus;
CatOne.CatOne1mSDelayCnt = 10 * 1000; CatOne.CatOne1mSDelayCnt = 10 * 1000;
return; return;
} }
@@ -280,13 +280,13 @@ void CatOneAtCmdAnalyze(char *RxBuff)
if(strstr(RxBuff, "LIPOPEN: 0,1") != NULL) { if(strstr(RxBuff, "LIPOPEN: 0,1") != NULL) {
CAT1_DBG_LOG("Cat1 successfully to connect to the server.\r\n\r\n"); CAT1_DBG_LOG("Cat1 successfully to connect to the server.\r\n\r\n");
CatOne.TcpConnFlag = true; CatOne.TcpConnFlag = true;
CatOne.Status = CatOne.NextStatus; CatOne.Cat1Status = CatOne.NextStatus;
rt_sem_release(CatOneRev_Sem); rt_sem_release(CatOneRev_Sem);
} }
else if(strstr(RxBuff, "LIPOPEN: 0,0") != NULL) { else if(strstr(RxBuff, "LIPOPEN: 0,0") != NULL) {
CAT1_DBG_LOG("Cat1 failed to connect to the server.\r\n\r\n"); CAT1_DBG_LOG("Cat1 failed to connect to the server.\r\n\r\n");
CatOne.TcpConnFlag = false; CatOne.TcpConnFlag = false;
CatOne.Status = CAT_ONE_OFF; CatOne.Cat1Status = CAT_ONE_OFF;
} }
return; return;
} }
@@ -338,7 +338,7 @@ void CatOneAtCmdAnalyze(char *RxBuff)
if(strstr(p, "+LIPURC: 0,0") != NULL) { if(strstr(p, "+LIPURC: 0,0") != NULL) {
CAT1_DBG_LOG("TCP connection disconnected.\r\n\r\n"); CAT1_DBG_LOG("TCP connection disconnected.\r\n\r\n");
CatOne.TcpConnFlag = false; CatOne.TcpConnFlag = false;
CatOne.Status = CAT_ONE_OFF; CatOne.Cat1Status = CAT_ONE_OFF;
return; return;
} }
@@ -354,7 +354,7 @@ void CatOneAtCmdAnalyze(char *RxBuff)
else { else {
return; return;
} }
//CatOne.Status = CAT_ONE_CLOSE_TCP; //CatOne.Cat1Status = CAT_ONE_CLOSE_TCP;
rt_sem_release(CatOneRev_Sem);//接收任务 rt_sem_release(CatOneRev_Sem);//接收任务
return; return;
} }
@@ -363,7 +363,7 @@ void CatOneAtCmdAnalyze(char *RxBuff)
} }
if(CatOne.ATCmdRet == CAT_ONE_RET_OK) { if(CatOne.ATCmdRet == CAT_ONE_RET_OK) {
CatOne.Status = CatOne.NextStatus; CatOne.Cat1Status = CatOne.NextStatus;
if(CatOne.AtCmd == CAT_ONE_LIPSEND) if(CatOne.AtCmd == CAT_ONE_LIPSEND)
CatOne.CatOne1mSDelayCnt = 5 * 1000; CatOne.CatOne1mSDelayCnt = 5 * 1000;
else else
@@ -396,7 +396,7 @@ void CatOneAtCmdSend(CatOneATCMD_m Cmd, uint32_t Dly, CatOneStatus_m NextStatus)
EthRevTimeOutCnt = 0; EthRevTimeOutCnt = 0;
EthOrCat1UartSend((uint8_t *)CatOne.CatOneSendBuff, strlen(CatOne.CatOneSendBuff)); EthOrCat1UartSend((uint8_t *)CatOne.CatOneSendBuff, strlen(CatOne.CatOneSendBuff));
CatOne.CatOne1mSDelayCnt = Dly; CatOne.CatOne1mSDelayCnt = Dly;
CatOne.Status = CAT_ONE_WAIT_REV; CatOne.Cat1Status = CAT_ONE_WAIT_REV;
CatOne.NextStatus = NextStatus; CatOne.NextStatus = NextStatus;
} }
@@ -440,14 +440,14 @@ void CatOneLoopHandler(void)
uint16_t ret; uint16_t ret;
static uint8_t Cat1RevErrCnt = 0; static uint8_t Cat1RevErrCnt = 0;
switch(CatOne.Status){ switch(CatOne.Cat1Status){
case CAT_ONE_IDEL: case CAT_ONE_IDEL:
rt_thread_delay(1); rt_thread_delay(1);
if(CatOne.ResetDelayCnt > 0) { if(CatOne.ResetDelayCnt > 0) {
CatOne.ResetDelayCnt--; CatOne.ResetDelayCnt--;
} }
else { else {
CatOne.Status = CAT_ONE_RESET; CatOne.Cat1Status = CAT_ONE_RESET;
} }
break; break;
@@ -462,9 +462,9 @@ void CatOneLoopHandler(void)
else { //3次错误,关机 else { //3次错误,关机
CAT1_DBG_LOG("Cat1 error, Close!\r\n"); CAT1_DBG_LOG("Cat1 error, Close!\r\n");
if(CatOne.AtCmd == CAT_ONE_LIPSEND) if(CatOne.AtCmd == CAT_ONE_LIPSEND)
CatOne.Status = CAT_ONE_CLOSE_TCP; CatOne.Cat1Status = CAT_ONE_CLOSE_TCP;
else else
CatOne.Status = CAT_ONE_OFF; CatOne.Cat1Status = CAT_ONE_OFF;
} }
} }
break; break;
@@ -479,7 +479,7 @@ void CatOneLoopHandler(void)
CatOneAtCmdSend(CatOneModeSetCmdArray[CatOne.AtCmdIdx], 1000, CAT_ONE_INIT); CatOneAtCmdSend(CatOneModeSetCmdArray[CatOne.AtCmdIdx], 1000, CAT_ONE_INIT);
} }
else { else {
CatOne.Status = CAT_ONE_TCP_CONN; CatOne.Cat1Status = CAT_ONE_TCP_CONN;
CatOne.CatOne1mSDelayCnt = 0; CatOne.CatOne1mSDelayCnt = 0;
CatOne.AtCmdIdx = 0; CatOne.AtCmdIdx = 0;
CatOne.AtCmd = CAT_ONE_AT_NULL; CatOne.AtCmd = CAT_ONE_AT_NULL;
@@ -493,39 +493,39 @@ void CatOneLoopHandler(void)
case CAT_ONE_WAIT_CONN: case CAT_ONE_WAIT_CONN:
if(CatOne.TcpConnFlag) { if(CatOne.TcpConnFlag) {
if(CatOne.GateWay->SvrRegFlag == false) if(CatOne.GateWay->SvrRegFlag == false)
CatOne.Status = CAT_ONE_REG_SVR; CatOne.Cat1Status = CAT_ONE_REG_SVR;
else else
CatOne.Status = CAT_ONE_WAIT_SEND; CatOne.Cat1Status = CAT_ONE_WAIT_SEND;
} }
break; break;
case CAT_ONE_REG_SVR: //注册服务器 case CAT_ONE_REG_SVR: //注册服务器
ret = GateWayRegister(CatOneEthTxBuff); ret = GateWayRegister(CatOneEthTxBuff);
rt_mq_send(CatOne.GateWay->NetSendData_MQ, CatOneEthTxBuff, ret); rt_mq_send(CatOne.GateWay->NetSendData_MQ, CatOneEthTxBuff, ret);
CatOne.Status = CAT_ONE_WAIT_SEND; CatOne.Cat1Status = CAT_ONE_WAIT_SEND;
break; break;
case CAT_ONE_WAIT_SEND: case CAT_ONE_WAIT_SEND:
result = rt_mq_recv(CatOne.GateWay->NetSendData_MQ, Payload, CAT_ONE_REV_LEN_MAX, 1000); result = rt_mq_recv(CatOne.GateWay->NetSendData_MQ, Payload, CAT_ONE_REV_LEN_MAX, 1000);
if(result == RT_EOK) { if(result == RT_EOK) {
CatOneEthTxLen = NetCommOrgData(CatOne.GateWay, Payload, CatOneEthTxBuff); CatOneEthTxLen = NetCommOrgData(CatOne.GateWay, Payload, CatOneEthTxBuff);
CatOne.Status = CAT_ONE_SEND_DATA; CatOne.Cat1Status = CAT_ONE_SEND_DATA;
} }
else { else {
if(CatOne.Status == CAT_ONE_RESET || CatOne.Status == CAT_ONE_OFF) //外部命令执行,状态改变 if(CatOne.Cat1Status == CAT_ONE_RESET || CatOne.Cat1Status == CAT_ONE_OFF) //外部命令执行,状态改变
return; return;
if(!CatOne.TcpConnFlag) { if(!CatOne.TcpConnFlag) {
CatOne.Status = CAT_ONE_OFF; CatOne.Cat1Status = CAT_ONE_OFF;
} }
else { else {
CatSendErrCnt++; CatSendErrCnt++;
if(CatSendErrCnt > CAT1_ERR_RESET_DLY_MAX) { if(CatSendErrCnt > CAT1_ERR_RESET_DLY_MAX) {
CatOne.Status = CAT_ONE_RESET; CatOne.Cat1Status = CAT_ONE_RESET;
CAT1_DBG_LOG("Cat1 has no data for a long time, Reset!\r\n"); CAT1_DBG_LOG("Cat1 has no data for a long time, Reset!\r\n");
CatSendErrCnt = 0; CatSendErrCnt = 0;
break; break;
} }
CatOne.Status = CAT_ONE_WAIT_SEND; CatOne.Cat1Status = CAT_ONE_WAIT_SEND;
} }
} }
break; break;
@@ -534,7 +534,7 @@ void CatOneLoopHandler(void)
CatOne.AtCmdResendCnt = 3; CatOne.AtCmdResendCnt = 3;
Cat1RevErrCnt++; Cat1RevErrCnt++;
if(Cat1RevErrCnt > 10) { if(Cat1RevErrCnt > 10) {
CatOne.Status = CAT_ONE_RESET; CatOne.Cat1Status = CAT_ONE_RESET;
CAT1_DBG_LOG("Cat1 has no receive data for a long time, Reset!\r\n"); CAT1_DBG_LOG("Cat1 has no receive data for a long time, Reset!\r\n");
Cat1RevErrCnt = 0; Cat1RevErrCnt = 0;
break; break;
@@ -554,9 +554,9 @@ void CatOneLoopHandler(void)
Cat1RevErrCnt = 0; Cat1RevErrCnt = 0;
} }
if(CatOne.GateWay->SvrRegFlag == false) //设备没注册,关闭4G,等待下一次重新注册 if(CatOne.GateWay->SvrRegFlag == false) //设备没注册,关闭4G,等待下一次重新注册
CatOne.Status = CAT_ONE_OFF; CatOne.Cat1Status = CAT_ONE_OFF;
else else
CatOne.Status = CAT_ONE_WAIT_SEND; CatOne.Cat1Status = CAT_ONE_WAIT_SEND;
break; break;
case CAT_ONE_CLOSE_TCP: case CAT_ONE_CLOSE_TCP:
@@ -572,7 +572,7 @@ void CatOneLoopHandler(void)
CAT1_PWR_KEY_SET(); CAT1_PWR_KEY_SET();
CatSendErrCnt = 0; CatSendErrCnt = 0;
CAT1_DBG_LOG("Cat1 Power Off!\r\n"); CAT1_DBG_LOG("Cat1 Power Off!\r\n");
CatOne.Status = CAT_ONE_IDEL; CatOne.Cat1Status = CAT_ONE_IDEL;
CatOne.ResetDelayCnt = CATONE_RESET_DELAY_TIME_MAX; CatOne.ResetDelayCnt = CATONE_RESET_DELAY_TIME_MAX;
break; break;
@@ -587,7 +587,7 @@ void CatOneLoopHandler(void)
CAT1_PWR_KEY_CLR(); CAT1_PWR_KEY_CLR();
rt_thread_delay(1000); rt_thread_delay(1000);
CAT1_PWR_KEY_SET(); CAT1_PWR_KEY_SET();
CatOne.Status = CAT_ONE_INIT; CatOne.Cat1Status = CAT_ONE_INIT;
CatOne.AtCmdIdx = 0; CatOne.AtCmdIdx = 0;
rt_thread_delay(1000); rt_thread_delay(1000);
CatOne.GateWay->BatteryReadDlyCnt = 60; CatOne.GateWay->BatteryReadDlyCnt = 60;
@@ -750,7 +750,7 @@ bool CatOneEthSendQueue(uint8_t *sData, uint16_t sLen)
static void CatOneInit(GateWayPara GateWay) static void CatOneInit(GateWayPara GateWay)
{ {
memset(&CatOne, 0x00, sizeof(CatOne_t)); memset(&CatOne, 0x00, sizeof(CatOne_t));
CatOne.Status = CAT_ONE_RESET; CatOne.Cat1Status = CAT_ONE_RESET;
CatOne.GateWay = GateWay; CatOne.GateWay = GateWay;
CatOne.CatOneRevCallBack = GateWay->SvrRevCallBack; CatOne.CatOneRevCallBack = GateWay->SvrRevCallBack;
} }
@@ -878,3 +878,13 @@ void CatReadImeiOrSim(char *Imei, char *Sim)
Sim[20] = 0x00; Sim[20] = 0x00;
} }
} }
void CatOneTriggerRegister(void)
{
CatOne.Cat1Status = CAT_ONE_REG_SVR;
}
void ETHTriggerRegister(void)
{
CatOne.EthStatus = ETH_REG_SVR;
}
+2 -2
View File
@@ -280,8 +280,8 @@ void CommUnitCmdSend(GateWayPara GateWay, uint8_t *CommUnitMac, CommUnitCmd_m Cm
/***************************************************************************************** /*****************************************************************************************
* 函数名称: CommUintOrgData * 函数名称: CommUintOrgData
* 功能描述: 上传传感器数据函数 * 功能描述: 上传传感器数据函数
* 参 数: GWMac,网关mac地址 * 参 数: CUPara, 通讯单元参数
CUPara, 通讯单元 CUData, 通讯单元数
sData, 数据入口 sData, 数据入口
* 返 回 值: 数据长度 * 返 回 值: 数据长度
*****************************************************************************************/ *****************************************************************************************/