1 #ifndef __PSEUDOAXIS_ADAPTER_H__
2 #define __PSEUDOAXIS_ADAPTER_H__
6 #include <hkl/hkl-geometry-factory.h>
7 #include <hkl/hkl-pseudoaxis-factory.h>
9 #include "AxisAdapter.h"
12 namespace Diffractometer_ns
{
15 class TangoHKLAdapter
;
17 struct PseudoAxisConfig
{
18 Tango::DevDouble position_r
;
19 Tango::DevDouble position_w
;
20 Tango::DevDouble offset
;
21 Tango::DevBoolean initialized
;
22 Tango::DevState state
;
24 Tango::DevString mode
;
25 Matrix
<char *> mode_names
;
28 class PseudoAxisAdapter
{
29 friend class TangoHKLAdapter
;
32 PseudoAxisAdapter(TangoHKLAdapter
& hklAdapter
, HklPseudoAxis
*pseudo_read
, HklPseudoAxis
*pseudo_write
);
33 virtual ~PseudoAxisAdapter(void);
35 PseudoAxisConfig
get_config(void);
39 void set_position(const Tango::DevDouble
& position
);
40 void set_offset(const Tango::DevDouble
& offset
);
41 void set_mode(Tango::DevString
const & mode
);
42 void set_initialized(Tango::DevBoolean initialized
);
44 void get_mode_parameters(Tango::DevVarDoubleStringArray
*argout
);
45 void set_mode_parameters(const Tango::DevVarDoubleStringArray
*argin
);
46 Tango::DevDouble
compute_new_offset(const Tango::DevDouble
& position
);
50 TangoHKLAdapter
&_hklAdapter
;
51 std::string _devicename
;
52 HklPseudoAxis
*_pseudo_r
;
53 HklPseudoAxis
*_pseudo_w
;
54 PseudoAxisConfig _config
;
55 std::vector
<AxisAdapter
*> _axes
;
59 void to_proxies(void);
64 #endif // __PSEUDOAXIS_ADAPTER_H__