edition = "2023";

package milotic_tlbmc;

import "memory.proto";
import "processor.proto";
import "resource.proto";

message RawFruTable {
  map<string, RawFru> key_to_raw_fru = 1;
}

message FanGroup {
  repeated string fan_keys = 1;
}

message FruTable {
  map<string, Fru> key_to_fru = 1;
  map<string, FanGroup> pwm_sensor_to_fan_group = 2;
}

// Raw FRU information. It can be a present FRU or an expected FRU.
// For a present FRU, all fields will be populated.
// For an expected but missing FRU, `key`, `transport`, `present=false`,
// `expected_barepath`, `expected_part_number`, and `expected_serial_number`
// will be populated, while `data` will be empty. For a present but unexpected
// FRU, all fields will be populated.
message RawFru {
  // Key in raw fru table.
  string key = 1;

  // Transport information.
  oneof transport {
    I2CAddress i2c_info = 2;
  }
  // FRU data.
  FruData data = 3;

  // The following fields will be used for deterministic FRU scanning.
  // True if any FRU is present and the eeprom is processed successfully on the
  // specified bus and address. Note that the FRU may be present but not valid
  // (unexpected part).
  bool present = 4;
  // Expected barepath of the FRU.
  string expected_barepath = 5;
  // Expected part number of the FRU.
  string expected_part_number = 6;
  // Expected serial number of the FRU.
  string expected_serial_number = 7;
  // True if hardware was detected (via sysfs file or direct I2C ACK) but
  // content parsing failed.
  bool parsing_error = 8;
}

// FRU information.
message Fru {
  // FRU attributes.
  Attributes attributes = 1;
  // Transport information.
  oneof transport {
    I2CAddress i2c_info = 2;
  }
  // FRU data.
  FruData data = 3;
}

// I2C information.
message I2CAddress {
  // I2C bus number.
  uint64 bus = 1;
  // I2C address.
  uint64 address = 2;
}

message FruI2CInfo {
  string board_manufacturer = 1;
  string board_product_name = 2;
  string board_serial_number = 3;
  string board_part_number = 4;
  string product_manufacturer = 5;
  string product_product_name = 6;
  string product_serial_number = 7;
  string product_part_number = 8;
  string product_version = 9;
  string product_asset_tag = 10;
  string mac_address = 11;
}

// The relevant asset information for the FRU. An asset information field can
// either be derived from FRU, or from the specified string value in config.
message AssetInfo {
  string manufacturer = 1;
  string product_name = 2;
  string serial_number = 3;
  string part_number = 4;
  string version = 5;
  string asset_tag = 6;
}

// Fans have special properties that need to be exposed.
message FanInfo {
  string name = 1;
  string model = 2;
  bool is_hotpluggable = 3;
  string pwm_sensor_name = 4;
  string tach_sensor_name = 5;
}

message ManagerInfo {
  string name = 1;
  string manager_in_chassis = 2;
  repeated string manager_for_servers = 3;
  string manager_for_chassis = 4;
}

message PowerSupplyInfo {
  string input_sensor_name = 1;
}

// FRU data.
message FruData {
  map<string, string> fields = 1;
  FruI2CInfo fru_info = 2;
  AssetInfo asset_info = 3;

  // There are many different types of FRUs, so we need the relevant data for
  // each type of FRU.
  // These are optional and only specified if the FRU is a specific type.
  oneof subtype {
    FanInfo fan_info = 4;
    PowerSupplyInfo power_supply_info = 5;
    ManagerInfo manager_info = 6;
    Processor processor_info = 7;
    Memory memory_info = 8;
  }
}
