* idem for the state and status.
[diffractometer.git] / src / PseudoAxesAdapter.h
blob5cf57f278623ddc5d6469d941b82f94e43d7a7fd
1 #ifndef __PSEUDOAXES_ADAPTER_H__
2 #define __PSEUDOAXES_ADAPTER_H__
4 #include "macros.h"
5 #include "AxisAdapter.h"
6 #include "Matrix.h"
8 // forward declaration
9 namespace PseudoAxes_ns {
10 class PseudoAxes;
13 namespace Diffractometer_ns {
15 //forwar declaration
16 class TangoHKLAdapter;
18 class PseudoAxesAdapter {
19 friend class TangoHKLAdapter;
21 public:
22 PseudoAxesAdapter(TangoHKLAdapter *hklAdapter, size_t _idx);
24 virtual ~PseudoAxesAdapter(void);
26 Matrix<double> const & get_read(void) const {return _read;}
27 Matrix<double> const & get_write(void) const {return _write;}
28 Matrix<char*> const & get_pseudo_axis_names(void) const {return _pseudo_axis_names;}
29 std::string const & get_proxy_name(void) const {return _proxy_name;}
30 Tango::DevState const & get_state(void) const {return _state;}
31 std::string const & get_status(void) const {return _status;}
33 char const * get_name(void) const;
34 void write(Matrix<double> const & write) throw (Tango::DevFailed);
36 double & get_axis_value(size_t idx) {return _read.data[idx];}
37 void set_axis_value(size_t idx, double value);
39 Tango::DevString *get_mode(void);
40 void set_mode(const Tango::DevString name);
42 Tango::DevBoolean get_initialized(void);
43 void set_initialized(const Tango::DevBoolean initialized);
45 Matrix<char *> const &get_mode_names(void) const {return _mode_names;}
46 Matrix<char *> &get_mode_parameters_names(void);
48 Matrix<double> const & get_mode_parameters(void);
49 void set_mode_parameters(Matrix<double> const & values);
51 void set_device(PseudoAxes_ns::PseudoAxes *device) {_device = device;}
53 void init(void);
54 void load(void);
55 void save(void);
57 void add_dynamic_attributes(void);
58 void remove_dynamic_attributes(void);
60 private:
61 TangoHKLAdapter *_hklAdapter;
62 size_t _idx;
63 PseudoAxes_ns::PseudoAxes *_device;
64 Matrix<double> _read;
65 Matrix<double> _write;
66 Matrix<char *> _pseudo_axis_names;
67 Matrix<char *> _mode_names;
68 Matrix<double> _mode_parameters;
69 Matrix<char *> _mode_parameters_names;
70 std::string _proxy_name;
71 std::vector<Tango::Attr*> _dynamic_attribute_pseudo_axes_axis;
72 std::vector<AxisAdapter *> _axes;
73 Tango::DevState _state;
74 std::string _status;
76 void update_axes_i(HklPseudoAxisEngine *engine);
77 void update_state_and_status_i(void);
78 void load_1(void);
83 #endif // __PSEUDOAXES_ADAPTER_H__