// Copyright 2018 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
// Runtime Probe.
syntax = "proto3";

package runtime_probe;
option go_package = "runtime_probe_proto";

// Defined error code.
enum ErrorCode {
  // 0 is the default value of ProbeResult::error. It should never be used.
  RUNTIME_PROBE_ERROR_NOT_SET = 0;

  // Not able to read the ProbeResult as DBus signature indicated.
  RUNTIME_PROBE_ERROR_PROBE_REQUEST_INVALID = 1;
  // Not able to find default probe config in the rootfs image.
  RUNTIME_PROBE_ERROR_DEFAULT_PROBE_CONFIG_NOT_FOUND = 2;
  // Assigned probe config is not holding a corret JSON format.
  RUNTIME_PROBE_ERROR_PROBE_CONFIG_SYNTAX_ERROR = 3;
  // Assigned probe config contains functions not able to be constructed.
  RUNTIME_PROBE_ERROR_PROBE_CONFIG_INCOMPLETE_PROBE_FUNCTION = 4;
}

// Request from client that indicates what categories to probe. Category must
// be existed on the per-board probe statement in rootfs.
message ProbeRequest {
  // Next tag: 5
  enum SupportCategory {
    // The name style here is on purposely align with factory probe output.
    audio_codec = 0;
    battery = 1;
    storage = 2;
    vpd_cached = 3;
    network = 4;
  }
  repeated SupportCategory categories = 1;
  // This option allows clients to retrieve data with privacy implication from
  // D-Bus call to runtime_probe. Default to false and please use with caution.
  bool include_privacy_fields = 2;
  // If probe_default_category is True, the supplied categories above will be
  // ignored.
  bool probe_default_category = 3;
}

// Extra information for each probe result.
message Information {
  // comp_group, used for grouping different probed components.
  string comp_group = 1;
}

// Things about audio_codec
message AudioCodec {
  message Fields {
    // The name of the codec presents in sysfs.
    string name = 1;
  }
  // Component alias.
  string name = 1;
  // Component's details.
  Fields values = 2;
  // Component probe info.
  Information information = 3;
}

// Things about battery
message Battery {
  // TODO(itspeter): Add more fileds for battery.
  message Fields {
    // (1) Most fields are following the naming of exposed ACPI interface.
    // (2) Most units is in µ because of this unexplained kernel patch:
    // https://chromium.git.corp.google.com/chromiumos/third_party/kernel/+/d7380965752505951668e85de59c128d1d6fd21f%5E%21/#F1

    // Index number of this battery, starts from 1.
    int32 index = 1;
    // Manufacturer for length not exceeding EC_COMM_TEXT_MAX.
    string manufacturer = 2;
    // Model name for length not exceeding EC_COMM_TEXT_MAX.
    string model_name = 3;
    // Serial number for length not exceeding EC_COMM_TEXT_MAX.
    string serial_number = 4;
    // Design Capacity (µAh).
    int32 charge_full_design = 5;
    // Full Capacity (µAh, might change occasionally).
    int32 charge_full = 6;
    // Remaining capacity (µAh)
    int32 charge_now = 7;
    // Current Battery voltage (µV)
    int32 voltage_now = 8;
    // Designed minimum output voltage (µV)
    int32 voltage_min_design = 9;
    // Smart Battery Cycle Count in http://sbs-forum.org/specs/sbdat110.pdf
    int32 cycle_count_smart = 10;
    // Smart Battery Status defined in http://sbs-forum.org/specs/sbdat110.pdf
    int32 status_smart = 11;
    // Temperature in 0.1°K as Smart Battery Temperature defined in
    // http://sbs-forum.org/specs/sbdat110.pdf
    int32 temperature_smart = 12;
    // The path of this battery in system. It is useful if caller needs to
    // correlate with other information
    string path = 13;
    // Smart Manufacture Date is defined in
    // http://sbs-forum.org/specs/sbdat110.pdf.
    // The value is calculated by ((year-1980) * 512 + month * 32 + day).
    int32 manufacture_date_smart = 14;
    // Technology is defined in
    // /sys/class/power_supply/<supply_name>/technology section in
    // https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-power.
    string technology = 15;
  }
  // Component alias.
  string name = 1;
  // Component's details.
  Fields values = 2;
  // Component probe info.
  Information information = 3;
}

