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

message IPCIeDeviceInfo {
    option (interface) = 'bmc.mdb.Systems.PCIeDeviceInfo';

    string Manufacturer = 1 [(readonly) = true];
    string CardDesc = 2 [(readonly) = true];
}

message PCIeDeviceInfo {
    option (path) = "/bmc/kepler/Systems/:SystemId/PCIeDevices/:PCIeDeviceId";

    IPCIeDeviceInfo Info = 1;
}

message IPcieAddrInfo {
    option (interface) = 'bmc.kepler.Systems.PcieAddrInfo';

    uint8 GroupID = 1;
    uint8 SlotID = 2;
    uint8 ComponentType = 3;
    uint8 ControllerIndex = 4;
    uint8 ControllerType = 5;
    uint8 SocketID = 6;
    uint8 Segment = 7;
    uint8 Bus = 8;
    uint8 Device = 9;
    uint8 Function = 10;
    uint16 VendorID = 11;
    uint16 DeviceID = 12;
}

message PcieAddrInfo {
    option (path) = "/bmc/kepler/Systems/:SystemID/PCIeDevices/PcieAddrInfo/:ID";

    IPcieAddrInfo PcieAddrInfo = 1;
}

message BizTopoNode {
    option (interface) = 'bmc.kepler.Systems.BizTopoNode';

    uint8 SystemID = 1 [(readonly) = true];
}

message UBConnector {
    option (path) = "/bmc/kepler/Systems/:SystemId/PCIeDevices/UBConnector/:ID";

    BizTopoNode BizTopoNode = 1;
}

message HiLink {
    option (path) = "/bmc/kepler/Systems/:SystemId/PCIeDevices/HiLink/:ID";

    BizTopoNode BizTopoNode = 1;
}

message UnitConfig {
    option (path) = "/bmc/kepler/Systems/:SystemId/PCIeDevices/UnitConfig/:ID";

    BizTopoNode BizTopoNode = 1;
}

message SerdesModeConfig {
    option (path) = "/bmc/kepler/Systems/:SystemId/PCIeDevices/SerdesModeConfig/:ID";

    BizTopoNode BizTopoNode = 1;
}