chore: 清理废弃模块代码
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
---
|
||||
name: add-debug-command
|
||||
description: 在 GateWay_Debug 模块中添加新的 Debug 调试命令(函数指针表 + 字符串匹配模式)
|
||||
source: auto-skill
|
||||
extracted_at: '2026-06-15T08:10:31.194Z'
|
||||
---
|
||||
|
||||
# 添加 Debug 调试命令
|
||||
|
||||
本项目的 Debug 命令系统位于 `Project/GateWay/source/Module/GateWay_Debug/DebugCmd.c`,采用**函数指针表 + 字符串匹配**模式。
|
||||
|
||||
## 修改步骤
|
||||
|
||||
### 1. 编写 handler 函数
|
||||
|
||||
在 `DebugCmd.c` 中添加函数,签名固定为 `void FuncName(int argc, char *argv[])`:
|
||||
|
||||
```c
|
||||
static void DebugCmdXxx(int argc, char *argv[])
|
||||
{
|
||||
DBG_LOG("\r\n");
|
||||
if(strcmp(argv[1], "?") == 0) {
|
||||
DBG_LOG("Debug Cmd: xxx\r\n");
|
||||
DBG_LOG(" brief --> 功能描述.\r\n\r\n");
|
||||
return;
|
||||
}
|
||||
// 实际逻辑...
|
||||
}
|
||||
```
|
||||
|
||||
**必须遵循的模式:**
|
||||
- 函数体第一行:`DBG_LOG("\r\n");`
|
||||
- `"?"` 帮助分支:打印命令名和 brief 说明
|
||||
- 若修改了 `ConfigPara`,调用 `WritePara()` 保存
|
||||
- 需要被外部引用时声明为 `void`,仅内部使用时声明为 `static void`
|
||||
|
||||
### 2. 注册到命令表
|
||||
|
||||
在文件末尾的 `DebugFun[]` 常量数组中添加一行:
|
||||
|
||||
```c
|
||||
const DBGFunType DebugFun[DEBUG_CMD_CNT] = {
|
||||
// ... 已有命令 ...
|
||||
"xxx", DebugCmdXxx,
|
||||
};
|
||||
```
|
||||
|
||||
**容量限制:** `DEBUG_CMD_CNT = 30`,添加前检查剩余空位(当前使用 28/30)。若超出需增大该宏。
|
||||
|
||||
### 3. 添加到 help 输出
|
||||
|
||||
在 `DebugCmdHelp` 函数末尾添加:
|
||||
|
||||
```c
|
||||
len = strlen("xxx ?\r\n");
|
||||
memcpy(Data, "xxx ?\r\n", len);
|
||||
DebugAnalyze(GateWay, Data, len);
|
||||
```
|
||||
|
||||
## 可用的关键 API
|
||||
|
||||
| 函数 | 头文件 | 用途 |
|
||||
|---|---|---|
|
||||
| `CatOneEthSendQueue(data, len)` | CatOneTask.h | 将载荷放入网络发送队列(需 `SvrRegFlag == true`) |
|
||||
| `CommUintOrgData(GateWay, CUPara, CUData, buf)` | Public.h | 组装通讯单元传感器数据包 |
|
||||
| `GateWayRegister(TxBuff)` | CatOneTask.h | 组装网关注册包,返回长度 |
|
||||
| `NetCommOrgData(GateWay, payload, outBuf)` | Public.h | 为载荷添加网络帧头(0x7A)+MAC+CRC |
|
||||
| `WritePara(data, len)` | (bsp) | 保存配置参数到 Flash |
|
||||
| `CatOneTriggerRegister()` | CatOneTask.h | 将 Cat1 状态机立即切换到注册状态 |
|
||||
| `ETHTriggerRegister()` | CatOneTask.h | 将以太网状态机立即切换到注册状态 |
|
||||
|
||||
## 可用的全局/extern 变量
|
||||
|
||||
| 变量 | 类型 | 来源 |
|
||||
|---|---|---|
|
||||
| `GateWay` | `static GateWayPara` | DebugCmd.c 内静态指针,指向网关参数 |
|
||||
| `SComm1Para` / `SComm2Para` | `SensorCommPara_t` | RS485Task.c 中定义,DebugCmd.c 已 extern |
|
||||
| `GateWay->SvrRegFlag` | `bool` | 服务器注册状态 |
|
||||
| `GateWay->ConfigPara` | `GWConfigPara_t` | 网关配置参数 |
|
||||
|
||||
## 注意事项
|
||||
|
||||
- `CatOne_t CatOne` 和 `CatOneEthTxBuff[]` 均为 CatOneTask.c 中的 **static** 变量,不能直接在 DebugCmd.c 中访问;应使用封装好的接口函数(如 `CatOneTriggerRegister()`、`ETHTriggerRegister()`)来操作状态机
|
||||
- 重新注册应:清 `GateWay->SvrRegFlag = false`,然后根据通信模式调用 `CatOneTriggerRegister()` 或 `ETHTriggerRegister()` 立即切换状态机到注册状态,而不是仅清标志位等待状态机自动检测
|
||||
- `CatOneEthSendQueue` 内部检查 `SvrRegFlag`,未注册时返回 `false`
|
||||
- 命令解析函数 `DebugAnalyze` 按 `" "` 分割参数,去除 `\r`,最多 10 个参数
|
||||
- `DEBUG_CMD_CNT = 30` 为命令容量上限,添加新命令前需检查当前使用量,若超出需将此宏增大(如改为31)
|
||||
- 若模块需要保存独立的配置参数(如YOXO1007网络参数),可在DebugCmd.c中定义static变量,并通过Flash读写函数持久化(参考`EthNetPara_t`和`WriteEthNetPara`的实现)
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
name: fix-yoxo1007-receive-data
|
||||
description: 修复YOXO1007以太网模块接收数据解析错误问题
|
||||
source: auto-skill
|
||||
extracted_at: '2026-06-17T04:30:00.000Z'
|
||||
---
|
||||
|
||||
# 修复 YOXO1007 以太网模块接收数据解析错误
|
||||
|
||||
## 问题现象
|
||||
|
||||
服务器已收到网关注册请求并响应,但网关端无法接收/解析服务器返回的数据。
|
||||
|
||||
## 根本原因
|
||||
|
||||
YOXO1007 模块在**透传模式**下发送的是**原始二进制数据**,不是 ASCII 格式的 hex 字符串。
|
||||
|
||||
原代码错误地使用了 `AsciiToHex` 函数进行格式转换:
|
||||
|
||||
```c
|
||||
// 错误代码 - CATONE 模式使用的 ASCII 转换不适用于 ETH 透传模式
|
||||
memset(HexData, 0x00, CatOneEthRxLen / 2);
|
||||
uint8_t ret = AsciiToHex(RxBuffTemp, HexData, CatOneEthRxLen);
|
||||
if(ret > 0)
|
||||
GateWay->SvrRevCallBack(GateWay, HexData, ret);
|
||||
```
|
||||
|
||||
这导致服务器返回的二进制数据被错误解析,回调函数无法正确处理。
|
||||
|
||||
## 修复方案
|
||||
|
||||
修改 `CatOneTask.c` 中 ETH 接收线程的数据处理逻辑,直接传递原始二进制数据:
|
||||
|
||||
```c
|
||||
// 修改后的正确代码
|
||||
CAT1_DBG_LOG("Eth Rev: len=%d\r\n", CatOneEthRxLen);
|
||||
/* YOXO1007模块在透传模式下发送原始二进制数据,直接传递 */
|
||||
if(CatOneEthRxLen > 0)
|
||||
GateWay->SvrRevCallBack(GateWay, (uint8_t *)CatOneEthRxBuff, CatOneEthRxLen);
|
||||
```
|
||||
|
||||
## 修改位置
|
||||
|
||||
`Project/GateWay/source/User/Src/CatOneTask.c` 中的 `CatOneRev_Thread_Entry` 函数内的 ETH 分支。
|
||||
|
||||
## 关键区别
|
||||
|
||||
| 模式 | 数据格式 | 解析方式 |
|
||||
|------|----------|----------|
|
||||
| CAT1 (4G) | ASCII 字符串 (AT 命令/响应) | 需要 AsciiToHex 转换 |
|
||||
| ETH (YOXO1007) | 原始二进制 (透传模式) | 直接传递,不转换 |
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 此修改仅影响 ETH 通信模式,CAT1 模式的 ASCII 解析逻辑保持不变
|
||||
- YOXO1007 模块配置参数使用二进制命令协议(识别流 ED F2 A3 56...),与数据透传是不同层面
|
||||
- 模块配置保存后重启会自动进入之前保存的工作模式,无需额外进入透传模式的命令
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
name: git-branch-cleanup
|
||||
description: 批量删除/重命名本地和远端 Git 分支,并同步远端仓库结构(含中文分支名、upstream 修复)
|
||||
source: auto-skill
|
||||
extracted_at: '2026-06-17T10:06:37.947Z'
|
||||
---
|
||||
|
||||
# Git 分支批量清理与重命名
|
||||
|
||||
## 适用场景
|
||||
需要删除多余的本地/远端分支、将分支重命名、并让远端结构与本地保持一致。
|
||||
|
||||
## 操作流程
|
||||
|
||||
### 1. 切换到安全分支
|
||||
```bash
|
||||
# 先 stash 未提交的更改
|
||||
git stash --include-untracked
|
||||
|
||||
# 如果有 untracked 文件冲突,使用 -f 强制切换
|
||||
git checkout -f master
|
||||
```
|
||||
|
||||
> **坑点**:中文分支名之间的文件差异可能产生大量 untracked 冲突(如 FatFS 文档等),
|
||||
> `git checkout` 会拒绝切换,需要 `-f` 强制切换,之后 `git stash pop` 恢复。
|
||||
|
||||
### 2. 删除本地分支
|
||||
```bash
|
||||
git branch -D "LAN口通讯"
|
||||
git branch -D "新版4G模块1"
|
||||
```
|
||||
|
||||
### 3. 重命名本地分支
|
||||
```bash
|
||||
git branch -m "旧版4G模块" develop
|
||||
```
|
||||
|
||||
### 4. 删除远端分支(每个远端都要操作)
|
||||
```bash
|
||||
# 一次性删除多个远端分支
|
||||
git push home --delete "LAN口通讯" "新版4G模块" "旧版4G模块"
|
||||
git push origin --delete "LAN口通讯" "新版4G模块" "旧版4G模块"
|
||||
```
|
||||
|
||||
> **注意**:远端可能认证失败(如内网地址不可达),先确认网络可达再操作。
|
||||
> 远端分支名可能与本地不完全一致(本地有 `新版4G模块1`,远端只有 `新版4G模块`)。
|
||||
|
||||
### 5. 强制推送重命名后的分支到远端
|
||||
```bash
|
||||
git push home develop --force
|
||||
git push origin develop --force
|
||||
```
|
||||
|
||||
### 6. 修复上游跟踪分支
|
||||
重命名后,分支仍跟踪旧的远端名(如 `origin/旧版4G模块`,已不存在):
|
||||
```bash
|
||||
git branch --set-upstream-to=origin/develop develop
|
||||
```
|
||||
|
||||
### 7. 恢复工作内容并切回开发分支
|
||||
```bash
|
||||
git checkout develop
|
||||
git stash pop
|
||||
```
|
||||
|
||||
### 8. 验证最终结构
|
||||
```bash
|
||||
git fetch --all --prune
|
||||
git branch -a
|
||||
```
|
||||
|
||||
## 常见问题
|
||||
|
||||
| 问题 | 解决方案 |
|
||||
|------|----------|
|
||||
| checkout 报 untracked files 冲突 | `git checkout -f <branch>` |
|
||||
| 远端认证失败 | 检查网络/VPN,确认远端地址可达 |
|
||||
| 重命名后 upstream 指向已删除的远端分支 | `git branch --set-upstream-to=origin/<new-name> <branch>` |
|
||||
| 中文分支名在命令行中需加引号 | `git branch -D "旧版4G模块"` |
|
||||
Reference in New Issue
Block a user