/** @file
  IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.

  This file contains all NetFn App commands, including:
    IPM Device "Global" Commands (Chapter 20)
    Firmware Firewall & Command Discovery Commands (Chapter 21)
    BMC Watchdog Timer Commands (Chapter 27)
    IPMI Messaging Support Commands (Chapter 22)
    RMCP+ Support and Payload Commands (Chapter 24)

  See IPMI specification, Appendix G, Command Assignments
  and Appendix H, Sub-function Assignments.

  Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.<BR>
  Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#ifndef _IPMI_NET_FN_APP_H_
#define _IPMI_NET_FN_APP_H_

#pragma pack(1)
//
// Net function definition for App command
//
#define IPMI_NETFN_APP  0x06

//
//  Below is Definitions for IPM Device "Global" Commands  (Chapter 20)
//

//
//  Definitions for Get Device ID command
//
#define IPMI_APP_GET_DEVICE_ID  0x1

//
//  Constants and Structure definitions for "Get Device ID" command to follow here
//
typedef union {
  struct {
    UINT8    DeviceRevision : 4;
    UINT8    Reserved       : 3;
    UINT8    DeviceSdr      : 1;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_DEVICE_ID_DEVICE_REV;

typedef union {
  struct {
    UINT8    MajorFirmwareRev : 7;
    UINT8    UpdateMode       : 1;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_DEVICE_ID_FIRMWARE_REV_1;

typedef union {
  struct {
    UINT8    SensorDeviceSupport  : 1;
    UINT8    SdrRepositorySupport : 1;
    UINT8    SelDeviceSupport     : 1;
    UINT8    FruInventorySupport  : 1;
    UINT8    IpmbMessageReceiver  : 1;
    UINT8    IpmbMessageGenerator : 1;
    UINT8    BridgeSupport        : 1;
    UINT8    ChassisSupport       : 1;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_DEVICE_ID_DEVICE_SUPPORT;

typedef struct {
  UINT8                                CompletionCode;
  UINT8                                DeviceId;
  IPMI_GET_DEVICE_ID_DEVICE_REV        DeviceRevision;
  IPMI_GET_DEVICE_ID_FIRMWARE_REV_1    FirmwareRev1;
  UINT8                                MinorFirmwareRev;
  UINT8                                SpecificationVersion;
  IPMI_GET_DEVICE_ID_DEVICE_SUPPORT    DeviceSupport;
  UINT8                                ManufacturerId[3];
  UINT16                               ProductId;
  UINT32                               AuxFirmwareRevInfo;
} IPMI_GET_DEVICE_ID_RESPONSE;

//
//  Definitions for Cold Reset command
//
#define IPMI_APP_COLD_RESET  0x2

//
//  Constants and Structure definitions for "Cold Reset" command to follow here
//

//
//  Definitions for Warm Reset command
//
#define IPMI_APP_WARM_RESET  0x3

//
//  Constants and Structure definitions for "Warm Reset" command to follow here
//

//
//  Definitions for Get Self Results command
//
#define IPMI_APP_GET_SELFTEST_RESULTS  0x4

//
//  Constants and Structure definitions for "Get Self Test Results" command to follow here
//
typedef struct {
  UINT8    CompletionCode;
  UINT8    Result;
  UINT8    Param;
} IPMI_SELF_TEST_RESULT_RESPONSE;

#define IPMI_APP_SELFTEST_NO_ERROR              0x55
#define IPMI_APP_SELFTEST_NOT_IMPLEMENTED       0x56
#define IPMI_APP_SELFTEST_ERROR                 0x57
#define IPMI_APP_SELFTEST_FATAL_HW_ERROR        0x58
#define IPMI_APP_SELFTEST_INACCESSIBLE_SEL      0x80
#define IPMI_APP_SELFTEST_INACCESSIBLE_SDR      0x40
#define IPMI_APP_SELFTEST_INACCESSIBLE_FRU      0x20
#define IPMI_APP_SELFTEST_IPMB_SIGNAL_FAIL      0x10
#define IPMI_APP_SELFTEST_SDR_REPOSITORY_EMPTY  0x08
#define IPMI_APP_SELFTEST_FRU_CORRUPT           0x04
#define IPMI_APP_SELFTEST_FW_BOOTBLOCK_CORRUPT  0x02
#define IPMI_APP_SELFTEST_FW_CORRUPT            0x01

//
//  Definitions for Manufacturing Test ON command
//
#define IPMI_APP_MANUFACTURING_TEST_ON  0x5

//
//  Constants and Structure definitions for "Manufacturing Test ON" command to follow here
//

//
//  Definitions for Set ACPI Power State command
//
#define IPMI_APP_SET_ACPI_POWERSTATE  0x6

//
//  Constants and Structure definitions for "Set ACPI Power State" command to follow here
//

//
//  Definitions for System Power State
//
// Working
#define IPMI_SYSTEM_POWER_STATE_S0_G0  0x0
#define IPMI_SYSTEM_POWER_STATE_S1     0x1
#define IPMI_SYSTEM_POWER_STATE_S2     0x2
#define IPMI_SYSTEM_POWER_STATE_S3     0x3
#define IPMI_SYSTEM_POWER_STATE_S4     0x4
// Soft off
#define IPMI_SYSTEM_POWER_STATE_S5_G2  0x5
// Sent when message source cannot differentiate between S4 and S5
#define IPMI_SYSTEM_POWER_STATE_S4_S5  0x6
// Mechanical off
#define IPMI_SYSTEM_POWER_STATE_G3  0x7
// Sleeping - cannot differentiate between S1-S3
#define IPMI_SYSTEM_POWER_STATE_SLEEPING  0x8
// Sleeping - cannot differentiate between S1-S4
#define IPMI_SYSTEM_POWER_STATE_G1_SLEEPING  0x9
// S5 entered by override
#define IPMI_SYSTEM_POWER_STATE_OVERRIDE    0xA
#define IPMI_SYSTEM_POWER_STATE_LEGACY_ON   0x20
#define IPMI_SYSTEM_POWER_STATE_LEGACY_OFF  0x21
#define IPMI_SYSTEM_POWER_STATE_UNKNOWN     0x2A
#define IPMI_SYSTEM_POWER_STATE_NO_CHANGE   0x7F

//
//  Definitions for Device Power State
//
#define IPMI_DEVICE_POWER_STATE_D0         0x0
#define IPMI_DEVICE_POWER_STATE_D1         0x1
#define IPMI_DEVICE_POWER_STATE_D2         0x2
#define IPMI_DEVICE_POWER_STATE_D3         0x3
#define IPMI_DEVICE_POWER_STATE_UNKNOWN    0x2A
#define IPMI_DEVICE_POWER_STATE_NO_CHANGE  0x7F

typedef union {
  struct {
    UINT8    PowerState  : 7;
    UINT8    StateChange : 1;
  } Bits;
  UINT8    Uint8;
} IPMI_ACPI_POWER_STATE;

typedef struct {
  IPMI_ACPI_POWER_STATE    SystemPowerState;
  IPMI_ACPI_POWER_STATE    DevicePowerState;
} IPMI_SET_ACPI_POWER_STATE_REQUEST;

//
//  Definitions for Get ACPI Power State command
//
#define IPMI_APP_GET_ACPI_POWERSTATE  0x7

//
//  Constants and Structure definitions for "Get ACPI Power State" command to follow here
//

//
//  Definitions for Get Device GUID command
//
#define IPMI_APP_GET_DEVICE_GUID  0x8

//
//  Constants and Structure definitions for "Get Device GUID" command to follow here
//
//
//  Message structure definition for "Get Device Guid" IPMI command
//
typedef struct {
  UINT8    CompletionCode;
  UINT8    Guid[16];
} IPMI_GET_DEVICE_GUID_RESPONSE;

//
//  Below is Definitions for BMC Watchdog Timer Commands (Chapter 27)
//

//
//  Definitions for Reset WatchDog Timer command
//
#define IPMI_APP_RESET_WATCHDOG_TIMER  0x22

//
//  Definitions for Set WatchDog Timer command
//
#define IPMI_APP_SET_WATCHDOG_TIMER  0x24

//
//  Constants and Structure definitions for "Set WatchDog Timer" command to follow here
//

//
// Definitions for watchdog timer use
//
#define IPMI_WATCHDOG_TIMER_BIOS_FRB2  0x1
#define IPMI_WATCHDOG_TIMER_BIOS_POST  0x2
#define IPMI_WATCHDOG_TIMER_OS_LOADER  0x3
#define IPMI_WATCHDOG_TIMER_SMS        0x4
#define IPMI_WATCHDOG_TIMER_OEM        0x5

//
//  Structure definition for timer Use
//
typedef union {
  struct {
    UINT8    TimerUse                  : 3;
    UINT8    Reserved                  : 3;
    UINT8    TimerRunning              : 1;
    UINT8    TimerUseExpirationFlagLog : 1;
  } Bits;
  UINT8    Uint8;
} IPMI_WATCHDOG_TIMER_USE;

//
//  Definitions for watchdog timeout action
//
#define IPMI_WATCHDOG_TIMER_ACTION_NO_ACTION    0x0
#define IPMI_WATCHDOG_TIMER_ACTION_HARD_RESET   0x1
#define IPMI_WATCHDOG_TIMER_ACTION_POWER_DONW   0x2
#define IPMI_WATCHDOG_TIMER_ACTION_POWER_CYCLE  0x3

//
//  Definitions for watchdog pre-timeout interrupt
//
#define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_NONE       0x0
#define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_SMI        0x1
#define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_NMI        0x2
#define IPMI_WATCHDOG_PRE_TIMEOUT_INTERRUPT_MESSAGING  0x3

//
//  Structure definitions for Timer Actions
//
typedef union {
  struct {
    UINT8    TimeoutAction       : 3;
    UINT8    Reserved1           : 1;
    UINT8    PreTimeoutInterrupt : 3;
    UINT8    Reserved2           : 1;
  } Bits;
  UINT8    Uint8;
} IPMI_WATCHDOG_TIMER_ACTIONS;

//
//  Bit definitions for Timer use expiration flags
//
#define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_BIOS_FRB2  BIT1
#define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_BIOS_POST  BIT2
#define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_OS_LOAD    BIT3
#define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_SMS_OS     BIT4
#define IPMI_WATCHDOG_TIMER_EXPIRATION_FLAG_OEM        BIT5

typedef struct {
  IPMI_WATCHDOG_TIMER_USE        TimerUse;
  IPMI_WATCHDOG_TIMER_ACTIONS    TimerActions;
  UINT8                          PretimeoutInterval;
  UINT8                          TimerUseExpirationFlagsClear;
  UINT16                         InitialCountdownValue;
} IPMI_SET_WATCHDOG_TIMER_REQUEST;

//
//  Definitions for Get WatchDog Timer command
//
#define IPMI_APP_GET_WATCHDOG_TIMER  0x25

//
//  Constants and Structure definitions for "Get WatchDog Timer" command to follow here
//
typedef struct {
  UINT8                          CompletionCode;
  IPMI_WATCHDOG_TIMER_USE        TimerUse;
  IPMI_WATCHDOG_TIMER_ACTIONS    TimerActions;
  UINT8                          PretimeoutInterval;
  UINT8                          TimerUseExpirationFlagsClear;
  UINT16                         InitialCountdownValue;
  UINT16                         PresentCountdownValue;
} IPMI_GET_WATCHDOG_TIMER_RESPONSE;

//
//  Below is Definitions for IPMI Messaging Support Commands (Chapter 22)
//

//
//  Definitions for Set BMC Global Enables command
//
#define IPMI_APP_SET_BMC_GLOBAL_ENABLES  0x2E

//
//  Constants and Structure definitions for "Set BMC Global Enables " command to follow here
//
typedef union {
  struct {
    UINT8    ReceiveMessageQueueInterrupt    : 1;
    UINT8    EventMessageBufferFullInterrupt : 1;
    UINT8    EventMessageBuffer              : 1;
    UINT8    SystemEventLogging              : 1;
    UINT8    Reserved                        : 1;
    UINT8    Oem0Enable                      : 1;
    UINT8    Oem1Enable                      : 1;
    UINT8    Oem2Enable                      : 1;
  } Bits;
  UINT8    Uint8;
} IPMI_BMC_GLOBAL_ENABLES;

typedef struct {
  IPMI_BMC_GLOBAL_ENABLES    SetEnables;
} IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST;

//
//  Definitions for Get BMC Global Enables command
//
#define IPMI_APP_GET_BMC_GLOBAL_ENABLES  0x2F

//
//  Constants and Structure definitions for "Get BMC Global Enables " command to follow here
//
typedef struct {
  UINT8                      CompletionCode;
  IPMI_BMC_GLOBAL_ENABLES    GetEnables;
} IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE;

//
//  Definitions for Clear Message Flags command
//
#define IPMI_APP_CLEAR_MESSAGE_FLAGS  0x30

//
//  Constants and Structure definitions for "Clear Message Flags" command to follow here
//
typedef union {
  struct {
    UINT8    ReceiveMessageQueue         : 1;
    UINT8    EventMessageBuffer          : 1;
    UINT8    Reserved1                   : 1;
    UINT8    WatchdogPerTimeoutInterrupt : 1;
    UINT8    Reserved2                   : 1;
    UINT8    Oem0                        : 1;
    UINT8    Oem1                        : 1;
    UINT8    Oem2                        : 1;
  } Bits;
  UINT8    Uint8;
} IPMI_MESSAGE_FLAGS;

typedef struct {
  IPMI_MESSAGE_FLAGS    ClearFlags;
} IPMI_CLEAR_MESSAGE_FLAGS_REQUEST;

//
//  Definitions for Get Message Flags command
//
#define IPMI_APP_GET_MESSAGE_FLAGS  0x31

//
//  Constants and Structure definitions for "Get Message Flags" command to follow here
//
typedef struct {
  UINT8                 CompletionCode;
  IPMI_MESSAGE_FLAGS    GetFlags;
} IPMI_GET_MESSAGE_FLAGS_RESPONSE;

//
//  Definitions for Enable Message Channel Receive command
//
#define IPMI_APP_ENABLE_MESSAGE_CHANNEL_RECEIVE  0x32

//
//  Constants and Structure definitions for "Enable Message Channel Receive" command to follow here
//

//
//  Definitions for Get Message command
//
#define IPMI_APP_GET_MESSAGE  0x33

//
//  Constants and Structure definitions for "Get Message" command to follow here
//
typedef union {
  struct {
    UINT8    ChannelNumber          : 4;
    UINT8    InferredPrivilegeLevel : 4;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_MESSAGE_CHANNEL_NUMBER;

typedef struct {
  UINT8                              CompletionCode;
  IPMI_GET_MESSAGE_CHANNEL_NUMBER    ChannelNumber;
  UINT8                              MessageData[0];
} IPMI_GET_MESSAGE_RESPONSE;

//
//  Definitions for Send Message command
//
#define IPMI_APP_SEND_MESSAGE  0x34

//
//  Constants and Structure definitions for "Send Message" command to follow here
//
typedef union {
  struct {
    UINT8    ChannelNumber  : 4;
    UINT8    Authentication : 1;
    UINT8    Encryption     : 1;
    UINT8    Tracking       : 2;
  } Bits;
  UINT8    Uint8;
} IPMI_SEND_MESSAGE_CHANNEL_NUMBER;

typedef struct {
  UINT8                               CompletionCode;
  IPMI_SEND_MESSAGE_CHANNEL_NUMBER    ChannelNumber;
  UINT8                               MessageData[0];
} IPMI_SEND_MESSAGE_REQUEST;

typedef struct {
  UINT8    CompletionCode;
  UINT8    ResponseData[0];
} IPMI_SEND_MESSAGE_RESPONSE;

//
//  Definitions for Read Event Message Buffer command
//
#define IPMI_APP_READ_EVENT_MSG_BUFFER  0x35

//
//  Constants and Structure definitions for "Read Event Message Buffer" command to follow here
//

//
//  Definitions for Get BT Interface Capabilities command
//
#define IPMI_APP_GET_BT_INTERFACE_CAPABILITY  0x36

//
//  Constants and Structure definitions for "Get BT Interface Capabilities" command to follow here
//

//
//  Definitions for Get System GUID command
//
#define IPMI_APP_GET_SYSTEM_GUID  0x37

typedef struct {
  UINT8       CompletionCode;
  EFI_GUID    SystemUuid;
} IPMI_GET_SYSTEM_UUID_RESPONSE;

//
//  Constants and Structure definitions for "Get System GUID" command to follow here
//

//
//  Definitions for Get Channel Authentication Capabilities command
//
#define IPMI_APP_GET_CHANNEL_AUTHENTICATION_CAPABILITIES  0x38

//
//  Constants and Structure definitions for "Get Channel Authentication Capabilities" command to follow here
//

//
//  Definitions for Get Session Challenge command
//
#define IPMI_APP_GET_SESSION_CHALLENGE  0x39

//
//  Constants and Structure definitions for "Get Session Challenge" command to follow here
//

//
//  Definitions for Activate Session command
//
#define IPMI_APP_ACTIVATE_SESSION  0x3A

//
//  Constants and Structure definitions for "Activate Session" command to follow here
//

//
//  Definitions for Set Session Privelege Level command
//
#define IPMI_APP_SET_SESSION_PRIVELEGE_LEVEL  0x3B

//
//  Constants and Structure definitions for "Set Session Privelege Level" command to follow here
//

//
//  Definitions for Close Session command
//
#define IPMI_APP_CLOSE_SESSION  0x3C

//
//  Constants and Structure definitions for "Close Session" command to follow here
//

//
//  Definitions for Get Session Info command
//
#define IPMI_APP_GET_SESSION_INFO  0x3D

//
//  Constants and Structure definitions for "Get Session Info" command to follow here
//

//
//  Definitions for Get Auth Code command
//
#define IPMI_APP_GET_AUTHCODE  0x3F

//
//  Constants and Structure definitions for "Get AuthCode" command to follow here
//

//
//  Definitions for Set Channel Access command
//
#define IPMI_APP_SET_CHANNEL_ACCESS  0x40

//
//  Constants and Structure definitions for "Set Channel Access" command to follow here
//

//
//  Definitions for Get Channel Access command
//
#define IPMI_APP_GET_CHANNEL_ACCESS  0x41

//
//  Constants and Structure definitions for "Get Channel Access" command to follow here
//

//
//  Definitions for channel access memory type in Get Channel Access command request
//
#define IPMI_CHANNEL_ACCESS_MEMORY_TYPE_NON_VOLATILE              0x1
#define IPMI_CHANNEL_ACCESS_MEMORY_TYPE_PRESENT_VOLATILE_SETTING  0x2

//
//  Definitions for channel access modes in Get Channel Access command response
//
#define IPMI_CHANNEL_ACCESS_MODES_DISABLED          0x0
#define IPMI_CHANNEL_ACCESS_MODES_PRE_BOOT_ONLY     0x1
#define IPMI_CHANNEL_ACCESS_MODES_ALWAYS_AVAILABLE  0x2
#define IPMI_CHANNEL_ACCESS_MODES_SHARED            0x3

typedef union {
  struct {
    UINT8    ChannelNo : 4;
    UINT8    Reserved  : 4;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER;

typedef union {
  struct {
    UINT8    Reserved   : 6;
    UINT8    MemoryType : 2;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_CHANNEL_ACCESS_TYPE;

typedef struct {
  IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER    ChannelNumber;
  IPMI_GET_CHANNEL_ACCESS_TYPE              AccessType;
} IPMI_GET_CHANNEL_ACCESS_REQUEST;

typedef union {
  struct {
    UINT8    AccessMode           : 3;
    UINT8    UserLevelAuthEnabled : 1;
    UINT8    MessageAuthEnable    : 1;
    UINT8    Alert                : 1;
    UINT8    Reserved             : 2;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_CHANNEL_ACCESS_CHANNEL_ACCESS;

typedef union {
  struct {
    UINT8    ChannelPriviledgeLimit : 4;
    UINT8    Reserved               : 4;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_CHANNEL_ACCESS_PRIVILEGE_LIMIT;

typedef struct {
  UINT8                                      CompletionCode;
  IPMI_GET_CHANNEL_ACCESS_CHANNEL_ACCESS     ChannelAccess;
  IPMI_GET_CHANNEL_ACCESS_PRIVILEGE_LIMIT    PrivilegeLimit;
} IPMI_GET_CHANNEL_ACCESS_RESPONSE;

//
//  Definitions for Get Channel Info command
//
#define IPMI_APP_GET_CHANNEL_INFO  0x42

//
//  Constants and Structure definitions for "Get Channel Info" command to follow here
//

//
//  Definitions for channel media type
//
// IPMB (I2C)
#define IPMI_CHANNEL_MEDIA_TYPE_IPMB  0x1
// ICMB v1.0
#define IPMI_CHANNEL_MEDIA_TYPE_ICMB_1_0  0x2
// ICMB v0.9
#define IPMI_CHANNEL_MEDIA_TYPE_ICMB_0_9  0x3
// 802.3 LAN
#define IPMI_CHANNEL_MEDIA_TYPE_802_3_LAN  0x4
// Asynch. Serial/Modem (RS-232)
#define IPMI_CHANNEL_MEDIA_TYPE_RS_232  0x5
// Other LAN
#define IPMI_CHANNEL_MEDIA_TYPE_OTHER_LAN  0x6
// PCI SMBus
#define IPMI_CHANNEL_MEDIA_TYPE_PCI_SM_BUS  0x7
// SMBus v1.0/1.1
#define IPMI_CHANNEL_MEDIA_TYPE_SM_BUS_V1  0x8
// SMBus v2.0
#define IPMI_CHANNEL_MEDIA_TYPE_SM_BUS_V2  0x9
// USB 1.x
#define IPMI_CHANNEL_MEDIA_TYPE_USB1  0xA
// USB 2.x
#define IPMI_CHANNEL_MEDIA_TYPE_USB2  0xB
// System Interface (KCS, SMIC, or BT)
#define IPMI_CHANNEL_MEDIA_TYPE_SYSTEM_INTERFACE  0xC
// OEM
#define IPMI_CHANNEL_MEDIA_TYPE_OEM_START  0x60
#define IPMI_CHANNEL_MEDIA_TYPE_OEM_END    0x7F

//
//  Definitions for channel protocol type
//
// Not available
#define IPMI_CHANNEL_PROTOCOL_TYPE_NA  0x00
// IPMB-1.0
#define IPMI_CHANNEL_PROTOCOL_TYPE_IPMB_1_0  0x01
// ICMB-1.0
#define IPMI_CHANNEL_PROTOCOL_TYPE_ICMB_1_0  0x02
// Reserved
#define IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED  0x03
// IPMI SMBUS
#define IPMI_CHANNEL_PROTOCOL_TYPE_IPMI_SMBUS  0x04
// KCS
#define IPMI_CHANNEL_PROTOCOL_TYPE_KCS  0x05
// SMIC
#define IPMI_CHANNEL_PROTOCOL_TYPE_SMIC  0x06
// BT-10
#define IPMI_CHANNEL_PROTOCOL_TYPE_BT_10  0x07
// BT-15
#define IPMI_CHANNEL_PROTOCOL_TYPE_BT_15  0x08
// TMode
#define IPMI_CHANNEL_PROTOCOL_TYPE_TMODE  0x09

typedef union {
  struct {
    UINT8    ChannelNo : 4;
    UINT8    Reserved  : 4;
  } Bits;
  UINT8    Uint8;
} IPMI_CHANNEL_INFO_CHANNEL_NUMBER;

typedef union {
  struct {
    UINT8    ChannelMediumType : 7;
    UINT8    Reserved          : 1;
  } Bits;
  UINT8    Uint8;
} IPMI_CHANNEL_INFO_MEDIUM_TYPE;

typedef union {
  struct {
    UINT8    ChannelProtocolType : 5;
    UINT8    Reserved            : 3;
  } Bits;
  UINT8    Uint8;
} IPMI_CHANNEL_INFO_PROTOCOL_TYPE;

typedef union {
  struct {
    UINT8    ActiveSessionCount : 6;
    UINT8    SessionSupport     : 2;
  } Bits;
  UINT8    Uint8;
} IPMI_CHANNEL_INFO_SESSION_SUPPORT;

typedef struct {
  UINT8                                CompletionCode;
  IPMI_CHANNEL_INFO_CHANNEL_NUMBER     ChannelNumber;
  IPMI_CHANNEL_INFO_MEDIUM_TYPE        MediumType;
  IPMI_CHANNEL_INFO_PROTOCOL_TYPE      ProtocolType;
  IPMI_CHANNEL_INFO_SESSION_SUPPORT    SessionSupport;
  UINT8                                VendorId[3];
  UINT16                               AuxChannelInfo;
} IPMI_GET_CHANNEL_INFO_RESPONSE;

typedef struct {
  IPMI_CHANNEL_INFO_CHANNEL_NUMBER    ChannelNumber;
} IPMI_GET_CHANNEL_INFO_REQUEST;

//
//  Constants and Structure definitions for "Get Channel Info" command to follow here
//

//
//  Definitions for Set User Access command
//
#define IPMI_APP_SET_USER_ACCESS  0x43

//
//  Constants and Structure definitions for "Set User Access" command to follow here
//

//
//  Definitions for Get User Access command
//
#define IPMI_APP_GET_USER_ACCESS  0x44

//
//  Constants and Structure definitions for "Get User Access" command to follow here
//
typedef union {
  struct {
    UINT8    ChannelNo : 4;
    UINT8    Reserved  : 4;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_USER_ACCESS_CHANNEL_NUMBER;

typedef union {
  struct {
    UINT8    UserId   : 6;
    UINT8    Reserved : 2;
  } Bits;
  UINT8    Uint8;
} IPMI_USER_ID;

typedef struct {
  IPMI_GET_USER_ACCESS_CHANNEL_NUMBER    ChannelNumber;
  IPMI_USER_ID                           UserId;
} IPMI_GET_USER_ACCESS_REQUEST;

typedef union {
  struct {
    UINT8    MaxUserId : 6;
    UINT8    Reserved  : 2;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_USER_ACCESS_MAX_USER_ID;

typedef union {
  struct {
    UINT8    CurrentUserId      : 6;
    UINT8    UserIdEnableStatus : 2;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_USER_ACCESS_CURRENT_USER;

typedef union {
  struct {
    UINT8    FixedUserId : 6;
    UINT8    Reserved    : 2;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_USER_ACCESS_FIXED_NAME_USER;

typedef union {
  struct {
    UINT8    UserPrivilegeLimit          : 4;
    UINT8    EnableIpmiMessaging         : 1;
    UINT8    EnableUserLinkAuthetication : 1;
    UINT8    UserAccessAvailable         : 1;
    UINT8    Reserved                    : 1;
  } Bits;
  UINT8    Uint8;
} IPMI_GET_USER_ACCESS_CHANNEL_ACCESS;

typedef struct {
  UINT8                                   CompletionCode;
  IPMI_GET_USER_ACCESS_MAX_USER_ID        MaxUserId;
  IPMI_GET_USER_ACCESS_CURRENT_USER       CurrentUser;
  IPMI_GET_USER_ACCESS_FIXED_NAME_USER    FixedNameUser;
  IPMI_GET_USER_ACCESS_CHANNEL_ACCESS     ChannelAccess;
} IPMI_GET_USER_ACCESS_RESPONSE;

//
//  Definitions for Set User Name command
//
#define IPMI_APP_SET_USER_NAME  0x45

//
//  Constants and Structure definitions for "Set User Name" command to follow here
//
typedef struct {
  IPMI_USER_ID    UserId;
  UINT8           UserName[16];
} IPMI_SET_USER_NAME_REQUEST;

//
//  Definitions for Get User Name command
//
#define IPMI_APP_GET_USER_NAME  0x46

//
//  Constants and Structure definitions for "Get User Name" command to follow here
//
typedef struct {
  IPMI_USER_ID    UserId;
} IPMI_GET_USER_NAME_REQUEST;

typedef struct {
  UINT8    CompletionCode;
  UINT8    UserName[16];
} IPMI_GET_USER_NAME_RESPONSE;

//
//  Definitions for Set User Password command
//
#define IPMI_APP_SET_USER_PASSWORD  0x47

//
//  Constants and Structure definitions for "Set User Password" command to follow here
//

//
//  Definitions for Set User password command operation type
//
#define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_DISABLE_USER   0x0
#define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_ENABLE_USER    0x1
#define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_SET_PASSWORD   0x2
#define IPMI_SET_USER_PASSWORD_OPERATION_TYPE_TEST_PASSWORD  0x3

//
//  Definitions for Set user password command password size
//
#define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_16  0x0
#define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_20  0x1

typedef union {
  struct {
    UINT8    UserId       : 6;
    UINT8    Reserved     : 1;
    UINT8    PasswordSize : 1;
  } Bits;
  UINT8    Uint8;
} IPMI_SET_USER_PASSWORD_USER_ID;

typedef union {
  struct {
    UINT8    Operation : 2;
    UINT8    Reserved  : 6;
  } Bits;
  UINT8    Uint8;
} IPMI_SET_USER_PASSWORD_OPERATION;

typedef struct {
  IPMI_SET_USER_PASSWORD_USER_ID      UserId;
  IPMI_SET_USER_PASSWORD_OPERATION    Operation;
  UINT8                               PasswordData[0]; // 16 or 20 bytes, depending on the 'PasswordSize' field
} IPMI_SET_USER_PASSWORD_REQUEST;

//
//  Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24)
//

//
//  Definitions for Activate Payload command
//
#define IPMI_APP_ACTIVATE_PAYLOAD  0x48

//
//  Constants and Structure definitions for "Activate Payload" command to follow here
//

//
//  Definitions for De-Activate Payload command
//
#define IPMI_APP_DEACTIVATE_PAYLOAD  0x49

//
//  Constants and Structure definitions for "DeActivate Payload" command to follow here
//

//
//  Definitions for Get Payload activation Status command
//
#define IPMI_APP_GET_PAYLOAD_ACTIVATION_STATUS  0x4a

//
//  Constants and Structure definitions for "Get Payload activation Status" command to follow here
//

//
//  Definitions for Get Payload Instance Info command
//
#define IPMI_APP_GET_PAYLOAD_INSTANCE_INFO  0x4b

//
//  Constants and Structure definitions for "Get Payload Instance Info" command to follow here
//

//
//  Definitions for Set User Payload Access command
//
#define IPMI_APP_SET_USER_PAYLOAD_ACCESS  0x4C

//
//  Constants and Structure definitions for "Set User Payload Access" command to follow here
//

//
//  Definitions for Get User Payload Access command
//
#define IPMI_APP_GET_USER_PAYLOAD_ACCESS  0x4D

//
//  Constants and Structure definitions for "Get User Payload Access" command to follow here
//

//
//  Definitions for Get Channel Payload Support command
//
#define IPMI_APP_GET_CHANNEL_PAYLOAD_SUPPORT  0x4E

//
//  Constants and Structure definitions for "Get Channel Payload Support" command to follow here
//

//
//  Definitions for Get Channel Payload Version command
//
#define IPMI_APP_GET_CHANNEL_PAYLOAD_VERSION  0x4F

//
//  Constants and Structure definitions for "Get Channel Payload Version" command to follow here
//

//
//  Definitions for Get Channel OEM Payload Info command
//
#define IPMI_APP_GET_CHANNEL_OEM_PAYLOAD_INFO  0x50

//
//  Constants and Structure definitions for "Get Channel OEM Payload Info" command to follow here
//

//
//  Definitions for  Master Write-Read command
//
#define IPMI_APP_MASTER_WRITE_READ  0x52

//
//  Constants and Structure definitions for "Master Write Read" command to follow here
//

//
//  Definitions for  Get Channel Cipher Suites command
//
#define IPMI_APP_GET_CHANNEL_CIPHER_SUITES  0x54

//
//  Constants and Structure definitions for "Get Channel Cipher Suites" command to follow here
//

//
//  Below is Definitions for RMCP+ Support and Payload Commands (Chapter 24, Section 3)
//

//
//  Definitions for  Suspend-Resume Payload Encryption command
//
#define IPMI_APP_SUSPEND_RESUME_PAYLOAD_ENCRYPTION  0x55

//
//  Constants and Structure definitions for "Suspend-Resume Payload Encryption" command to follow here
//

//
//  Below is Definitions for IPMI Messaging Support Commands (Chapter 22, Section 25 and 9)
//

//
//  Definitions for  Set Channel Security Keys command
//
#define IPMI_APP_SET_CHANNEL_SECURITY_KEYS  0x56

//
//  Constants and Structure definitions for "Set Channel Security Keys" command to follow here
//

//
//  Definitions for  Get System Interface Capabilities command
//
#define IPMI_APP_GET_SYSTEM_INTERFACE_CAPABILITIES  0x57

//
//  Constants and Structure definitions for "Get System Interface Capabilities" command to follow here
//

//
//  Definitions for Get System Interface Capabilities command SSIF transaction support
//
#define IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_SSIF_TRANSACTION_SUPPORT_SINGLE_PARTITION_RW             0x0
#define IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_SSIF_TRANSACTION_SUPPORT_MULTI_PARTITION_RW              0x1
#define IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_SSIF_TRANSACTION_SUPPORT_MULTI_PARTITION_RW_WITH_MIDDLE  0x2

#pragma pack()
#endif
