1 #ifndef __PSEUDOAXES_ADAPTER_H__
2 #define __PSEUDOAXES_ADAPTER_H__
5 #include "AxisAdapter.h"
9 namespace PseudoAxes_ns
{
13 namespace Diffractometer_ns
{
16 class TangoHKLAdapter
;
18 class PseudoAxesAdapter
{
19 friend class TangoHKLAdapter
;
22 PseudoAxesAdapter(TangoHKLAdapter
*hklAdapter
, size_t _idx
);
24 Matrix
<double> const & get_read(void) const {return _read
;}
25 Matrix
<double> const & get_write(void) const {return _write
;}
26 Matrix
<char*> const & get_pseudo_axis_names(void) const {return _pseudo_axis_names
;}
27 std::string
const & get_proxy_name(void) const {return _proxy_name
;}
28 Tango::DevState
const & get_state(void) const {return _state
;}
29 std::string
const & get_status(void) const {return _status
;}
31 char const * get_name(void) const;
32 void write(Matrix
<double> const & write
) throw (Tango::DevFailed
);
34 double & get_axis_value(size_t idx
) {return _read
.data
[idx
];}
35 void set_axis_value(size_t idx
, double value
);
37 Tango::DevString
*get_mode(void);
38 void set_mode(const Tango::DevString name
);
40 Matrix
<char *> const &get_mode_names(void) const {return _mode_names
;}
41 Matrix
<char *> &get_mode_parameters_names(void);
43 Matrix
<double> const & get_mode_parameters(void);
44 void set_mode_parameters(Matrix
<double> const & values
);
46 void set_device(PseudoAxes_ns::PseudoAxes
*device
) {_device
= device
;}
52 void add_dynamic_attributes(void);
53 void remove_dynamic_attributes(void);
56 TangoHKLAdapter
*_hklAdapter
;
58 PseudoAxes_ns::PseudoAxes
*_device
;
60 Matrix
<double> _write
;
61 Matrix
<char *> _pseudo_axis_names
;
62 Matrix
<char *> _mode_names
;
63 Matrix
<double> _mode_parameters
;
64 Matrix
<char *> _mode_parameters_names
;
65 std::string _proxy_name
;
66 std::vector
<Tango::Attr
*> _dynamic_attribute_pseudo_axes_axis
;
67 std::vector
<AxisAdapter
*> _axes
;
68 Tango::DevState _state
;
71 void update_axes_i(HklPseudoAxisEngine
*engine
);
72 void update_state_and_status_i(void);
78 #endif // __PSEUDOAXES_ADAPTER_H__