* implemente the state and status for the PseudoAxes class
[diffractometer.git] / src / PseudoAxesAdapter.h
blobe22b929ffb4042b6b3df420e1d7a2cb6391a49b3
1 #ifndef __PSEUDOAXES_ADAPTER_H__
2 #define __PSEUDOAXES_ADAPTER_H__
4 #include <tango.h>
6 #include "AxisAdapter.h"
7 #include "Matrix.h"
9 // forward declaration
10 namespace PseudoAxes_ns {
11 class PseudoAxes;
14 namespace Diffractometer_ns {
16 //forwar declaration
17 class TangoHKLAdapter;
19 class PseudoAxesAdapter {
20 friend class TangoHKLAdapter;
22 public:
23 PseudoAxesAdapter(TangoHKLAdapter *hklAdapter, size_t _idx);
25 Matrix<double> const & get_read(void) const {return _read;}
26 Matrix<double> const & get_write(void) const {return _write;}
27 Matrix<char*> const & get_pseudo_axis_names(void) const {return _pseudo_axis_names;}
28 std::string const & get_proxy_name(void) const {return _proxy_name;}
29 Tango::DevState const & get_state(void) const {return _state;}
30 std::string const & get_status(void) const {return _status;}
32 char const * get_name(void) const;
33 void write(Matrix<double> const & write);
35 double & get_axis_value(size_t idx) {return _read.data[idx];}
36 void set_axis_value(size_t idx, double value);
38 Tango::DevString *get_mode(void);
39 void set_mode(const Tango::DevString name);
41 Matrix<char *> const &get_mode_names(void) const {return _mode_names;}
42 Matrix<char *> &get_mode_parameters_names(void);
44 Matrix<double> const & get_mode_parameters(void);
45 void set_mode_parameters(Matrix<double> const & values);
47 void set_device(PseudoAxes_ns::PseudoAxes *device) {_device = device;}
49 void init(void);
51 private:
52 TangoHKLAdapter *_hklAdapter;
53 size_t _idx;
54 PseudoAxes_ns::PseudoAxes *_device;
55 Matrix<double> _read;
56 Matrix<double> _write;
57 Matrix<char *> _pseudo_axis_names;
58 Matrix<char *> _mode_names;
59 Matrix<double> _mode_parameters;
60 Matrix<char *> _mode_parameters_names;
61 std::string _proxy_name;
62 std::vector<Tango::Attr*> _dynamic_attribute_pseudo_axes_axis;
63 std::vector<AxisAdapter *> _axes;
64 Tango::DevState _state;
65 std::string _status;
67 void update_axes_i(HklPseudoAxisEngine *engine);
68 void update_state_and_status_i(void);
73 #endif // __PSEUDOAXES_ADAPTER_H__