Files

142 lines
3.1 KiB
C++
Raw Permalink Normal View History

2026-04-23 17:07:55 +08:00
#include <ipmid/api-types.hpp>
#include <ipmid/api.hpp>
#include <ipmid/message.hpp>
#include <ipmid/utils.hpp>
#include <sdbusplus/message/types.hpp>
typedef struct {
uint8_t socket_id;
uint8_t channel_id;
uint8_t dimm_id;
uint8_t temp_integer;
uint8_t temp_decimal;
/*Memory temperature infomation(unit °C)*/
}memory_info_t;
#pragma pack(1)
enum class DataType {
TEMPERATURE,
CURRENT,
POWER,
VOLTAGE,
STATUS
};
enum class TempSensor {
TS0,
TS1,
SPD_TS,
MAX_TS01
};
enum class ReqId {
TS0 = 0,
TS1 = 1,
SPD_TEMP = 2,
MAX_TEMP = 3,
VOLTAGE = 4,
CURRENT = 5,
STATUS_REG = 6
};
enum class RailChannel {
SWA,
SWB,
SWC,
SWD,
SWE,
SWF
};
enum class StatusReg {
REG_04 = 0x04,
REG_05 = 0x05,
REG_06 = 0x06,
REG_07 = 0x07,
REG_08 = 0x08,
REG_09 = 0x09,
REG_0A = 0x0A,
REG_0B = 0x0B
};
typedef struct {
int8_t int_part;
uint8_t frac_part;
} dimm_temp_sensor_t;
typedef struct {
int8_t TS0_int;
uint8_t TS0_frac;
int8_t TS1_int;
uint8_t TS1_frac;
int8_t SPD_int;
uint8_t SPD_frac;
} dimm_temp_t;
typedef struct {
uint16_t SWA;
uint16_t SWB;
uint16_t SWC;
uint16_t SWD;
uint16_t SWE;
uint16_t SWF;
} dimm_rail_t;
typedef struct {
uint8_t dimmId;
dimm_temp_t dimmTemp;
dimm_rail_t dimmVolt;
dimm_rail_t dimmCur;
dimm_rail_t dimmPow;
} oem_dimm_info_t;
#pragma pack()
#define MAX_FSC_PWM_CHANNEL 29
#define FSC_FAN_TABLE_AUTO 0
#define FSC_FAN_TABLE_MANUAL 1
typedef struct
{
uint8_t u8ControlMode;
uint8_t u8PWM[MAX_FSC_PWM_CHANNEL];
}SFscControlMode;
namespace ipmi {
constexpr Iana oemIANA =
56799; // 0x00dddf https://www.iana.org/assignments/enterprise-numbers/?page=568
constexpr int prioOem = ipmi::prioMax;
constexpr NetFn netFnOemSelf = ipmi::netFnOemFour; // NetFn is 0x36
namespace ipmiOem {
constexpr Cmd cmdGetDeviceFWVersion = 0x01;
constexpr Cmd cmdSetFanSpeedControlMode = 0x04;
constexpr Cmd cmdGetFanSpeedControlMode = 0x05;
constexpr Cmd cmdSetBIOSPasswordConfig = 0x0E;
constexpr Cmd cmdGetBIOSPasswordConfig = 0x0F;
constexpr Cmd cmdGetPSUInfo = 0x20;
constexpr Cmd cmdSwitchBMCFw = 0x23;
constexpr Cmd cmdGetSetBiosVer = 0x34;
constexpr Cmd cmdRestoreFactoryDefault = 0x35;
constexpr Cmd cmdSetSOLBitrate = 0x36;
constexpr Cmd cmdGet12VPSUADCValue = 0x60;
constexpr Cmd cmdSet12VPSUADCValue = 0x61;
constexpr Cmd cmdDIMMTemperatureValue = 0x62;
constexpr Cmd cmdSetDIMMSetPoint = 0x63;
constexpr Cmd cmdGetDIMMSetPoint = 0x64;
constexpr Cmd cmdSetCoverStatus = 0x65;
constexpr Cmd cmdGetCoverStatus = 0x66;
constexpr Cmd cmdSetCoverPreHeatTemperature = 0x67;
constexpr Cmd cmdGetCoverPreHeatTemperature = 0x68;
constexpr Cmd cmdBiosSetDimmState = 0x69;
constexpr Cmd cmdBiosSetDimmPara = 0x6a;
constexpr Cmd cmdBiosGetDimmPara = 0x6b;
constexpr Cmd cmdGetDimmTemp = 0x6c;
constexpr Cmd cmdGetCoverCurrentTemp = 0x6d;
constexpr Cmd cmdSetCoverFSCEnableStatus = 0x6e;
constexpr Cmd cmdGetCoverFSCEnableStatus = 0x6f;
constexpr Cmd cmdOemI2CReadWrite = 0xA4;
constexpr Cc ccOemInvalidIANA = 0x80;
} // namespace ipmiOem
} // namespace ipmi