syntax = "proto3";
import "types.proto";
package Units;

// 组件公共
message Unit {
    option (interface) = 'bmc.kepler.Systems.Units.Unit';

    uint8 SystemID = 1 [(readonly) = true];
    uint8 Slot = 2 [(readonly) = true];
    uint8 Position = 3 [(readonly) = true];
    string Type = 4 [(readonly) = true];
    string ComponentUID = 5 [(readonly) = true];
    string Name = 6 [(readonly) = true];
    string Manufacturer = 7 [(readonly) = true];
    string Description = 8 [(readonly) = true];
    string SerialNumber = 9 [(readonly) = true];
    string PartNumber = 10 [(readonly) = true];
    uint8 PcbID = 11 [(readonly) = true];
    string PcbVersion = 12 [(readonly) = true];
    string LogicVersion = 13 [(readonly) = true];
    string HWSRVersion = 14 [(readonly) = true];
}

// EXU
message ExpBoard {
    option (path) = "/bmc/kepler/Systems/:SystemID/Units/ExpBoard/:ID";
    
    Unit Unit = 1;
}

// BCU
message ICpuBoard {
    option (interface) = 'bmc.kepler.Systems.Units.CpuBoard';
    
    uint8 PowerStatus = 1; // 上下电状态
    uint16 Power = 2;      // 功耗
}

message CpuBoard {
    option (path) = "/bmc/kepler/Systems/:SystemID/Units/CpuBoard/:ID";
    
    Unit Unit = 1;
    ICpuBoard ICpuBoard = 2;
}

// SEU
message HddBackplane {
    option (path) = "/bmc/kepler/Systems/:SystemID/Units/HddBackplane/:ID";
    
    Unit Unit = 1;
}

// CLU
message FanBoard {
    option (path) = "/bmc/kepler/Systems/:SystemID/Units/FanBoard/:ID";
    
    Unit Unit = 1;
}

// IEU
message RiserCard {
    option (path) = "/bmc/kepler/Systems/:SystemID/Units/RiserCard/:ID";
    
    Unit Unit = 1;
}