// Things about storage
message Storage {
  message Fields {
    // The path of this storage in system. It is useful if caller needs to
    // correlate with other information.
    string path = 1;
    // Number of sectors of this storage, traditionally 1 sector = 512 Bytes.
    int64 sectors = 2;
    // Exact size of this storage, reported in bytes
    int64 size = 3;
    // Storage type, could be MMC / NVMe / ATA
    string type = 4;

    // Below are based on JEDEC Standard No. 84-B51, and kernel MMC driver
    // exposed in sysfs:
    //   https://chromium.googlesource.com/chromiumos/third_party/kernel/+/v3.18/include/linux/mmc/card.h#17
    //   https://chromium.googlesource.com/chromiumos/third_party/kernel/+/v3.18/Documentation/mmc/mmc-dev-attrs.txt

    // MID: Manufacturer ID, 8 bits.
    uint32 manfid = 5;
    // PNM: Product name, ASCII characters for 6 bytes.
    string name = 6;
    // PRV: Product revision, 8 bits
    uint32 prv = 7;
    // PSN: Product serial number, 32 bits
    uint32 serial = 8;
    // OID: OEM/Application ID, 8 bits
    uint32 oemid = 9;

    // The following are fields for NVMe. Every field name comes with
    // prefix "pci_" as NVMe is a PCI device.
    // These fields are based on what kernel pci driver exposes in sysfs:
    //   https://chromium.googlesource.com/chromiumos/third_party/kernel/+/v4.4/include/linux/pci.h#267

    // Vendor ID, 16 bits
    uint32 pci_vendor = 10;
    // Device ID, 16 bits
    uint32 pci_device = 11;
    // Device class indicator, 32 bits
    uint32 pci_class = 12;

    // The following are fields for SATA. Every field name comes with
    // prefix "ata_".
    // These fields based on what kernel pci driver exposes in sysfs:
    //   https://chromium.googlesource.com/chromiumos/third_party/kernel/+/v4.4/drivers/scsi/scsi_devinfo.c#22

    // Vendor name, 8 bytes
    string ata_vendor = 13;
    // Model name, 16 bytes
    string ata_model = 14;
  }
  // Component alias.
  string name = 1;
  // Component's details.
  Fields values = 2;
  // Component probe info.
  Information information = 3;
}

// Things about VPD (Vital Product Data) , cached version.
message VpdCached {
  // TODO(itspeter): Add more fileds for Vpd.
  message Fields {
    // Allowed VPD fileds are reviewed on https://b/131849646
    // Up to date documentation on VPD fields for each Chromebook is on
    //   https://www.google.com/chromeos/partner/fe/docs/factory/vpd.html

    // SKU number of the unit
    string vpd_sku_number = 1;
  }
  // Component alias.
  string name = 1;
  // Component's details.
  Fields values = 2;
  // Component probe info.
  Information information = 3;
}

// Things about network
message Network {
  message Fields {
    // The path of this network in system. It is useful if caller needs to
    // correlate with other information.
    string path = 1;
    // Network type, could be wireless / ethernet / cellular
    string type = 2;
    // Network bus, could be pci / usb / sdio
    string bus_type = 3;

    // The following are fields for PCI. Every field name comes with
    // prefix "pci_".
    // These fields are based on what kernel pci driver exposes in sysfs:
    //   https://chromium.googlesource.com/chromiumos/third_party/kernel/+/v4.4/include/linux/pci.h#267

    // Vendor ID, 16 bits
    uint32 pci_vendor_id = 4;
    // Device ID, 16 bits
    uint32 pci_device_id = 5;
    // Device revision, 8 bits
    uint32 pci_revision = 6;

    // The following are fields for USB. Every field name comes with
    // prefix "usb_".

    // Vendor ID, 16 bits
    uint32 usb_vendor_id = 7;
    // Product ID, 16 bits
    uint32 usb_product_id = 8;
    // Device Release Number, 16 bits.
    uint32 usb_bcd_device = 9;

    // The following are fields for SDIO. Every field name comes with
    // prefix "sdio_".

    // Vendor ID, 16 bits
    uint32 sdio_vendor_id = 10;
    // Product ID, 16 bits
    uint32 sdio_device_id = 11;
  }
  // Component alias.
  string name = 1;
  // Component's details.
  Fields values = 2;
  // Component probe info.
  Information information = 3;
}

// A ProbeResult contains all potential probe results. For category not
// existed or not requested for probing, field is expected to be empty.
// Next tag: 8
message ProbeResult {
  // If a call was successful, error will not be defined.
  // If a call failed, it must set an error code.
  ErrorCode error = 1;
  // The checksum of probe config content calculated using SHA1 hash.
  string probe_config_checksum = 6;

  // The following are the fields for different component categories.
  repeated AudioCodec audio_codec = 2;
  repeated Battery battery = 3;
  repeated Storage storage = 4;
  repeated VpdCached vpd_cached = 5;
  repeated Network network = 7;
}
