/** @file
This library abstract how to send/receive IPMI command.
Copyright (c) 2018-2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _IPMI_COMMAND_LIB_H_
#define _IPMI_COMMAND_LIB_H_
#include
#include
//
// NetFnApp
//
EFI_STATUS
EFIAPI
IpmiGetDeviceId (
OUT IPMI_GET_DEVICE_ID_RESPONSE *DeviceId
);
EFI_STATUS
EFIAPI
IpmiGetSelfTestResult (
OUT IPMI_SELF_TEST_RESULT_RESPONSE *SelfTestResult
);
EFI_STATUS
EFIAPI
IpmiResetWatchdogTimer (
OUT UINT8 *CompletionCode
);
EFI_STATUS
EFIAPI
IpmiSetWatchdogTimer (
IN IPMI_SET_WATCHDOG_TIMER_REQUEST *SetWatchdogTimer,
OUT UINT8 *CompletionCode
);
EFI_STATUS
EFIAPI
IpmiGetWatchdogTimer (
OUT IPMI_GET_WATCHDOG_TIMER_RESPONSE *GetWatchdogTimer
);
EFI_STATUS
EFIAPI
IpmiSetBmcGlobalEnables (
IN IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST *SetBmcGlobalEnables,
OUT UINT8 *CompletionCode
);
EFI_STATUS
EFIAPI
IpmiGetBmcGlobalEnables (
OUT IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE *GetBmcGlobalEnables
);
EFI_STATUS
EFIAPI
IpmiClearMessageFlags (
IN IPMI_CLEAR_MESSAGE_FLAGS_REQUEST *ClearMessageFlagsRequest,
OUT UINT8 *CompletionCode
);
EFI_STATUS
EFIAPI
IpmiGetMessageFlags (
OUT IPMI_GET_MESSAGE_FLAGS_RESPONSE *GetMessageFlagsResponse
);
EFI_STATUS
EFIAPI
IpmiGetMessage (
OUT IPMI_GET_MESSAGE_RESPONSE *GetMessageResponse,
IN OUT UINT32 *GetMessageResponseSize
);
EFI_STATUS
EFIAPI
IpmiSendMessage (
IN IPMI_SEND_MESSAGE_REQUEST *SendMessageRequest,
IN UINT32 SendMessageRequestSize,
OUT IPMI_SEND_MESSAGE_RESPONSE *SendMessageResponse,
IN OUT UINT32 *SendMessageResponseSize
);
//
// NetFnTransport
//
EFI_STATUS
EFIAPI
IpmiSolActivating (
IN IPMI_SOL_ACTIVATING_REQUEST *SolActivatingRequest,
OUT UINT8 *CompletionCode
);
EFI_STATUS
EFIAPI
IpmiSetSolConfigurationParameters (
IN IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST *SetConfigurationParametersRequest,
IN UINT32 SetConfigurationParametersRequestSize,
OUT UINT8 *CompletionCode
);
EFI_STATUS
EFIAPI
IpmiGetSolConfigurationParameters (
IN IPMI_GET_SOL_CONFIGURATION_PARAMETERS_REQUEST *GetConfigurationParametersRequest,
OUT IPMI_GET_SOL_CONFIGURATION_PARAMETERS_RESPONSE *GetConfigurationParametersResponse,
IN OUT UINT32 *GetConfigurationParametersResponseSize
);
//
// NetFnChasis
//
EFI_STATUS
EFIAPI
IpmiGetChassisCapabilities (
OUT IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE *GetChassisCapabilitiesResponse
);
EFI_STATUS
EFIAPI
IpmiGetChassisStatus (
OUT IPMI_GET_CHASSIS_STATUS_RESPONSE *GetChassisStatusResponse
);
EFI_STATUS
EFIAPI
IpmiChassisControl (
IN IPMI_CHASSIS_CONTROL_REQUEST *ChassisControlRequest,
OUT UINT8 *CompletionCode
);
EFI_STATUS
EFIAPI
IpmiSetPowerRestorePolicy (
IN IPMI_SET_POWER_RESTORE_POLICY_REQUEST *ChassisControlRequest,
OUT IPMI_SET_POWER_RESTORE_POLICY_RESPONSE *ChassisControlResponse
);
//
// NetFnStorage
//
EFI_STATUS
EFIAPI
IpmiSetSystemBootOptions (
IN IPMI_SET_BOOT_OPTIONS_REQUEST *BootOptionsRequest,
OUT IPMI_SET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse
);
EFI_STATUS
EFIAPI
IpmiGetSystemBootOptions (
IN IPMI_GET_BOOT_OPTIONS_REQUEST *BootOptionsRequest,
OUT IPMI_GET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse
);
//
// NetFnStorage
//
EFI_STATUS
EFIAPI
IpmiGetFruInventoryAreaInfo (
IN IPMI_GET_FRU_INVENTORY_AREA_INFO_REQUEST *GetFruInventoryAreaInfoRequest,
OUT IPMI_GET_FRU_INVENTORY_AREA_INFO_RESPONSE *GetFruInventoryAreaInfoResponse
);
EFI_STATUS
EFIAPI
IpmiReadFruData (
IN IPMI_READ_FRU_DATA_REQUEST *ReadFruDataRequest,
OUT IPMI_READ_FRU_DATA_RESPONSE *ReadFruDataResponse,
IN OUT UINT32 *ReadFruDataResponseSize
);
EFI_STATUS
EFIAPI
IpmiWriteFruData (
IN IPMI_WRITE_FRU_DATA_REQUEST *WriteFruDataRequest,
IN UINT32 WriteFruDataRequestSize,
OUT IPMI_WRITE_FRU_DATA_RESPONSE *WriteFruDataResponse
);
EFI_STATUS
EFIAPI
IpmiGetSelInfo (
OUT IPMI_GET_SEL_INFO_RESPONSE *GetSelInfoResponse
);
EFI_STATUS
EFIAPI
IpmiGetSelEntry (
IN IPMI_GET_SEL_ENTRY_REQUEST *GetSelEntryRequest,
OUT IPMI_GET_SEL_ENTRY_RESPONSE *GetSelEntryResponse,
IN OUT UINT32 *GetSelEntryResponseSize
);
EFI_STATUS
EFIAPI
IpmiAddSelEntry (
IN IPMI_ADD_SEL_ENTRY_REQUEST *AddSelEntryRequest,
OUT IPMI_ADD_SEL_ENTRY_RESPONSE *AddSelEntryResponse
);
EFI_STATUS
EFIAPI
IpmiPartialAddSelEntry (
IN IPMI_PARTIAL_ADD_SEL_ENTRY_REQUEST *PartialAddSelEntryRequest,
IN UINT32 PartialAddSelEntryRequestSize,
OUT IPMI_PARTIAL_ADD_SEL_ENTRY_RESPONSE *PartialAddSelEntryResponse
);
EFI_STATUS
EFIAPI
IpmiClearSel (
IN IPMI_CLEAR_SEL_REQUEST *ClearSelRequest,
OUT IPMI_CLEAR_SEL_RESPONSE *ClearSelResponse
);
EFI_STATUS
EFIAPI
IpmiGetSelTime (
OUT IPMI_GET_SEL_TIME_RESPONSE *GetSelTimeResponse
);
EFI_STATUS
EFIAPI
IpmiSetSelTime (
IN IPMI_SET_SEL_TIME_REQUEST *SetSelTimeRequest,
OUT UINT8 *CompletionCode
);
EFI_STATUS
EFIAPI
IpmiGetSdrRepositoryInfo (
OUT IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE *GetSdrRepositoryInfoResp
);
EFI_STATUS
EFIAPI
IpmiGetSdr (
IN IPMI_GET_SDR_REQUEST *GetSdrRequest,
OUT IPMI_GET_SDR_RESPONSE *GetSdrResponse,
IN OUT UINT32 *GetSdrResponseSize
);
#endif