feat: 添加ota相关接口
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
syntax = "proto3";
|
||||
package laserweld.ota;
|
||||
|
||||
option csharp_namespace = "Laserweld.Protos.Ota";
|
||||
|
||||
// ===== Java / Android 必须的配置 =====
|
||||
option java_multiple_files = true;
|
||||
option java_package = "com.lxsoft.weld.grpc";
|
||||
option java_outer_classname = "OtaProto";
|
||||
|
||||
import "common.proto";
|
||||
|
||||
// OTA 服务
|
||||
// 当前只包含上传前文件信息登记和文件分片上传
|
||||
service OtaService {
|
||||
// 更新当前待上传文件的信息
|
||||
// 成功后服务端允许开始 UploadPackage
|
||||
rpc UpdateFileInfo(UpdateFileInfoRequest) returns (laserweld.common.Result);
|
||||
|
||||
// 上传 OTA 文件分片
|
||||
// 客户端流式上传 服务端在流结束后返回最终结果
|
||||
rpc UploadPackage(stream UploadPackageRequest) returns (laserweld.common.Result);
|
||||
|
||||
// 订阅上传状态
|
||||
// 服务端在上传状态变化时主动推送
|
||||
rpc SubscribeUploadStatus(SubscribeUploadStatusRequest) returns (stream UploadStatusUpdate);
|
||||
|
||||
// 开始升级
|
||||
// 文件上传并校验通过后 由客户端显式触发升级
|
||||
rpc StartUpgrade(StartUpgradeRequest) returns (laserweld.common.Result);
|
||||
}
|
||||
|
||||
// 文件级信息
|
||||
// 在真正上传分片前先登记当前文件的描述信息
|
||||
message UpdateFileInfoRequest {
|
||||
string file_name = 1; // 文件名
|
||||
int64 file_size = 2; // 文件总字节数
|
||||
int32 total_chunks = 3; // 文件总块数
|
||||
string file_md5 = 4; // 文件整包 MD5
|
||||
}
|
||||
|
||||
// 文件分片
|
||||
// 每次流消息传一块
|
||||
message UploadPackageRequest {
|
||||
int32 chunk_index = 1; // 当前块序号 从 0 开始
|
||||
int64 offset = 2; // 当前块在整文件中的起始偏移
|
||||
bytes chunk_data = 3; // 当前块数据
|
||||
}
|
||||
|
||||
// 上传状态订阅请求
|
||||
message SubscribeUploadStatusRequest {}
|
||||
|
||||
// 上传状态更新
|
||||
// status_code 由业务自行扩展定义
|
||||
message UploadStatusUpdate {
|
||||
int32 status_code = 1; // 上传状态码
|
||||
string message = 2; // 状态说明
|
||||
}
|
||||
|
||||
// 开始升级请求
|
||||
message StartUpgradeRequest {}
|
||||
Reference in New Issue
Block a user