Class Interface#
Defined in File slit_interface.h
Nested Relationships#
Nested Types#
Class Documentation#
-
class Interface#
interface class for a slit device
This class defines the interface for each slit controller and contains the functions used to communicate with it.
Public Functions
-
inline Interface()#
-
inline long init_pubsub(const std::initializer_list<std::string> &topics = {})#
-
inline void start_subscriber_thread()#
-
inline void stop_subscriber_thread()#
-
void handletopic_snapshot(const nlohmann::json &jmessage)#
-
void publish_status(bool force = false)#
-
long initialize_class()#
-
long open()#
opens the PI socket connection
-
long close()#
closes the PI socket connection
-
long is_open(std::string arg, std::string &retstring)#
are motor controllers connected?
-
long home(std::string args, std::string &help)#
home all daisy-chained motors
-
long is_home(std::string arg, std::string &retstring)#
return the home state of the motors
-
long offset(std::string args, std::string &retstring)#
set the slit offset only
-
long set(std::string args, std::string &retstring)#
set the slit width and offset
-
long get(std::string args, std::string &retstring)#
get the current width and offset
-
long get(std::string &retstring)#
get the current width and offset
-
long get()#
get the current width and offset
-
long read_positions(float &width, float &offset, float &posa, float &posb)#
-
long read_positions(float &width, float &offset)#
-
long move_abs(int addr, float pos)#
send move-absolute command to specified controllers
-
long move_rel(std::string args)#
send move-relative command to specified controllers
-
long stop()#
send the stop-all-motion command to all controllers
-
long send_command(std::string args, std::string &retstring)#
writes the raw command as received to the master controller
Public Members
-
std::string publisher_address#
publish socket endpoint
-
std::string publisher_topic#
my default topic for publishing
-
std::string subscriber_address#
subscribe socket endpoint
-
std::vector<std::string> subscriber_topics#
list of topics I subscribe to
-
std::atomic<bool> is_subscriber_thread_running#
is my subscriber thread running?
-
std::atomic<bool> should_subscriber_thread_run#
should my subscriber thread run?
-
std::unordered_map<std::string, std::function<void(const nlohmann::json&)>> topic_handlers#
maps a handler function to each topic
-
SlitDimension maxwidth#
-
SlitDimension minwidth#
set by config file
-
SlitDimension center#
position of center in actuator units
-
std::mutex publish_mutex#
serializes publish-on-change
-
Physik_Instrumente::Interface<Physik_Instrumente::ServoInfo> motorinterface#
-
std::mutex pi_mutex#
mutex to protect multi-threaded access to PI controller
-
volatile std::atomic<int> motors_running#
number of motors that are running in threads
-
volatile std::atomic<long> thr_error#
error state of threads
-
std::mutex wait_mtx#
mutex object for waiting for threads
-
std::condition_variable cv#
condition variable for waiting for threads
Public Static Functions
-
inline Interface()#