INSTINCT Code Coverage Report


Directory: src/
File: Nodes/DataLogger/GNSS/UartDataLogger.cpp
Date: 2025-02-07 16:54:41
Exec Total Coverage
Lines: 13 43 30.2%
Functions: 4 12 33.3%
Branches: 9 52 17.3%

Line Branch Exec Source
1 // This file is part of INSTINCT, the INS Toolkit for Integrated
2 // Navigation Concepts and Training by the Institute of Navigation of
3 // the University of Stuttgart, Germany.
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
9 #include "UartDataLogger.hpp"
10
11 #include "NodeData/General/UartPacket.hpp"
12
13 #include "util/Logger.hpp"
14
15 #include <iomanip> // std::setprecision
16
17 #include "internal/NodeManager.hpp"
18 namespace nm = NAV::NodeManager;
19 #include "internal/FlowManager.hpp"
20
21 112 NAV::UartDataLogger::UartDataLogger()
22
3/6
✓ Branch 1 taken 112 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 112 times.
✗ Branch 5 not taken.
✓ Branch 8 taken 112 times.
✗ Branch 9 not taken.
112 : Node(typeStatic())
23 {
24 LOG_TRACE("{}: called", name);
25
26 112 _fileType = FileType::BINARY;
27
28 112 _hasConfig = true;
29 112 _guiConfigDefaultWindowSize = { 380, 70 };
30
31
4/8
✓ Branch 1 taken 112 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 112 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 112 times.
✓ Branch 9 taken 112 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
336 nm::CreateInputPin(this, "writeObservation", Pin::Type::Flow, { NAV::UartPacket::type() }, &UartDataLogger::writeObservation);
32 224 }
33
34 224 NAV::UartDataLogger::~UartDataLogger()
35 {
36 LOG_TRACE("{}: called", nameId());
37 224 }
38
39 224 std::string NAV::UartDataLogger::typeStatic()
40 {
41
1/2
✓ Branch 1 taken 224 times.
✗ Branch 2 not taken.
448 return "UartDataLogger";
42 }
43
44 std::string NAV::UartDataLogger::type() const
45 {
46 return typeStatic();
47 }
48
49 112 std::string NAV::UartDataLogger::category()
50 {
51
1/2
✓ Branch 1 taken 112 times.
✗ Branch 2 not taken.
224 return "Data Logger";
52 }
53
54 void NAV::UartDataLogger::guiConfig()
55 {
56 if (FileWriter::guiConfig(".ubx", { ".ubx" }, size_t(id), nameId()))
57 {
58 flow::ApplyChanges();
59 doDeinitialize();
60 }
61 }
62
63 [[nodiscard]] json NAV::UartDataLogger::save() const
64 {
65 LOG_TRACE("{}: called", nameId());
66
67 json j;
68
69 j["FileWriter"] = FileWriter::save();
70
71 return j;
72 }
73
74 void NAV::UartDataLogger::restore(json const& j)
75 {
76 LOG_TRACE("{}: called", nameId());
77
78 if (j.contains("FileWriter"))
79 {
80 FileWriter::restore(j.at("FileWriter"));
81 }
82 }
83
84 void NAV::UartDataLogger::flush()
85 {
86 _filestream.flush();
87 }
88
89 bool NAV::UartDataLogger::initialize()
90 {
91 LOG_TRACE("{}: called", nameId());
92
93 return FileWriter::initialize();
94 }
95
96 void NAV::UartDataLogger::deinitialize()
97 {
98 LOG_TRACE("{}: called", nameId());
99
100 FileWriter::deinitialize();
101 }
102
103 void NAV::UartDataLogger::writeObservation(NAV::InputPin::NodeDataQueue& queue, size_t /* pinIdx */)
104 {
105 auto obs = std::static_pointer_cast<const UartPacket>(queue.extract_front());
106
107 if (obs->raw.getRawDataLength() > 0)
108 {
109 _filestream.write(reinterpret_cast<const char*>(obs->raw.getRawData().data()), static_cast<std::streamsize>(obs->raw.getRawDataLength()));
110 }
111 else
112 {
113 LOG_ERROR("{}: Tried to write binary, but observation had no binary data.", nameId());
114 }
115 }
116