Class Interface#

Class Documentation#

class Interface#

interface class for a tcs device

This is the upper-level interface. The TcsIO class provides the lover-level socket I/O.

This class defines the main interface for each tcs controller and contains the functions used to communicate with it.

Public Functions

inline void set_default_tcs(const std::string &which)#
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_snapshot()#
void publish_snapshot(std::string &retstring)#
void do_continuous_snapshot()#
long list(const std::string &arg, std::string &retstring)#

These are the functions for communicating with the TCS

long llist(const std::string &arg, std::string &retstring)#
long open(std::string arg, std::string &retstring)#
long open()#
bool isopen()#
long isopen(std::string &retstring)#
long isopen(const std::string &arg, std::string &retstring)#
long close()#
long publish_state(const std::string &arg, std::string &retstring)#
long get_name(const std::string &arg, std::string &retstring)#
long get_weather_coords(const std::string &arg, std::string &retstring)#
long get_coords(const std::string &arg, std::string &retstring)#
long get_cass(const std::string &arg, std::string &retstring)#
long get_dome(const std::string &arg, std::string &retstring)#
long set_focus(const std::string &arg, std::string &retstring)#
long get_focus(std::string &retstring)#
long get_focus(const std::string &arg, std::string &retstring)#
long get_offsets(const std::string &arg, std::string &retstring)#
long get_offsets(double &raoff, double &decoff)#
long get_pa(const std::string &arg, std::string &retstring)#
long pt_offsetrate(const std::string &arg, std::string &retstring)#
long get_motion(const std::string &arg, std::string &retstring)#
long ringgo(const std::string &arg, std::string &retstring)#
long coords(std::string args, std::string &retstring)#
long lamp(std::string args, std::string &retstring)#
long set_lamp(const std::string &which, int state)#
long get_lamp(const std::string &which, std::string &retstring)#
long pt_offset(std::string args, std::string &retstring)#
long zero_offsets(const std::string args, std::string &retstring)#
long ret_offsets(std::string args, std::string &retstring)#
long send_command(std::string cmd, std::string &retstring, TCS::ConnectionType conn_type)#
long send_command(std::string cmd, std::string &retstring, TCS::ConnectionType conn_type, int to)#
long native(std::string args, std::string &retstring)#
long parse_reply_code(std::string codein, std::string &retstring)#
long parse_motion_code(std::string codein, std::string &retstring)#
long get_tcs_info()#

fills the tcs_info class

Public Members

int offsetrate#

offset rate (arcsec/hr)

std::string name#

the name of the currently open tcs device

std::map<std::string, std::shared_ptr<TCS::TcsIO>> tcsmap#

STL map of TcsIO objects indexed by name.

std::mutex publish_mutex#
std::mutex collect_mutex#
std::mutex query_mtx#
std::condition_variable publish_condition#
std::condition_variable collect_condition#
std::atomic<bool> should_publish#
std::atomic<bool> collect_enable#
std::unique_ptr<Common::PubSub> publisher#

publisher object

std::string publisher_address#

publish socket endpoint

std::string publisher_topic#

my default topic for publishing

std::unique_ptr<Common::PubSub> subscriber#

subscriber object

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

TcsInfo tcs_info#

contains information from the tcs

Common::Queue async#

asynchronous message queue object

Common::Broadcaster broadcast = {this->publisher, Daemon::TCSD}#