更新proto
This commit is contained in:
@@ -8,13 +8,13 @@ http://git.huangwc.com/pig/pig-farm-controller/issues/71
|
|||||||
|
|
||||||
# 开发计划
|
# 开发计划
|
||||||
|
|
||||||
|
## Lora 监听逻辑重构
|
||||||
|
|
||||||
|
- [x] [Lora逻辑重构](design/ota-upgrade-and-log-monitoring/lora_refactoring_plan.md)
|
||||||
|
|
||||||
## OTA 升级
|
## OTA 升级
|
||||||
|
|
||||||
- [x] 增加一个proto对象, 用于封装ota升级包
|
- [x] 增加一个proto对象, 用于封装ota升级包
|
||||||
- [x] 区域主控增加版本号
|
- [x] 区域主控增加版本号
|
||||||
- [x] 增加ping指令并获取带版本号的响应
|
- [x] 增加ping指令并获取带版本号的响应
|
||||||
- [ ] [实现ota升级逻辑](design/ota-upgrade-and-log-monitoring/ota_upgrade_solution.md)
|
- [ ] [实现ota升级逻辑](design/ota-upgrade-and-log-monitoring/ota_upgrade_solution.md)
|
||||||
|
|
||||||
## Lora 监听逻辑重构
|
|
||||||
|
|
||||||
- [x] [Lora逻辑重构](design/ota-upgrade-and-log-monitoring/lora_refactoring_plan.md)
|
|
||||||
|
|||||||
@@ -93,7 +93,6 @@ message PrepareUpdateReq {
|
|||||||
message RequestFile {
|
message RequestFile {
|
||||||
string task_id = 1; // 升级任务ID
|
string task_id = 1; // 升级任务ID
|
||||||
string filepath = 2; // 请求的文件路径 (例如 "/manifest.json" 或 "/main.py")
|
string filepath = 2; // 请求的文件路径 (例如 "/manifest.json" 或 "/main.py")
|
||||||
uint32 retry_count = 3; // 设备请求该文件的重试次数
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// FileResponse: 平台响应设备请求,发送单个文件的完整内容
|
// FileResponse: 平台响应设备请求,发送单个文件的完整内容
|
||||||
@@ -106,9 +105,8 @@ message FileResponse {
|
|||||||
|
|
||||||
// UpdateStatusReport: 设备向平台报告升级状态
|
// UpdateStatusReport: 设备向平台报告升级状态
|
||||||
message UpdateStatusReport {
|
message UpdateStatusReport {
|
||||||
string device_id = 1; // 设备ID
|
string task_id = 1; // 升级任务ID
|
||||||
string task_id = 2; // 升级任务ID
|
string current_version = 2; // 操作完成后的当前版本
|
||||||
string current_version = 3; // 操作完成后的当前版本
|
|
||||||
enum Status {
|
enum Status {
|
||||||
STATUS_UNKNOWN = 0;
|
STATUS_UNKNOWN = 0;
|
||||||
|
|
||||||
@@ -121,9 +119,9 @@ message UpdateStatusReport {
|
|||||||
// --- 平台推断的状态 (数据库记录用) ---
|
// --- 平台推断的状态 (数据库记录用) ---
|
||||||
FAILED_TIMEOUT = 5; // 平台在超时后仍未收到SUCCESS报告,将任务标记为此状态
|
FAILED_TIMEOUT = 5; // 平台在超时后仍未收到SUCCESS报告,将任务标记为此状态
|
||||||
}
|
}
|
||||||
Status status = 4; // 升级的最终状态
|
Status status = 3; // 升级的最终状态
|
||||||
string error_message = 6; // 人类可读的详细错误信息
|
string error_message = 4; // 人类可读的详细错误信息
|
||||||
string failed_file = 7; // 失败时关联的文件路径 (可选)
|
string failed_file = 5; // 失败时关联的文件路径 (可选)
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -4,24 +4,6 @@ package device;
|
|||||||
|
|
||||||
option go_package = "internal/domain/device/proto";
|
option go_package = "internal/domain/device/proto";
|
||||||
|
|
||||||
// --- 日志相关 ---
|
|
||||||
|
|
||||||
// LogLevel 定义了日志的严重级别。
|
|
||||||
enum LogLevel {
|
|
||||||
LOG_LEVEL_UNSPECIFIED = 0; // 未指定
|
|
||||||
DEBUG = 1; // 调试信息
|
|
||||||
INFO = 2; // 普通信息
|
|
||||||
WARN = 3; // 警告
|
|
||||||
ERROR = 4; // 错误
|
|
||||||
}
|
|
||||||
|
|
||||||
// LogEntry 代表一条由设备生成的日志记录。
|
|
||||||
message LogEntry {
|
|
||||||
int64 timestamp_unix = 1; // 日志生成的Unix时间戳 (秒)
|
|
||||||
LogLevel level = 2; // 日志级别
|
|
||||||
string message = 3; // 日志内容
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- 核心指令与数据结构 ---
|
// --- 核心指令与数据结构 ---
|
||||||
|
|
||||||
// 平台生成的原始485指令,单片机直接发送到总线
|
// 平台生成的原始485指令,单片机直接发送到总线
|
||||||
@@ -47,32 +29,6 @@ message CollectResult {
|
|||||||
repeated float values = 2; // 按预定顺序排列的采集值
|
repeated float values = 2; // 按预定顺序排列的采集值
|
||||||
}
|
}
|
||||||
|
|
||||||
// OTA(空中下载)升级指令,包含完整的固件包。
|
|
||||||
message OtaUpgradeCommand {
|
|
||||||
string firmware_version = 1; // 目标固件版本, e.g., "v1.2.3"
|
|
||||||
string firmware_hash = 2; // 固件包的SHA-256哈希值,用于完整性校验
|
|
||||||
bytes firmware_package = 3; // 完整的固件二进制文件
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设备端执行OTA升级后的状态报告 (上行)。
|
|
||||||
message OtaUpgradeStatus {
|
|
||||||
// 状态码: 0=成功, 1=哈希校验失败, 2=烧录失败, 3=空间不足, 99=其他未知错误
|
|
||||||
int32 status_code = 1;
|
|
||||||
// 设备当前运行的固件版本 (升级后或升级失败时)
|
|
||||||
string current_firmware_version = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 控制设备日志上传的指令 (下行)。
|
|
||||||
message ControlLogUploadCommand {
|
|
||||||
bool enable = 1; // true = 开始上传, false = 停止上传
|
|
||||||
uint32 duration_seconds = 2; // 指定上传持续时间(秒)。
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设备用于向平台批量上传日志的请求 (上行)。
|
|
||||||
message LogUploadRequest {
|
|
||||||
repeated LogEntry entries = 1; // 一批日志条目
|
|
||||||
}
|
|
||||||
|
|
||||||
// 平台向设备发送的Ping指令,用于检查存活性。
|
// 平台向设备发送的Ping指令,用于检查存活性。
|
||||||
message Ping {
|
message Ping {
|
||||||
// 可以留空,指令本身即代表意图
|
// 可以留空,指令本身即代表意图
|
||||||
@@ -85,6 +41,48 @@ message Pong {
|
|||||||
// 可以扩展更多状态, e.g., int32 uptime_seconds = 2;
|
// 可以扩展更多状态, e.g., int32 uptime_seconds = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- OTA 升级相关 ---
|
||||||
|
|
||||||
|
// PrepareUpdateReq: 平台发送给设备,通知设备准备开始 OTA 升级 (下行)
|
||||||
|
message PrepareUpdateReq {
|
||||||
|
string version = 1; // 新固件版本号
|
||||||
|
string task_id = 2; // 升级任务唯一ID
|
||||||
|
string manifest_md5 = 3; // 清单文件的 MD5 校验和,用于设备初步校验清单文件完整性
|
||||||
|
}
|
||||||
|
|
||||||
|
// RequestFile: 设备向平台请求特定文件 (包括清单文件和固件文件) (上行)
|
||||||
|
message RequestFile {
|
||||||
|
string task_id = 1; // 升级任务ID
|
||||||
|
string filepath = 2; // 请求的文件路径 (例如 "/manifest.json" 或 "/main.py")
|
||||||
|
}
|
||||||
|
|
||||||
|
// FileResponse: 平台响应设备请求,发送单个文件的完整内容 (下行)
|
||||||
|
// LoRa 传输层会自动处理分片和重组,因此应用层可以直接发送完整的单个文件内容
|
||||||
|
message FileResponse {
|
||||||
|
string task_id = 1; // 升级任务ID
|
||||||
|
string filepath = 2; // 设备上的目标路径 (例如 "/manifest.json" 或 "/main.py")
|
||||||
|
bytes content = 3; // 文件的完整内容
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateStatusReport: 设备向平台报告升级状态 (上行)
|
||||||
|
message UpdateStatusReport {
|
||||||
|
string task_id = 1; // 升级任务ID
|
||||||
|
string current_version = 2; // 操作完成后的当前版本
|
||||||
|
enum Status {
|
||||||
|
STATUS_UNSPECIFIED = 0; // 未指定,protobuf3 要求枚举从0开始
|
||||||
|
SUCCESS = 1; // 升级成功,新固件已运行
|
||||||
|
SUCCESS_ALREADY_UP_TO_DATE = 2; // 版本已是最新,未执行升级
|
||||||
|
FAILED_PRE_CHECK = 3; // 升级前检查失败 (例如拒绝降级、准备分区失败)
|
||||||
|
FAILED_MANIFEST_VERIFY = 4; // 清单文件下载或校验失败
|
||||||
|
FAILED_DOWNLOAD = 5; // 固件文件下载或校验失败
|
||||||
|
FAILED_ROLLED_BACK = 6; // 新固件启动失败,已自动回滚
|
||||||
|
FAILED_TIMEOUT = 7; // 平台在超时后仍未收到SUCCESS报告,将任务标记为此状态 (平台推断)
|
||||||
|
}
|
||||||
|
Status status = 3; // 升级的最终状态
|
||||||
|
string error_message = 4; // 人类可读的详细错误信息
|
||||||
|
string failed_file = 5; // 失败时关联的文件路径 (可选)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// --- 顶层指令包装器 ---
|
// --- 顶层指令包装器 ---
|
||||||
|
|
||||||
@@ -95,14 +93,14 @@ message Instruction {
|
|||||||
// --- 下行指令 (平台 -> 设备) ---
|
// --- 下行指令 (平台 -> 设备) ---
|
||||||
Raw485Command raw_485_command = 1;
|
Raw485Command raw_485_command = 1;
|
||||||
BatchCollectCommand batch_collect_command = 2;
|
BatchCollectCommand batch_collect_command = 2;
|
||||||
OtaUpgradeCommand ota_upgrade_command = 3;
|
Ping ping = 3;
|
||||||
ControlLogUploadCommand control_log_upload_command = 4;
|
PrepareUpdateReq prepare_update_req = 4;
|
||||||
Ping ping = 6;
|
FileResponse file_response = 5;
|
||||||
|
|
||||||
// --- 上行数据 (设备 -> 平台) ---
|
// --- 上行数据 (设备 -> 平台) ---
|
||||||
CollectResult collect_result = 101;
|
CollectResult collect_result = 101;
|
||||||
OtaUpgradeStatus ota_upgrade_status = 102;
|
Pong pong = 102;
|
||||||
LogUploadRequest log_upload_request = 103;
|
RequestFile request_file = 103;
|
||||||
Pong pong = 104;
|
UpdateStatusReport update_status_report = 104;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user