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

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

  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 GenericComponentValueWhitelist {
    // required
    runtime_probe.ProbeRequest.SupportCategory component_category = 1;

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

  // Records the whitelist of the generic component values of each category.
  repeated GenericComponentValueWhitelist generic_component_value_whitelists =
      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;

  // Next tag: 5
  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;
    repeated runtime_probe.Network.Fields network = 4;
  }

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