GCC Code Coverage Report


Directory: ./
File: Fw/Port/PortBase.cpp
Date: 2026-09-03 22:12:29
Exec Total Coverage
Lines: 0 48 0.0%
Functions: 0 10 0.0%
Branches: 0 16 0.0%

Line Branch Exec Source
1 #include <Fw/FPrimeBasicTypes.hpp>
2 #include <Fw/Logger/Logger.hpp>
3 #include <Fw/Port/PortBase.hpp>
4 #include <cstdio>
5 #include "Fw/Types/Assert.hpp"
6 #include "Fw/Types/ExternalString.hpp"
7
8 #if FW_PORT_TRACING
9 void setConnTrace(bool trace) {
10 Fw::PortBase::setTrace(trace);
11 }
12
13 namespace Fw {
14 bool PortBase::s_trace = false;
15 }
16
17 #endif // FW_PORT_TRACING
18
19 namespace Fw {
20
21 PortBase::PortBase()
22 : Fw::ObjBase(nullptr),
23 m_connObj(nullptr)
24 #if FW_PORT_TRACING == 1
25 ,
26 m_trace(false),
27 m_ovr_trace(false)
28 #endif
29 {
30 }
31
32 PortBase::~PortBase() {}
33
34 void PortBase::init() {
35 ObjBase::init();
36 }
37
38 bool PortBase::isConnected() const {
39 return m_connObj == nullptr ? false : true;
40 }
41
42 #if FW_PORT_TRACING == 1
43
44 void PortBase::trace() const {
45 // Ports are only traced as part of invocation, which requires a connection
46 FW_ASSERT(this->isConnected());
47 bool do_trace = false;
48
49 if (this->m_ovr_trace) {
50 if (this->m_trace) {
51 do_trace = true;
52 }
53 } else if (PortBase::s_trace) {
54 do_trace = true;
55 }
56
57 if (do_trace) {
58 #if FW_OBJECT_NAMES == 1
59 Fw::Logger::log("Trace: %s\n", this->m_objName.toChar());
60 #else
61 Fw::Logger::log("Trace: %p\n", this);
62 #endif
63 }
64 }
65
66 void PortBase::setTrace(bool trace) {
67 PortBase::s_trace = trace;
68 }
69
70 void PortBase::ovrTrace(bool ovr, bool trace) {
71 this->m_ovr_trace = ovr;
72 this->m_trace = trace;
73 }
74
75 #endif // FW_PORT_TRACING
76
77 #if FW_OBJECT_TO_STRING == 1
78 const char* PortBase::getToStringFormatString() {
79 return "Port: %s %s->(%s)";
80 }
81
82 void PortBase::toString(char* buffer, FwSizeType size) {
83 FW_ASSERT(size > 0);
84 FW_ASSERT(buffer != nullptr);
85 // Get the port-custom format string
86 const char* formatString = this->getToStringFormatString();
87 // Determine this port object name (or use "UNKNOWN")
88 const char* object_name =
89 #if FW_OBJECT_NAMES == 1
90 this->m_objName.toChar();
91 #else
92 "UNKNOWN";
93 #endif
94 // Get the C/NC for connected or not
95 const char* this_is_connected = this->isConnected() ? "C" : "NC";
96
97 // Get the name of the connection object, "UNKNOWN" or "NONE"
98 const char* connected_to = this->isConnected() ?
99 #if FW_OBJECT_NAMES == 1
100 this->m_connObj->getObjName()
101 #else
102 "UNKNOWN"
103 #endif
104 : "None";
105 // Format the external string or use "" on error
106 const Fw::FormatStatus formatStatus = Fw::ExternalString(buffer, static_cast<Fw::ExternalString::SizeType>(size))
107 .format(formatString, object_name, this_is_connected, connected_to);
108 if (formatStatus != Fw::FormatStatus::SUCCESS) {
109 buffer[0] = 0;
110 }
111 }
112 #endif // FW_OBJECT_TO_STRING
113
114 } // namespace Fw
115