F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
ConsoleTextLoggerImplCommon.cpp
Go to the documentation of this file.
2 #include <Fw/Logger/Logger.hpp>
3 #include <Fw/Types/Assert.hpp>
5 
6 namespace Svc {
7 static_assert(std::numeric_limits<FwSizeType>::max() >= PASSIVE_TEXT_LOGGER_ID_FILTER_SIZE,
8  "PASSIVE_TEXT_LOGGER_ID_FILTER_SIZE must fit within range of FwSizeType");
9 
11  : PassiveTextLoggerComponentBase(compName), m_numFilteredIDs(0), m_severityFilter() {
12  // Set severity filter defaults from config
19 }
20 
22 
24  FW_ASSERT(filteredIds != nullptr || count == 0);
25  FW_ASSERT(count <= PASSIVE_TEXT_LOGGER_ID_FILTER_SIZE, static_cast<FwAssertArgType>(count),
27 
28  this->m_numFilteredIDs = count;
29  for (FwSizeType entry = 0; entry < count; entry++) {
30  this->m_filteredIDs[entry] = filteredIds[entry];
31  }
32 }
33 
35  this->m_severityFilter.setFilter(severity, enabled);
36 }
37 
38 void ConsoleTextLoggerImpl::TextLogger_handler(FwIndexType portNum,
39  FwEventIdType id,
40  Fw::Time& timeTag,
41  const Fw::LogSeverity& severity,
42  Fw::TextLogString& text) {
43  // Check severity filter
44  if (this->m_severityFilter.isFiltered(severity)) {
45  return;
46  }
47 
48  // Check event ID filters
49  for (FwSizeType i = 0; i < this->m_numFilteredIDs; i++) {
50  if (this->m_filteredIDs[i] == id) {
51  return;
52  }
53  }
54 
55  const char* severityString = nullptr;
56  switch (severity.e) {
58  severityString = "FATAL";
59  break;
61  severityString = "WARNING_HI";
62  break;
64  severityString = "WARNING_LO";
65  break;
67  severityString = "COMMAND";
68  break;
70  severityString = "ACTIVITY_HI";
71  break;
73  severityString = "ACTIVITY_LO";
74  break;
76  severityString = "DIAGNOSTIC";
77  break;
78  default:
79  severityString = "SEVERITY ERROR";
80  break;
81  }
82  FW_ASSERT(severityString != nullptr);
83  Fw::Logger::log("EVENT: (%" PRI_FwEventIdType ") (%" PRI_FwTimeBaseStoreType ":%" PRIu32 ",%" PRIu32 ") %s: %s\n",
84  id, static_cast<FwTimeBaseStoreType>(timeTag.getTimeBase()), timeTag.getSeconds(),
85  timeTag.getUSeconds(), severityString, text.toChar());
86 }
87 } // namespace Svc
PlatformSizeType FwSizeType
Auto-generated base for PassiveTextLogger component.
static void log(const char *format,...)
log a formated string with supplied arguments
Definition: Logger.cpp:21
TimeBase getTimeBase() const
Definition: Time.cpp:136
void setFilter(Fw::LogSeverity severity, bool enabled)
Software diagnostic events.
#define PRI_FwEventIdType
FwIdType FwEventIdType
The type of an event identifier.
Less important informational events.
An activity related to commanding.
A less serious but recoverable event.
void configure(const FwEventIdType *filteredIds, FwSizeType count)
Configure component with event ID filters.
U32 getSeconds() const
Definition: Time.cpp:128
A serious but recoverable event.
const char * toChar() const
Convert to a C-style char*.
Enum representing event severity.
enum T e
The raw enum value.
#define PRI_FwTimeBaseStoreType
Important informational events.
U32 getUSeconds() const
Definition: Time.cpp:132
PlatformIndexType FwIndexType
A fatal non-recoverable event.
RateGroupDivider component implementation.
void setSeverityFilter(Fw::LogSeverity severity, bool enabled)
#define FW_ASSERT(...)
Definition: Assert.hpp:14
bool isFiltered(Fw::LogSeverity severity) const