RTC Toolkit 6.0.0
Loading...
Searching...
No Matches
computation.hpp
Go to the documentation of this file.
1
11
12#ifndef RTCTK_EXAMPLEDATATASK_COMPUTATION_HPP
13#define RTCTK_EXAMPLEDATATASK_COMPUTATION_HPP
14
17
20
21#include <chrono>
22#include <mutex>
23#include <optional>
24#include <vector>
25
26namespace rtctk::exampleDataTask {
27
28// the type of the shm supertopic
29using TopicType = rtctk::exampleTopic::ScaoLoopTopic;
30
31// type of the user-owned sample buffer
32using BufferType = std::vector<decltype(decltype(TopicType::wfs)::slopes)>;
33
34class Computation : public dataTask::ComputationBase<TopicType> {
35public:
37
38 template <typename T>
40
41 struct Result {
42 std::vector<float> avg_slopes;
43 std::vector<float> avg_modes;
44 };
45
46 struct ResultIf {
47 virtual ~ResultIf() = default;
48 virtual void OnResultAvailable(const Result& result) = 0;
49 };
50
52 ResultIf& publisher,
53 const std::string& shm_name,
54 size_t to_read,
55 size_t to_skip,
56 std::chrono::milliseconds sample_timeout,
57 std::optional<numapp::NumaPolicies> thread_policies,
58 size_t n_slopes,
59 size_t n_modes);
60
61 ~Computation() override;
62
64
65private:
66 void CopyData(size_t sample_idx, const TopicType& sample) noexcept override;
67
68 void Compute() override;
69
70 void Publish() override;
71
72 ResultIf& m_publisher;
73 size_t m_slopes;
74 size_t m_modes;
75 std::mutex m_mutex; // protects m_s2m_matrix from concurrent access
76 MatrixBuffer<float> m_s2m_matrix;
77 BufferType m_sample_buffer;
78 Result m_result;
79};
80
81} // namespace rtctk::exampleDataTask
82
83#endif // RTCTK_EXAMPLEDATATASK_COMPUTATION_HPP
A buffer class representing 2D matrix data.
Definition matrixBuffer.hpp:27
Container class that holds services of any type.
Definition serviceContainer.hpp:38
TopicType TopicType
Definition computationBase.hpp:184
Definition computation.hpp:35
rtctk::componentFramework::MatrixBuffer< T > MatrixBuffer
Definition computation.hpp:40
rtctk::componentFramework::ServiceContainer ServiceContainer
Definition computation.hpp:37
void SetSlopesToModesMatrix(MatrixBuffer< float > &&s2m_matrix)
Computation()
Definition computation.hpp:38
Base class for Data Task computations.
Declaration of the MatrixBuffer template class used in APIs.
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 container that can hold any type of service.
virtual void OnResultAvailable(const Result &result)=0
Definition computation.hpp:42
std::vector< float > avg_modes
Definition computation.hpp:44
std::vector< float > avg_slopes
Definition computation.hpp:43
WfsLoopBaseTopic< N_SUBAPS > wfs
Definition topics.hpp:37
Common topic definitions used in various examples.