RTC Toolkit 5.1.0
Loading...
Searching...
No Matches
computation.hpp
Go to the documentation of this file.
1
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
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;
42 };
43
44 struct ResultIf {
45 virtual ~ResultIf() = default;
46 virtual void OnResultAvailable(const Result& result) = 0;
47 };
48
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
58
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
Result & ComputeSync(Algorithm algorithm)
One way to make result available to BusinessLogic is to return a reference here.
Definition computation.cpp:63
Computation()
Definition computation.hpp:39
Algorithm
Definition computation.hpp:37
Base class for Data Task computations.
elt::mal::future< std::string > InjectReqRepEvent(StateMachineEngine &engine)
Definition malEventInjector.hpp:23
Definition businessLogic.cpp:27
rtctk::exampleTopic::ScaoLoopTopic TopicType
Definition computation.hpp:31
std::vector< decltype(decltype(TopicType::wfs)::slopes)> BufferType
Definition computation.hpp:34
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
Definition topics.hpp:33
WfsLoopBaseTopic< N_SUBAPS > wfs
Definition topics.hpp:38
Common topic definitions used in various examples.