#pragma once

#include <cstddef> // for size_t

namespace attn
{
namespace pel
{

enum class SectionID
{
    privateHeader  = 0x5048, // 'PH'
    userHeader     = 0x5548, // 'UH'
    primarySRC     = 0x5053, // 'PS'
    extendedHeader = 0x4548, // 'EH'
};

enum class ComponentID
{
    attentionHandler = 0xd100
};

enum class CreatorID
{
    hostboot   = 'B',
    hypervisor = 'H',
    openbmc    = 'O'
};

enum class SubsystemID
{
    hypervisor = 0x82,
    hostboot   = 0x8a,
    openbmc    = 0x8d
};

enum class Severity
{
    information = 0x00,
    termination = 0x51
};

enum class EventType
{
    na    = 0x00,
    trace = 0x02
};

enum class ActionFlags
{
    service = 0x8000,
    hidden  = 0x4000,
    report  = 0x2000,
    call    = 0x0800
};

inline ActionFlags operator|(ActionFlags a, ActionFlags b)
{
    return static_cast<ActionFlags>(static_cast<int>(a) | static_cast<int>(b));
}

enum class EventScope
{
    platform = 0x03
};

constexpr size_t numSrcWords = 8;  // number of SRC hex words
const size_t asciiStringSize = 32; // size of SRC ascii string
const size_t mtmsSize        = 20; // size of an mtms field

} // namespace pel
} // namespace attn
