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 };
16 
17 enum class ComponentID
18 {
19     attentionHandler = 0xd100
20 };
21 
22 enum class CreatorID
23 {
24     hostboot   = 'B',
25     hypervisor = 'H',
26     openbmc    = 'O'
27 };
28 
29 enum class SubsystemID
30 {
31     hypervisor = 0x82,
32     hostboot   = 0x8a,
33     openbmc    = 0x8d
34 };
35 
36 enum class Severity
37 {
38     information = 0x00,
39     termination = 0x51
40 };
41 
42 enum class EventType
43 {
44     na    = 0x00,
45     trace = 0x02
46 };
47 
48 enum class ActionFlags
49 {
50     service = 0x8000,
51     report  = 0x2000,
52     call    = 0x0800
53 };
54 
55 inline ActionFlags operator|(ActionFlags a, ActionFlags b)
56 {
57     return static_cast<ActionFlags>(static_cast<int>(a) | static_cast<int>(b));
58 }
59 
60 enum class EventScope
61 {
62     platform = 0x03
63 };
64 
65 constexpr size_t numSrcWords = 8;  // number of SRC hex words
66 const size_t asciiStringSize = 32; // size of SRC ascii string
67 
68 } // namespace pel
69 } // namespace attn
70