* idem for the state and status.
[diffractometer.git] / src / PseudoAxisAdapter.h
blob27d0aa477d0b3dd398cfd2be6cddbd7b8a733ba6
1 #ifndef __PSEUDOAXIS_ADAPTER_H__
2 #define __PSEUDOAXIS_ADAPTER_H__
4 #include <tango.h>
6 #include <hkl/hkl-geometry-factory.h>
7 #include <hkl/hkl-pseudoaxis-factory.h>
9 #include "AxisAdapter.h"
10 #include "Matrix.h"
12 namespace Diffractometer_ns {
14 //forwar declaration
15 class TangoHKLAdapter;
17 struct PseudoAxisConfig{
18 Tango::DevDouble read;
19 Tango::DevDouble write;
20 Tango::DevBoolean initialized;
21 Tango::DevState state;
22 std::string status;
23 Tango::DevString mode;
26 class PseudoAxisAdapter {
27 friend class TangoHKLAdapter;
29 public:
30 PseudoAxisAdapter(TangoHKLAdapter & hklAdapter, HklPseudoAxis *pseudo_read, HklPseudoAxis *pseudo_write);
31 virtual ~PseudoAxisAdapter(void);
33 PseudoAxisConfig get_config(void);
35 double const & get_read(void) const {return _config.read;}
36 double const & get_write(void) const {return _config.write;}
37 Matrix<char *> const &get_mode_names(void) const {return _mode_names;}
38 void get_mode_parameters(Tango::DevVarDoubleStringArray *argout);
39 void set_mode_parameters(const Tango::DevVarDoubleStringArray *argin);
40 bool is_ready(void);
41 Tango::DevString *get_mode(void) const;
42 void set_mode(Tango::DevString const & mode);
43 void set_initialized(Tango::DevBoolean initialized);
44 void on(void);
45 private:
46 TangoHKLAdapter &_hklAdapter;
47 std::string _devicename;
48 HklPseudoAxis *_pseudo_r;
49 HklPseudoAxis *_pseudo_w;
50 PseudoAxisConfig _config;
51 std::vector<AxisAdapter *> _axes;
52 bool _ready;
53 Matrix<char *> _mode_names;
55 void update(void);
56 void to_proxies(void);
61 #endif // __PSEUDOAXIS_ADAPTER_H__