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

// The messages in this file comprise the DBus/Protobuf interface for
// Hardware Verifier.

syntax = "proto3";

option optimize_for = SPEED;

package hardware_verifier;

// Name of the folder which contains |runtime_probe.pb.h| is different than
// the one which contains |runtime_probo.proto| so we import the file name
// directly and use |BUILD.gn| to handle the include path properly.
import "runtime_probe.proto";

// List of the possible qualification status of a component.
// TODO(yhong): Using the existing definition from AVL side when the
//     integration work starts.
enum QualificationStatus {
  UNQUALIFIED = 0;
  REJECTED = 1;
  QUALIFIED = 2;
  // This category has at least one ComponentInfo defined, but we cannot match
  // any known components in the probe result.
  NO_MATCH = 3;
}

message ComponentInfo {
  reserved 1;
  // required
  runtime_probe.ProbeRequest.SupportCategory component_category = 4;

  string component_uuid = 2;  // required

  QualificationStatus qualification_status = 3;  // required
}

message HwVerificationSpec {
  // A list of all known components and their qualification status.
  repeated ComponentInfo component_infos = 1;

  message GenericComponentValueAllowlist {
    reserved 1;
    // required
    runtime_probe.ProbeRequest.SupportCategory component_category = 3;

    // A list of field names that are allowed to be included in the report.
    repeated string field_names = 2;
  }

  // Records the allowlist of the generic component values of each category.
  repeated GenericComponentValueAllowlist generic_component_value_allowlists =
      2;
}

message HwVerificationReport {
  bool is_compliant = 1;

  // Records the qualification status of the components that is also probed
  // by the hardware prober.
  repeated ComponentInfo found_component_infos = 2;

  message GenericDeviceInfo {
    // Records the generic component values of some specific types.  Note
    // that because |HwVerificationReport| intents to only include the needed
    // data, not all categories which |runtime_probe| supports are listed.
    repeated runtime_probe.AudioCodec.Fields audio_codec = 1;
    repeated runtime_probe.Battery.Fields battery = 2;
    repeated runtime_probe.Storage.Fields storage = 3;
    // Obsolete in M91.
    repeated runtime_probe.Network.Fields network = 4;
    repeated runtime_probe.Camera.Fields camera = 5;
    repeated runtime_probe.InputDevice.Fields stylus = 6;
    repeated runtime_probe.InputDevice.Fields touchpad = 7;
    repeated runtime_probe.InputDevice.Fields touchscreen = 8;
    repeated runtime_probe.Memory.Fields dram = 9;
    repeated runtime_probe.Edid.Fields display_panel = 10;
    repeated runtime_probe.Network.Fields cellular = 11;
    repeated runtime_probe.Network.Fields ethernet = 12;
    repeated runtime_probe.Network.Fields wireless = 13;
  }

  // Records the overall device matrics.
  GenericDeviceInfo generic_device_info = 3;
}
