// 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.

// Definitions for the probe API exposed by the cros_healthd daemon. This API is
// normally consumed by the browser.

// NOTE: This mojom should be kept in sync with the copy in Chromium's repo in
// src/chrome/services/cros_healthd/public/mojom/cros_healthd_probe.mojom.

module chromeos.cros_healthd.mojom;

struct BatteryInfo {
  // TODO(https://crbug.com/979245): Update "smart" cycle count.
  int64 cycle_count;
  // Current battery voltage (V)
  double voltage_now;
  // Manufacturer of the battery
  string vendor;
  // Serial number of the battery
  string serial_number;
  // Design capacity (Ah)
  double charge_full_design;
  // Full capacity (Ah)
  double charge_full;
  // Desired minimum output voltage (V)
  double voltage_min_design;
};

struct NonRemovableBlockDeviceInfo {
  // The path of this storage in system. It is useful if caller needs to
  // correlate with other information.
  string path;
  // Exact size of this storage, reported in bytes
  uint64 size;
  // Storage type, could be MMC / NVMe / ATA, based on udev subsystem.
  string type;
  // Manufacturer ID, 8 bits.
  uint8 manufacturer_id;
  // PNM: Product name, ASCII characters for 6 bytes.
  string name;
  // PSN: Product serial number, 32 bits
  uint32 serial;
};
