cmvr-es/protos/cmvr/api/safety_command.proto

205 lines
5.7 KiB
Protocol Buffer

syntax = "proto3";
package cmvr.api;
import "cmvr/api/common.proto";
enum SafetyTriState {
SAFETY_TRI_STATE_UNKNOWN = 0;
SAFETY_TRI_STATE_FALSE = 1;
SAFETY_TRI_STATE_TRUE = 2;
}
enum SafetyCondition {
SAFETY_CONDITION_UNKNOWN = 0;
SAFETY_CONDITION_NOMINAL = 1;
SAFETY_CONDITION_RESTRICTED = 2;
SAFETY_CONDITION_UNSAFE = 3;
}
enum SystemAdmissionState {
SYSTEM_ADMISSION_STATE_UNSPECIFIED = 0;
SYSTEM_ADMISSION_STATE_STARTING = 1;
SYSTEM_ADMISSION_STATE_OPEN = 2;
SYSTEM_ADMISSION_STATE_STOPPING = 3;
SYSTEM_ADMISSION_STATE_LATCHED = 4;
SYSTEM_ADMISSION_STATE_RECOVERING = 5;
SYSTEM_ADMISSION_STATE_SHUTTING_DOWN = 6;
}
enum DeviceAdmissionState {
DEVICE_ADMISSION_STATE_UNSPECIFIED = 0;
DEVICE_ADMISSION_STATE_OBSERVING = 1;
DEVICE_ADMISSION_STATE_OPEN = 2;
DEVICE_ADMISSION_STATE_BLOCKED = 3;
DEVICE_ADMISSION_STATE_QUARANTINED = 4;
DEVICE_ADMISSION_STATE_RECOVERING = 5;
DEVICE_ADMISSION_STATE_REMOVED = 6;
}
enum SafetyBlockerScope {
SAFETY_BLOCKER_SCOPE_UNSPECIFIED = 0;
SAFETY_BLOCKER_SCOPE_DEVICE = 1;
SAFETY_BLOCKER_SCOPE_SYSTEM = 2;
}
enum SafetyRecoveryRequirement {
SAFETY_RECOVERY_REQUIREMENT_UNSPECIFIED = 0;
SAFETY_RECOVERY_REQUIREMENT_REFRESH_ONLY = 1;
SAFETY_RECOVERY_REQUIREMENT_CLEAR_SOFTWARE_LATCH = 2;
SAFETY_RECOVERY_REQUIREMENT_HARDWARE_RELEASE_REQUIRED = 3;
SAFETY_RECOVERY_REQUIREMENT_MANUAL_INSPECTION_REQUIRED = 4;
}
enum SafetyOperationResult {
SAFETY_OPERATION_RESULT_UNSPECIFIED = 0;
SAFETY_OPERATION_RESULT_SUCCEEDED = 1;
SAFETY_OPERATION_RESULT_RECOVERED = 2;
SAFETY_OPERATION_RESULT_VERIFIED_BUT_STILL_BLOCKED = 3;
SAFETY_OPERATION_RESULT_BLOCKER_REMAINS = 4;
SAFETY_OPERATION_RESULT_EPOCH_MISMATCH = 5;
SAFETY_OPERATION_RESULT_NOTHING_TO_RECOVER = 6;
SAFETY_OPERATION_RESULT_TIMED_OUT = 7;
SAFETY_OPERATION_RESULT_FAILED = 8;
}
message DeviceIdList {
repeated string device_ids = 1;
}
message SafetyScope {
oneof target {
bool all_devices = 1;
DeviceIdList devices = 2;
}
}
message SafetyBlockerInfo {
CommandReasonCode reason_code = 1;
SafetyBlockerScope scope = 2;
SafetyRecoveryRequirement recovery_requirement = 3;
string source_id = 4;
string operation_id = 5;
uint64 first_observed_at_unix_ms = 6;
uint64 last_observed_at_unix_ms = 7;
}
message DeviceSafetyStateInfo {
string device_id = 1;
string device_kind = 2;
string policy_family = 3;
string lifecycle_state = 4;
string health_state = 5;
DeviceAdmissionState admission_state = 6;
SafetyCondition condition = 7;
bool has_sample = 8;
bool snapshot_fresh = 9;
uint64 sample_age_ms = 10;
uint64 sample_sequence = 11;
uint64 observed_at_unix_ms = 12;
uint64 device_generation = 13;
SafetyTriState connected = 14;
SafetyTriState operational_ready = 15;
SafetyTriState quiescent = 16;
SafetyTriState motion_active = 17;
SafetyTriState actuator_enabled = 18;
SafetyTriState emergency_stop_active = 19;
SafetyTriState protective_stop_active = 20;
SafetyTriState fault_active = 21;
repeated SafetyBlockerInfo blockers = 22;
}
message SafetyOperationTargetResult {
string target_id = 1;
SafetyOperationResult result = 2;
CommandReasonCode reason_code = 3;
string detail = 4;
DeviceAdmissionState before_state = 5;
DeviceAdmissionState after_state = 6;
}
message SafetyParticipantResultInfo {
bool recorded = 1;
bool success = 2;
CommandReasonCode reason_code = 3;
string detail = 4;
}
message SafetyParticipantStateInfo {
string participant_id = 1;
string phase = 2;
bool required = 3;
bool registered = 4;
bool barrier_active = 5;
bool barrier_retained = 6;
string operation_id = 7;
uint64 safety_epoch = 8;
SafetyParticipantResultInfo last_request = 9;
SafetyParticipantResultInfo last_verify = 10;
SafetyParticipantResultInfo last_release = 11;
}
message GetSafetyStateCommand {
message Request {
SafetyScope scope = 1;
}
message Feedback {
CommandHeader.Feedback header = 1;
SystemAdmissionState system_state = 2;
uint64 safety_epoch = 3;
string control_service_instance_id = 4;
string enforcement_mode = 5;
repeated DeviceSafetyStateInfo devices = 6;
string active_operation_id = 7;
string active_operation_phase = 8;
uint64 sampled_at_unix_ms = 9;
repeated SafetyParticipantStateInfo participants = 10;
}
}
message RecoverSafetyStateCommand {
enum Mode {
MODE_UNSPECIFIED = 0;
VERIFY_ONLY = 1;
CLEAR_SOFTWARE_LATCH = 2;
}
message Request {
string recovery_id = 1;
SafetyScope scope = 2;
uint64 expected_safety_epoch = 3;
Mode mode = 4;
string reason = 5;
uint32 timeout_ms = 6;
}
message Feedback {
CommandHeader.Feedback header = 1;
SafetyOperationResult result = 2;
uint64 previous_safety_epoch = 3;
uint64 current_safety_epoch = 4;
SystemAdmissionState system_state = 5;
repeated SafetyOperationTargetResult targets = 6;
string recovery_id = 7;
}
}
message RestoreOperationalStateCommand {
message Request {
string recovery_id = 1;
string reason = 2;
uint32 timeout_ms = 3;
}
message Feedback {
CommandHeader.Feedback header = 1;
SafetyOperationResult result = 2;
uint64 previous_safety_epoch = 3;
uint64 current_safety_epoch = 4;
SystemAdmissionState system_state = 5;
repeated SafetyOperationTargetResult targets = 6;
string recovery_id = 7;
}
}