summaryrefslogtreecommitdiffstats
path: root/src/include/usr/errl/errludcallout.H
blob: 0f1e4c66a88b6bfa860c404e61cbdebc48bc313c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* $Source: src/include/usr/errl/errludcallout.H $                        */
/*                                                                        */
/* OpenPOWER HostBoot Project                                             */
/*                                                                        */
/* Contributors Listed Below - COPYRIGHT 2012,2018                        */
/* [+] International Business Machines Corp.                              */
/*                                                                        */
/*                                                                        */
/* Licensed under the Apache License, Version 2.0 (the "License");        */
/* you may not use this file except in compliance with the License.       */
/* You may obtain a copy of the License at                                */
/*                                                                        */
/*     http://www.apache.org/licenses/LICENSE-2.0                         */
/*                                                                        */
/* Unless required by applicable law or agreed to in writing, software    */
/* distributed under the License is distributed on an "AS IS" BASIS,      */
/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or        */
/* implied. See the License for the specific language governing           */
/* permissions and limitations under the License.                         */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
#ifndef ERRL_UDCALLOU_H
#define ERRL_UDCALLOU_H

/**
 *  @file errludcallout.H
 *
 *  Defines the ErrlUserDetailsCallout class that adds a hardware callout to an
 *  error log as user detail data
 */

#include <errl/errluserdetails.H>
#include <hwas/common/hwasCallout.H>

// Forward reference
namespace TARGETING
{
    class Target;
}

namespace ERRORLOG
{

// Forward class declaration
class ErrlEntry;

/**
 * @class ErrlUserDetailsCallout
 *
 * Adds Callout FFDC to an error log as user detail data
 */
class ErrlUserDetailsCallout : public ErrlUserDetails
{

    friend class ErrlEntry;

private:

    /**
     *  @brief Destructor
     */
    virtual ~ErrlUserDetailsCallout() { };

    /**
     *  @brief Construct a clock callout user detail
     *
     *  @param[in]  i_pTargetData   The hardware target data
     *  @param[in]  i_targetDataLength    length of i_pTargetData
     *  @param[in]  i_clockType     clock type Enum
     *  @param[in]  i_priority      Priority of the callout
     *  @param[in]  i_deconfigState Enum indicating whether the failing part
     *                              should be deconfigured.
     *  @param[in]  i_gardErrorType To indicate what type of failure occurred
     *
     *  @return void
     */
    ErrlUserDetailsCallout(
                       const void *i_pTargetData,
                       uint32_t i_targetDataLength,
                       const HWAS::clockTypeEnum i_clockType,
                       const HWAS::callOutPriority i_priority,
                       const HWAS::DeconfigEnum i_deconfigState,
                       const HWAS::GARD_ErrorType i_gardErrorType);
    /**
     *  @brief Construct a part callout user detail
     *
     *  @param[in]  i_pTargetData   The hardware target data
     *  @param[in]  i_targetDataLength    length of i_pTargetData
     *  @param[in]  i_partType     part type Enum
     *  @param[in]  i_priority      Priority of the callout
     *  @param[in]  i_deconfigState Enum indicating whether the failing part
     *                              should be deconfigured.
     *  @param[in]  i_gardErrorType To indicate what type of failure occurred
     *
     *  @return void
     */
    ErrlUserDetailsCallout(
                       const void *i_pTargetData,
                       uint32_t i_targetDataLength,
                       const HWAS::partTypeEnum i_partType,
                       const HWAS::callOutPriority i_priority,
                       const HWAS::DeconfigEnum i_deconfigState,
                       const HWAS::GARD_ErrorType i_gardErrorType);


    /**
     *  @brief Construct a bus callout user detail
     *
     *  @param[in]  i_pTarget1Data   The hardware target1 data
     *  @param[in]  i_target1DataLength    length of i_pTarget1Data
     *  @param[in]  i_pTarget2Data   The hardware target2 data
     *  @param[in]  i_target2DataLength    length of i_pTarget2Data
     *  @param[in]  i_busType       bus type Enum
     *  @param[in]  i_priority      Priority of the callout
     *  @param[in]  i_flag          Extra flag for callout structure
     *
     *  @return void
     */
    ErrlUserDetailsCallout(
                        const void *i_pTarget1Data,
                        uint32_t i_target1DataLength,
                        const void *i_pTarget2Data,
                        uint32_t i_target2DataLength,
                        const HWAS::busTypeEnum i_busType,
                        const HWAS::callOutPriority i_priority,
                        const HWAS::CalloutFlag_t i_flag );

    /**
     *  @brief Construct a hardware callout user detail
     *
     *  @param[in]  i_pTargetData    The hardware target data
     *  @param[in]  i_targetDataLength    length of i_pTargetData
     *  @param[in]  i_priority      Priority of the callout
     *  @param [in] i_deconfigState Enum indicating whether the failing part
     *               should be deconfigured.
     *  @param [in] i_gardErrorType to indicate what type of failure occurred
     *
     *  @return void
     */
    ErrlUserDetailsCallout(
                        const void *i_pTargetData,
                        uint32_t i_targetDataLength,
                        const HWAS::callOutPriority i_priority,
                        const HWAS::DeconfigEnum i_deconfigState,
                        const HWAS::GARD_ErrorType i_gardErrorType);

    /**
     *  @brief Add a procedure ( software ) callout
     *  Adds the given service procedure to the list
     *  of callouts for the log
     *
     *  @param[in]  i_procedure     Procedure identifier.
     *  @param[in]  i_priority      Priority of the callout
     *
     *  @return void
     */
    ErrlUserDetailsCallout(const HWAS::epubProcedureID i_procedure,
                        const HWAS::callOutPriority i_priority);


    /**
     *  @brief Add a sensor callout
     *  Adds the given sensor to the list of callouts for the log
     *
     *  @param[in]  i_sensorID      Sensor ID
     *  @param[in]  i_sensorType    Type of sensor being added
     *  @param[in]  i_priority      Priority of the callout
     *
     *  @return void
     */
    ErrlUserDetailsCallout(const uint32_t i_sensorID,
                        const HWAS::sensorTypeEnum i_sensorType,
                        const HWAS::callOutPriority i_priority );


    /**
     *  @brief Construct an i2c device callout user detail
     *
     *  @param[in]  i_pTargData     The hardware target data or in other words
     *                              the bytes in memory that comprise the
     *                              entity path of the target
     *  @param[in]  i_targDataLen   length of i_pTargData in bytes
     *  @param[in]  i_engine        The i2c device engine
     *  @param[in]  i_port          The i2c device port
     *  @param[in]  i_address       The i2c device address
     *  @param[in]  i_priority      Priority of the callout
     *
     *  @return void
     */
    ErrlUserDetailsCallout(
                        const void *i_pTargData,
                        const uint32_t i_targDataLen,
                        const uint8_t i_engine,
                        const uint8_t i_port,
                        const uint8_t i_address,
                        const HWAS::callOutPriority i_priority);


    // Disabled
    ErrlUserDetailsCallout(const ErrlUserDetailsCallout &);
    ErrlUserDetailsCallout & operator=(const ErrlUserDetailsCallout &);

};

}

#endif

OpenPOWER on IntegriCloud