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     report  = 0x2000,
53     call    = 0x0800
54 };
55 
56 inline ActionFlags operator|(ActionFlags a, ActionFlags b)
57 {
58     return static_cast<ActionFlags>(static_cast<int>(a) | static_cast<int>(b));
59 }
60 
61 enum class EventScope
62 {
63     platform = 0x03
64 };
65 
66 constexpr size_t numSrcWords = 8;  // number of SRC hex words
67 const size_t asciiStringSize = 32; // size of SRC ascii string
68 const size_t mtmsSize        = 20; // size of an mtms field
69 
70 } // namespace pel
71 } // namespace attn
72