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