// 三青鸟SDK通信协议——定义

syntax = "proto3";

// 包名
package sanqingniaopb;

// 引入公共消息定义
import "message_common.proto";

// 生成的go文件包名
option go_package = ".;sanqingniaopb";
// 生成的C#文件命名空间
option csharp_namespace = "Sixelp.SanQingNiaoPb";
// 生成Java文件的包名
option java_multiple_files = true;
option java_package = "com.sixelp.sanqingniaopb";

/******************************** 版本信息相关接口 ****************************************/

// GetVersionParams 获取版本信息
message GetVersionParams {}

// GetLatestVersionReply 获取最新版本
message GetLatestVersionParams {}

/******************************** 高级配置相关接口 ****************************************/

// AdvancedConfigGetParams 高级配置-获取
message AdvancedConfigGetParams {
	// 配置项键名【必填】
	AdvancedConfigKey key = 1;
}

// AdvancedConfigSetParams 高级配置-修改
message AdvancedConfigSetParams {
	// 配置项键名【必填】
	AdvancedConfigKey key = 1;
	// 值字段【必填】
	oneof value {
		// 双精度浮点型值
		double doubleVal = 2;
		// 单精度浮点型值
		float floatVal = 3;
		// 有符号32位整型值
		int32 int32Val = 4;
		// 有符号64位整型值
		int64 int64Val = 5;
		// 无符号32位整型值
		uint32 uint32Val = 6;
		// 无符号64位整型值
		uint64 uint64Val = 7;
		// 布尔型值
		bool boolVal = 8;
		// 字符串型值
		string stringVal = 9;
		// 字节切片/字节数组型值
		bytes bytesVal = 10;
	};
}

/******************************** 相机管理相关接口 ****************************************/

// CameraEnumParams 相机-枚举
message CameraEnumParams {}

// CameraChangeParams 相机-切换
message CameraChangeParams {
	// 要使用的相机ID【必填】
	string id = 1;
	// 要使用的相机图像分辨率【必填】
	CameraResolutionInfo resolutionInfo = 2;
}

// CameraFrameParams 相机-图像帧
message CameraFrameParams {}

// CameraDetectRangeGetParams 相机-识别区域获取
message CameraDetectRangeGetParams {
	// 最大渲染宽度（单位：像素）【必填】
	uint32 maxRenderWidth = 1;
	// 最大渲染高度（单位：像素）【必填】
	uint32 maxRenderHeight = 2;
}

// CameraDetectRangeSetParams 相机-识别区域修改
message CameraDetectRangeSetParams {
	// 实际渲染宽度（单位：像素）【必填】
	uint32 renderWidth = 1;
	// 实际渲染高度（单位：像素）【必填】
	uint32 renderHeight = 2;
	// 识别区域坐标列表（原点为图像左上角，坐标均为换算后的实际渲染值）【必填】
	repeated PlanePositionInfo dotList = 3;
}

/******************************** 设备管理相关接口 ****************************************/

// DeviceGetInfoParams 设备-获取信息
message DeviceGetInfoParams {}

message DeviceFreeTrialParams {}

// DeviceActivateParams 设备-激活
message DeviceActivateParams {
	// 激活码【必填】
	string activateCode = 1;
	// 门店信息【选填】
	ShopInfo shop = 2;
}

// DeviceShopChangeParams 设备-门店修改
message DeviceShopChangeParams {
	// 门店信息【必填】
	ShopInfo shopInfo = 1;
}

/******************************** 智能识别相关接口 ****************************************/

// AiPushWeightParams 智能识别-推送重量信息
message AiPushWeightParams {
	// 重量（单位：克）【必填】
	int32 weight = 1;
	// 重量状态【选填】
	WeightStatus status = 2;
	// 是否期望对该重量进行一次强制识别【选填】
	bool forceMatching = 3;
	// 透传数据，该数据会在识别结果中一同返回出来【选填】
	string transparentData = 4;
}

// AiImageDetectIgnoreSetParams 智能识别-图像检测过滤设置
message AiImageDetectIgnoreSetParams {}

// AiListenResultParams 智能识别-监听识别结果
message AiListenResultParams {}

// AiRegisterResultCallbackParams 智能识别-注册识别结果回调
message AiRegisterResultCallbackParams {
	// 回调地址【必填】
	string url = 1;
}

// AiLearningParams 智能识别-学习
message AiLearningParams {
	// 识别ID【必填】
	int64 id = 1;
	// 需要的学习商品信息【必填】
	SkuInfo sku = 2;
	// 学习模式【必填】
	LearningMode learningMode = 3;
	// 商品销售信息【选填】
	SkuSaleInfo skuSaleInfo = 4;
}

