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 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}