GCC Code Coverage Report


Directory: ./
File: firmware/util/datalogging.h
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 11 0 11
Functions: 100.0% 4 0 4
Branches: -% 0 0 0
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 /**
2 * @file datalogging.h
3 * @brief Buffered console output stream header
4 *
5 * @date Feb 25, 2013
6 * @author Andrey Belomutskiy, (c) 2012-2020
7 */
8
9 #pragma once
10
11 #include <cstdarg>
12 #include <cstdint>
13 #include <cstddef>
14
15 // todo: migrate to external buffer so that different instances have different
16 // size of buffers?
17 class Logging {
18 public:
19 Logging() = delete;
20 Logging(const char *name, char *buffer, int bufferSize);
21
22 void reset();
23
24 void append(const char *text);
25 void appendFast(const char *text);
26 void appendPrintf(const char *fmt, ...)
27 #if EFI_PROD_CODE
28 __attribute__ ((format (printf, 2, 3)))
29 #endif
30 ;
31 void appendFloat(float value, int precision);
32
33 26581 void terminate() {
34 26581 linePointer[0] = '\0';
35 26581 }
36
37 /**
38 * This macro breaks the normal zero=termination constraint, please take care of this outside of this function
39 */
40 79743 void appendChar(char c) {
41 79743 *linePointer = c;
42 79743 linePointer++;
43 79743 }
44
45 27164 size_t loggingSize() const {
46 27164 return (uintptr_t)linePointer - (uintptr_t)buffer;
47 }
48
49 27164 size_t remainingSize() const {
50 27164 return bufferSize - loggingSize();
51 }
52
53 //private:
54 bool validateBuffer(uint32_t extraLen);
55
56 const char* const name = nullptr;
57
58 /**
59 * Zero-terminated buffer of pending debug message
60 *
61 * Unless a larger external buffer is specified, this is just a pointer to DEFAULT_BUFFER
62 */
63 char* const buffer = nullptr;
64 const int bufferSize = 0;
65
66 /**
67 * This pointer is always pointing at the position within the buffer into which next
68 * write operation would append additional data
69 */
70 char *linePointer = nullptr;
71 };
72
73 class LoggingWithStorage : public Logging {
74 public:
75 explicit LoggingWithStorage(const char *name);
76 char DEFAULT_BUFFER[100];
77 };
78
79 void initLoggingExt(Logging *logging, const char *name, char *buffer, int bufferSize);
80