// AiFastLearningParams 智能识别-快速学习
message AiFastLearningParams {
	// 目标商品信息【必填】
	SkuInfo sku = 1;
}

/******************************** 商品特征相关接口 ****************************************/

// SkuFeatQueryImageParams 商品特征-查询图像
message SkuFeatQueryImageParams {
	// 商品信息【必填】
	SkuInfo sku = 1;
}

// SkuFeatQueryParams 商品特征-批量查询特征信息
message SkuFeatQueryParams {
	// 商品信息【必填】
	repeated SkuInfo skuList = 1;
}

// SkuFeatRemoveParams 商品特征-移除指定商品的指定特征
message SkuFeatRemoveParams {
	// 商品信息【必填】
	SkuInfo sku = 1;
	// 识别ID【必填】
	int64 id = 2;
}

// SkuFeatClearParams 商品特征-清除指定商品的所有特征
message SkuFeatClearParams {
	// 商品信息【必填】
	repeated SkuInfo skuList = 1;
}

/******************************** 学习数据相关接口 ****************************************/

// LearnDataImportParams 学习数据-导入
message LearnDataImportParams {
	// 导入模式【必填】
	LearnDataImportMode mode = 1;
	// 学习数据【必填】
	bytes data = 2;
}

// LearnDataExportParams 学习数据-导出
message LearnDataExportParams {
	// 导出模式【必填】
	LearnDataExportMode mode = 1;
	// 指定时间节点毫秒时间戳，仅增量导出有效【选填】
	int64 nodeTimestamp = 2;
}

// LearnDataUploadParams 学习数据-上传
message LearnDataUploadParams {}

// LearnDataClearParams 学习数据-清空
message LearnDataClearParams {}

/******************************** 算法模型相关接口 ****************************************/

// AlgoModelEnumParams 算法模型-枚举
message AlgoModelEnumParams {}

// AlgoModelChangeParams 算法模型-模型
message AlgoModelChangeParams {
	// 模型代号【必填】
	uint32 code = 1;
}

/******************************** 商品数据相关接口 ****************************************/

// SkuDataImportParams 商品数据-导入
message SkuDataImportParams {
	// 商品数据导入模式【必填】
	SkuDataImportMode mode = 1;
	// 商品数据列表【必填】
	repeated SkuStatusInfo skuList = 2;
}

// SkuDataDeleteParams 商品数据-删除
message SkuDataDeleteParams {
	// 商品数据列表【必填】
	repeated SkuInfo skuList = 1;
}

// SkuDataIconMatchParams 商品数据-主图匹配
message SkuDataIconMatchParams {
	// 商品数据列表【必填】
	repeated SkuInfo skuList = 1;
}

/******************************** 自动同步相关接口 ****************************************/

// AutoSyncGetSelfInfoParams 自动同步-获取本机信息
message AutoSyncGetSelfInfoParams {}

// AutoSyncGetGroupsInfoParams 自动同步-获取分组表信息
message AutoSyncGetGroupsInfoParams {}

// AutoSyncRemoveDeviceParams 自动同步-移除设备
message AutoSyncRemoveDeviceParams {
	// 分组ID（为空将清空所有分组）
	string groupID = 1;
	// 设备SN（为空将清空指定分组）
	string deviceSN = 2;
}

// AutoSyncJoinGroupParams 自动同步-加入分组
message AutoSyncJoinGroupParams {
	// 分组ID【必填】
	string groupID = 1;
	// 分组名称【必填】
	string groupName = 2;
}

// AutoSyncExitGroupParams 自动同步-退出分组
message AutoSyncExitGroupParams {}

// AutoSyncSetIntervalTimeParams 自动同步-设置同步时间间隔
message AutoSyncSetIntervalTimeParams {
	// 广播时间间隔(单位: 秒钟)【必填】
	uint32 broadcastInterval = 1;
	// 数据同步时间间隔(单位: 分钟)【必填】
	uint32 dataSyncInterval = 2;
}

// AutoSyncUpdateDataSyncRuleParams 自动同步-更新数据同步规则
message AutoSyncUpdateDataSyncRuleParams {
	// 数据同步规则【必填】
	AutoSyncDataSyncRule dataSyncRule = 1;
	// 数据拉取规则【必填】
	LearnDataExportMode dataPullRule = 2;
	// 数据导入规则【必填】
	LearnDataImportMode dataImportRule = 3;
}

// AutoSyncCreateGroupParams 自动同步-创建分组
message AutoSyncCreateGroupParams {
	// 分组名称（长度不超过20个字符）【必填】
	string groupName = 1;
}

// AutoSyncUpdateGroupNameParams 自动同步-更新分组名称
message AutoSyncUpdateGroupNameParams {
	// 分组名称（长度不超过20个字符）【必填】
	string groupName = 1;
}

