#pragma once

#include <util/ffdc_file.hpp>

#include <cstddef> // for size_t
#include <map>
#include <string>
#include <vector>

namespace attn
{

/** @brief Logging level types */
enum level
{
    INFO
};

/** @brief Logging event types */
enum class EventType
{
    Checkstop     = 0,
    Terminate     = 1,
    Vital         = 2,
    HwDiagsFail   = 3,
    AttentionFail = 4
};

/** @brief Maximum length of a single trace event message */
static const size_t trace_msg_max_len = 255;

/** @brief Create trace message template */
template <level L>
void trace(const char* i_message);

/** @brief Commit checkstop event to log */
void eventCheckstop(std::map<std::string, std::string>& i_errors);

/** @brief Commit special attention TI event to log */
void eventTerminate(std::map<std::string, std::string> i_additionalData,
                    char* i_tiInfoData);

/** @brief Commit SBE vital event to log */
void eventVital();

/** @brief Commit analyzer failure event to log */
void eventHwDiagsFail(int i_error);

/** @brief Commit attention handler failure event to log */
void eventAttentionFail(int i_error);

} // namespace attn
