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 
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