// 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 lab;

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

import "lab/chameleon.proto";
import "lab/servo.proto";

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

// Peripherals of device. Next Tag: 14
message Peripherals {
  Servo servo = 1;
  Chameleon chameleon = 2;
  RPM rpm = 3;
  // refer to cameras that connected to the device.
  repeated Camera connected_camera = 4;
  Audio audio = 5;
  Wifi wifi = 6;
  Touch touch = 7;
  // e.g: "att", "verizon",.. It's a manual label set by lab, varies dut by dut.
  string carrier = 8;
  // Indicate if the device is setup in a steady and controllable camera box
  // environment for camera test automation. http://go/cros-camera-box
  bool camerabox = 9;
  // Indicate if the device is setup in a chaos environment. It's a special
  // settings for running wifi interop tests.
  bool chaos = 10;
  // Indicate the cables that connect audio, printer to the device in ACS lab.
  repeated Cable cable = 11;
  // Incompatible upgraded type from bool camerabox=9.
  Camerabox camerabox_info = 12;
  // Indicate if device is connected to a smart usb hub, detected in AdminRepair
  // task.
  bool smart_usbhub = 13;
}

// Remote power management info.
// Next Tag: 3
message RPM {
  string powerunit_name = 1;
  string powerunit_outlet = 2;
}

// Next Tag: 3
enum CameraType {
  CAMERA_INVALID = 0;
  // camera Huddly GO
  CAMERA_HUDDLY = 1;
  // camera Logitech PTZ Pro 2
  CAMERA_PTZPRO2 = 2;
}

// Next Tag: 2
message Camera { CameraType camera_type = 1; }

enum CableType {
  CABLE_INVALID = 0;
  CABLE_AUDIOJACK = 1;
  CABLE_USBAUDIO = 2;
  CABLE_USBPRINTING = 3;
  CABLE_HDMIAUDIO = 4;
}

message Cable { CableType type = 1; }

// Next Tag: 4
message Audio {
  // Indicate if the DUT is housed in an audio box to record / replay audio
  // for audio testing.
  bool audio_box = 1;
  // Indicate if the DUT is connected to Atrus speakermic
  bool atrus = 2;
  // Indicate if the DUT is connected to chameleon through static audio cable
  bool audio_cable = 3;
}

// Next Tag: 4
message Wifi {
  // Indicate if the device is inside a hermetic wifi cell.
  bool wificell = 1;

  // DUT's WiFi antenna's connection.
  // Next Tag: 3
  enum AntennaConnection {
    CONN_UNKNOWN = 0;
    // WIFI antenna is connected conductively.
    CONN_CONDUCTIVE = 1;
    // WIFI antenna is connected over-the-air.
    CONN_OTA = 2;
  }
  AntennaConnection antenna_conn = 2;

  enum Router {
    ROUTER_UNSPECIFIED = 0;
    ROUTER_802_11AX = 1;
  }
  // Indicate if the device is in a pre-setup environment with 802.11ax routers.
  // crbug.com/1044786
  Router router = 3;
}

// Next Tag: 2
message Touch {
  // Has touch monitor mimo.
  bool mimo = 1;
}

// Next Tag: 3
message Camerabox {
  // Facing of DUT's camera to be tested whose FOV should cover chart tablet's
  // screen. Next Tag: 3
  enum Facing {
    FACING_UNKNOWN = 0;
    // DUT's back camera is facing to chart tablet.
    FACING_BACK = 1;
    // DUT's front camera is facing to chart tablet.
    FACING_FRONT = 2;
  }
  // Light provision of camerabox, if LED is present or not.
  // Next Tag: 3
  enum Light {
    LIGHT_UNKNOWN = 0;
    // Camerabox has LED light provisioned.
    LIGHT_LED = 1;
    // Camerabox do not have LED light provision.
    LIGHT_NOLED = 2;
  }
  Facing facing = 1;
  Light light = 2;
}
