blob: 8a437bedf0701685f7478440f03e4bec3add5501 [file] [log] [blame]
edition = "2023";
package milotic_tlbmc;
import "resource.proto";
message RawFruTable {
map<string, RawFru> key_to_raw_fru = 1;
}
message FruTable {
map<string, Fru> key_to_fru = 1;
}
message RawFru {
// Key in raw fru table.
string key = 1;
// Transport information.
oneof transport {
I2CAddress i2c_info = 2;
}
// FRU data.
FruData data = 3;
}
// 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;
}
// 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;
}
// 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.
oneof subtype {
FanInfo fan_info = 4;
}
}