Class Interface

Nested Relationships

Nested Types

Class Documentation

class Interface

main interface class for the calib hardware

This class defines the interface for all of the calib hardware and contains the functions used to communicate with it.

Public Functions

inline Interface()
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)

publish calib state on change (or force)

long open(std::string args, std::string &retstring)
long is_open(std::string args, std::string &retstring)
long close(std::string args, std::string &retstring)

Public Members

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

Common::Queue async

asynchronous message queue object

Motion motion

motion object

Modulator modulator

lamp modulator object