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

syntax = "proto3";

package manufacturing;

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

import "manufacturing/config_id.proto";

// These are the configs that's provided in manufacture stage of a ChromeOS
// device. Next Tag: 7
message Config {
  ConfigID manufacturing_id = 1;

  // phase for the device. Next Tag: 9
  enum Phase {
    PHASE_INVALID = 0;
    PHASE_EVT = 1;
    PHASE_EVT2 = 2;
    PHASE_DVT = 3;
    PHASE_DVT2 = 4;
    PHASE_PVT = 5;
    PHASE_PVT2 = 6;
    PHASE_PVT3 = 7;
    PHASE_MP = 8;
  }
  Phase device_phase = 2;

  // phases for cr50 module. Next Tag: 3
  enum CR50Phase {
    CR50_PHASE_INVALID = 0;
    CR50_PHASE_PREPVT = 1;
    CR50_PHASE_PVT = 2;
  }

  CR50Phase cr50_phase = 3;

  // 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 = 4;

  // wifi chip that is installed on the DUT in manufacturing stage.
  string wifi_chip = 5;

  // Save repeated hwid components obtained from hwid service
  repeated string hwid_component = 6;
}

// Message contains all ChromeOS manufacturing configs.
message ConfigList { repeated Config value = 1; }
