// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto3";

package lab;

option go_package = "go.chromium.org/chromiumos/infra/proto/go/lab";

import "lab/chromeos_device_id.proto";

// This proto defines status labels in lab config of a DUT.

// Next Tag: 8
message DutState {
  ChromeOSDeviceID id = 1;
  PeripheralState servo = 2;
  PeripheralState chameleon = 3;
  PeripheralState audio_loopback_dongle = 4;
  // Indicate how many working bluetooth btpeer for a device.
  int32 working_bluetooth_btpeer = 5;

  // CR50-related configs by definition shouldn't be a state config, but a build config.
  // However, we don't have a way to source it from any external configuration system,
  // and it's changed frequently enough to handle cr50 tests, which makes
  // it basically impossible for manual updatings: See crbug.com/1057145 for the
  // troubles it causes.
  // 
  // So we temporarily set it in state config so that repair job can update it.
  // For further changes of it, please see tracking bug crbug.com/1057719.
  //
  // phases for cr50 module. Next Tag: 3
  enum CR50Phase {
    CR50_PHASE_INVALID = 0;
    CR50_PHASE_PREPVT = 1;
    CR50_PHASE_PVT = 2;
  }

  CR50Phase cr50_phase = 6;

  // key env for cr50 RW version. Next Tag: 3
  enum CR50KeyEnv {
    CR50_KEYENV_INVALID = 0;
    CR50_KEYENV_PROD = 1;
    CR50_KEYENV_DEV = 2;
  }
  // Detected based on the cr50 RW version that the DUT is running on.
  CR50KeyEnv cr50_key_env = 7;
}

// Next Tag: 5
enum PeripheralState {
  // keep for all unknown states except working & not_connected.
  UNKNOWN = 0;
  WORKING = 1;
  NOT_CONNECTED = 2;
  BROKEN = 3;
  WRONG_CONFIG = 4;
}