RTC Toolkit 6.0.0
Loading...
Searching...
No Matches
computation.hpp
Go to the documentation of this file.
1
11
12#ifndef RTCTK_EXAMPLEDATATASK_MEASURETEL_COMPUTATION_HPP
13#define RTCTK_EXAMPLEDATATASK_MEASURETEL_COMPUTATION_HPP
14
18
19#include <chrono>
20#include <mutex>
21#include <optional>
22#include <vector>
23
24namespace rtctk::exampleDataTask {
25
26// the type of the shm supertopic
27using TopicType = rtctk::exampleTopic::ScaoLoopTopic;
28
29// type of the user-owned sample buffer
30using BufferType = std::vector<decltype(decltype(TopicType::wfs)::slopes)>;
31
32class Computation : public dataTask::ComputationBase<TopicType> {
33public:
35
36 enum class Algorithm : uint8_t { Mean, Median };
37
38 struct Result {
39 std::vector<float> avg_values;
40 uint32_t some_scalar;
41 };
42
43 struct ResultIf {
44 virtual ~ResultIf() = default;
45 virtual void OnResultAvailable(const Result& result) = 0;
46 };
47
49 ResultIf& publisher,
50 const std::string& shm_name,
51 size_t to_read,
52 size_t to_skip,
53 std::chrono::milliseconds sample_timeout,
54 std::optional<numapp::NumaPolicies> thread_policies);
55
56 ~Computation() override;
57
58 Result& ComputeSync(Algorithm algorithm);
59
60private:
61 void OnCycleStart(size_t to_read) override;
62
63 void CopyData(size_t sample_idx, const TopicType& sample) noexcept override;
64
65 void Compute() override;
66
67 void Publish() override;
68
69 ResultIf& m_publisher;
70 Algorithm m_algorithm;
71 BufferType m_sample_buffer;
72 Result m_result;
73};
74
75} // namespace rtctk::exampleDataTask
76
77#endif // RTCTK_EXAMPLEDATATASK_MEASURETEL_COMPUTATION_HPP
Container class that holds services of any type.
Definition serviceContainer.hpp:38
TopicType TopicType
Definition computationBase.hpp:184
Definition computation.hpp:35
Result & ComputeSync(Algorithm algorithm)
One way to make result available to BusinessLogic is to return a reference here.
Definition computation.cpp:65
rtctk::componentFramework::ServiceContainer ServiceContainer
Definition computation.hpp:37
Computation()
Definition computation.hpp:38
Algorithm
Definition computation.hpp:36
@ Mean
Definition computation.hpp:36
@ Median
Definition computation.hpp:36
Base class for Data Task computations.
Definition businessLogic.cpp:26
std::vector< decltype(decltype(TopicType::wfs)::slopes)> BufferType
Definition computation.hpp:33
rtctk::exampleTopic::ScaoLoopTopic TopicType
Definition computation.hpp:30
A simple Stop Token.
virtual void OnResultAvailable(const Result &result)=0
Definition computation.hpp:42
std::vector< float > avg_values
Definition computation.hpp:39
uint32_t some_scalar
Definition computation.hpp:40
WfsLoopBaseTopic< N_SUBAPS > wfs
Definition topics.hpp:37
Common topic definitions used in various examples.