1 #pragma once
2
3 #include <cstddef> // for size_t
4
5 namespace attn
6 {
7 namespace pel
8 {
9
10 enum class SectionID
11 {
12 privateHeader = 0x5048, // 'PH'
13 userHeader = 0x5548, // 'UH'
14 primarySRC = 0x5053, // 'PS'
15 extendedHeader = 0x4548, // 'EH'
16 };
17
18 enum class ComponentID
19 {
20 attentionHandler = 0xd100
21 };
22
23 enum class CreatorID
24 {
25 hostboot = 'B',
26 hypervisor = 'H',
27 openbmc = 'O'
28 };
29
30 enum class SubsystemID
31 {
32 hypervisor = 0x82,
33 hostboot = 0x8a,
34 openbmc = 0x8d
35 };
36
37 enum class Severity
38 {
39 information = 0x00,
40 termination = 0x51
41 };
42
43 enum class EventType
44 {
45 na = 0x00,
46 trace = 0x02
47 };
48
49 enum class ActionFlags
50 {
51 service = 0x8000,
52 hidden = 0x4000,
53 report = 0x2000,
54 call = 0x0800
55 };
56
operator |(ActionFlags a,ActionFlags b)57 inline ActionFlags operator|(ActionFlags a, ActionFlags b)
58 {
59 return static_cast<ActionFlags>(static_cast<int>(a) | static_cast<int>(b));
60 }
61
62 enum class EventScope
63 {
64 platform = 0x03
65 };
66
67 constexpr size_t numSrcWords = 8; // number of SRC hex words
68 const size_t asciiStringSize = 32; // size of SRC ascii string
69 const size_t mtmsSize = 20; // size of an mtms field
70
71 } // namespace pel
72 } // namespace attn
73