GCC Code Coverage Report


Directory: ./
File: firmware/controllers/core/big_buffer.h
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 1 0 1
Functions: 100.0% 1 0 1
Branches: -% 0 0 0
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 // This file handles the "big buffer" - a shared buffer that can be used by multiple users depending on which function is enabled
2
3 #pragma once
4
5 #ifndef BIG_BUFFER_SIZE
6 #define BIG_BUFFER_SIZE 8192
7 #endif
8
9 enum class BigBufferUser {
10 None,
11 ToothLogger,
12 PerfTrace,
13 TriggerScope,
14 // todo: actually start using this!
15 KnockSpectrogram,
16 };
17
18 class BigBufferHandle {
19 public:
20 1 BigBufferHandle() = default;
21 BigBufferHandle(void* buffer, BigBufferUser user);
22 ~BigBufferHandle();
23
24 // But allow moving (passing ownership of the buffer)
25 BigBufferHandle(BigBufferHandle&& other);
26 BigBufferHandle& operator=(BigBufferHandle&&);
27
28 // Implicit conversion operator to bool, so you can do things like if (myBuffer) { ... } as if it was a raw pointer
29 constexpr explicit operator bool() const {
30 return m_bufferPtr != nullptr;
31 }
32
33 template <class TBuffer>
34 const TBuffer* get() const {
35 return reinterpret_cast<TBuffer*>(m_bufferPtr);
36 }
37
38 template <class TBuffer>
39 TBuffer* get() {
40 return reinterpret_cast<TBuffer*>(m_bufferPtr);
41 }
42
43 size_t size() const {
44 return BIG_BUFFER_SIZE;
45 }
46
47 private:
48 void* m_bufferPtr = nullptr;
49 BigBufferUser m_user = BigBufferUser::None;
50 };
51
52 BigBufferHandle getBigBuffer(BigBufferUser user);
53