Line data Source code
1 : /*! 2 : * \file 3 : * \brief Class module::Controller. 4 : */ 5 : #ifndef CONTROLLER_HPP_ 6 : #define CONTROLLER_HPP_ 7 : 8 : #include <cstdint> 9 : 10 : #include "Module/Stateful/Stateful.hpp" 11 : #include "Tools/Interface/Interface_reset.hpp" 12 : 13 : namespace spu 14 : { 15 : namespace module 16 : { 17 : namespace ctr 18 : { 19 : enum class tsk : size_t 20 : { 21 : control, 22 : reset, 23 : SIZE 24 : }; 25 : 26 : namespace sck 27 : { 28 : enum class control : size_t 29 : { 30 : out, 31 : status 32 : }; 33 : } 34 : } 35 : 36 : class Controller 37 : : public Stateful 38 : , public tools::Interface_reset 39 : { 40 : public: 41 : inline runtime::Task& operator[](const ctr::tsk t); 42 : inline runtime::Socket& operator[](const ctr::sck::control s); 43 : inline runtime::Socket& operator[](const std::string& tsk_sck); 44 : 45 : protected: 46 : const size_t init_path; 47 : size_t path; 48 : 49 : public: 50 : Controller(const size_t init_path = 0); 51 443 : virtual ~Controller() = default; 52 : 53 : virtual void set_path(const size_t path); 54 : size_t get_path() const; 55 : 56 : virtual void reset(); 57 : 58 : template<class A = std::allocator<int8_t>> 59 : void control(std::vector<int8_t, A>& out, const int frame_id = -1, const bool managed_memory = true); 60 : 61 : void control(int8_t* out, const int frame_id = -1, const bool managed_memory = true); 62 : 63 : protected: 64 : virtual void _control(int8_t* out, const size_t frame_id) = 0; 65 : }; 66 : } 67 : } 68 : 69 : #ifndef DOXYGEN_SHOULD_SKIP_THIS 70 : #include "Module/Stateful/Controller/Controller.hxx" 71 : #endif 72 : 73 : #endif /* CONTROLLER_HPP_ */