diff --git a/protos/cmvr/api/common.proto b/protos/cmvr/api/common.proto index 5686a18a..64988d45 100644 --- a/protos/cmvr/api/common.proto +++ b/protos/cmvr/api/common.proto @@ -4,6 +4,59 @@ package cmvr.api; import "google/protobuf/timestamp.proto"; +enum CommandReasonCode { + COMMAND_REASON_CODE_UNSPECIFIED = 0; + COMMAND_REASON_CODE_NONE = 1; + COMMAND_REASON_CODE_INVALID_ARGUMENT = 2; + COMMAND_REASON_CODE_UNAUTHENTICATED = 3; + COMMAND_REASON_CODE_PERMISSION_DENIED = 4; + COMMAND_REASON_CODE_RECOVERY_RPC_DISABLED = 5; + COMMAND_REASON_CODE_DEVICE_NOT_FOUND = 6; + COMMAND_REASON_CODE_DEVICE_UNAVAILABLE = 7; + COMMAND_REASON_CODE_UNSUPPORTED_COMMAND = 8; + COMMAND_REASON_CODE_SYSTEM_STARTING = 9; + COMMAND_REASON_CODE_SYSTEM_STOPPING = 10; + COMMAND_REASON_CODE_SAFETY_LATCHED = 11; + COMMAND_REASON_CODE_SAFETY_STATE_MISSING = 12; + COMMAND_REASON_CODE_SAFETY_STATE_STALE = 13; + COMMAND_REASON_CODE_HARDWARE_UNSAFE = 14; + COMMAND_REASON_CODE_EMERGENCY_STOP_ACTIVE = 15; + COMMAND_REASON_CODE_PROTECTIVE_STOP_ACTIVE = 16; + COMMAND_REASON_CODE_DEVICE_DISCONNECTED = 17; + COMMAND_REASON_CODE_DEVICE_FAULT = 18; + COMMAND_REASON_CODE_DEVICE_NOT_READY = 19; + COMMAND_REASON_CODE_DEVICE_STILL_MOVING = 20; + COMMAND_REASON_CODE_CONTROL_BUSY = 21; + COMMAND_REASON_CODE_GENERATION_MISMATCH = 22; + COMMAND_REASON_CODE_COMMAND_ID_REQUIRED = 23; + COMMAND_REASON_CODE_COMMAND_ID_CONFLICT = 24; + COMMAND_REASON_CODE_RESULT_EVICTED = 25; + COMMAND_REASON_CODE_LEDGER_EXHAUSTED = 26; + COMMAND_REASON_CODE_BACKPRESSURE = 27; + COMMAND_REASON_CODE_DEADLINE_EXCEEDED_BEFORE_DISPATCH = 28; + COMMAND_REASON_CODE_OUTCOME_UNKNOWN = 29; + COMMAND_REASON_CODE_PARTICIPANT_TIMEOUT = 30; + COMMAND_REASON_CODE_STOP_UNCONFIRMED = 31; + COMMAND_REASON_CODE_RECOVERY_EPOCH_MISMATCH = 32; + COMMAND_REASON_CODE_RECOVERY_REASON_REQUIRED = 33; + COMMAND_REASON_CODE_RECOVERY_AUDIT_FAILED = 34; + COMMAND_REASON_CODE_INTERNAL_ERROR = 35; +} + +enum CommandExecutionState { + COMMAND_EXECUTION_STATE_UNSPECIFIED = 0; + COMMAND_EXECUTION_STATE_RECEIVED = 1; + COMMAND_EXECUTION_STATE_RESERVED = 2; + COMMAND_EXECUTION_STATE_REJECTED_BEFORE_DISPATCH = 3; + COMMAND_EXECUTION_STATE_ADMITTED = 4; + COMMAND_EXECUTION_STATE_DISPATCHING = 5; + COMMAND_EXECUTION_STATE_ACCEPTED_BY_HARDWARE = 6; + COMMAND_EXECUTION_STATE_COMPLETED = 7; + COMMAND_EXECUTION_STATE_FAILED = 8; + COMMAND_EXECUTION_STATE_CANCELED_BEFORE_DISPATCH = 9; + COMMAND_EXECUTION_STATE_OUTCOME_UNKNOWN = 10; +} + message DeviceLifecycle { enum Lifecycle { STATE_INIT = 0; @@ -20,12 +73,22 @@ message CommandHeader { message Request { string device_id = 1; // 目标设备名称 google.protobuf.Timestamp timestamp = 2; // 请求时间 + string command_id = 3; + string expected_service_instance_id = 4; + optional uint64 expected_device_generation = 5; + uint32 valid_for_ms = 6; } message Feedback { bool success = 1; // 是否成功 string error_message = 2; // 错误信息(成功时为空) google.protobuf.Timestamp timestamp = 3; // 回复时间 + CommandReasonCode reason_code = 4; + string command_id = 5; + string service_instance_id = 6; + uint64 safety_epoch = 7; + uint64 device_generation = 8; + CommandExecutionState execution_state = 9; } }