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

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

    uint16 FanId = 1;
    uint8 Slot = 2;
    uint8 Type = 3;
    string Model = 4;
    uint8 Coefficient = 5;
    uint8 FanHealth = 6;
    string FanEntity = 7;
    uint8 FrontPresence = 8;
    uint8 RearPresence = 9;
    uint16 FrontSpeed = 10;
    uint16 RearSpeed = 11;
    uint8 FrontStatus = 12;
    uint8 RearStatus = 13;
    uint16 FrontRPM = 14;
    uint16 RearRPM = 15;
    float HardwarePWM = 16;
    uint32 PWMPercentage = 17;
    float ExpectedPWM = 18;
    uint8 FanAlarmLed = 19;
    string BOM = 20;
    uint8 SystemId = 21;
    uint32 MaxSupportedPWM = 22;
    uint8 IdentifySpeedLevel = 23;
    string PartNumber = 24;
    uint32 FrontMaxSpeed = 25;
    uint32 RearMaxSpeed = 26;
    bool IsTwins = 27;
}

message Fan {
    option (path) = "/bmc/kepler/Systems/:SystemId/Thermal/Fans/:Id";

    IFan Fan = 1;
}

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

    string Name = 1;
    uint8 Index = 2;
    bool IsDefaultType = 3;
    bool IsTwins = 4;
    uint32 FrontMaxSpeed = 5;
    uint32 RearMaxSpeed = 6;
    uint32 IdentifyRangeLow = 7;
    uint32 IdentifyRangeHigh = 8;
    uint8 MatchedCount = 9;
    string PartNumber = 10;
    string BOM = 11;
    uint8 SystemId = 12;
}

message FanType {
    option (path) = "/bmc/kepler/Systems/:SystemId/Thermal/FanTypes/:Id";

    IFanType FanType = 1;
}