Class Interface#
Defined in File slicecam_interface.h
Nested Relationships#
Nested Types#
Class Documentation#
-
class Interface#
interface class for slicecam
This class defines the interface for the slicecam system and contains the functions used to communicate with it.
Public Functions
-
bool is_acam_status_fresh() const#
-
double tuned_exptime(double cur, double measured, double target) const#
scale exposure toward target brightness; sqrt-law, factor-clamped, exptime-clamped
-
double banded_exptime(double cur, double metric) const#
two-band exposure: raise toward faint_goal below counts_faint, lower toward bright_goal above counts_bright, unchanged in band. Returns cur when in band/disabled.
-
inline Interface()#
-
inline long read_error()#
-
inline std::string get_imagename()#
-
inline std::string get_wcsname()#
-
inline void set_imagename(std::string name_in)#
-
inline void set_wcsname(std::string name_in)#
-
inline long init_pubsub(const std::initializer_list<std::string> &topics = {})#
for calling Python fpoffsets, defined in ~/Software/common/skyinfo.h
-
inline void start_subscriber_thread()#
-
inline void stop_subscriber_thread()#
-
void handletopic_snapshot(const nlohmann::json &jmessage)#
-
void handletopic_acamd(const nlohmann::json &jmessage)#
-
void handletopic_slitd(const nlohmann::json &jmessage)#
-
void handletopic_tcsd(const nlohmann::json &jmessage)#
-
void handletopic_targetinfo(const nlohmann::json &jmessage)#
-
void publish_status(bool force = false)#
-
void publish_snapshot()#
-
void publish_temperature()#
publish only the andor temperatures on Topic::SLICECAMD (periodic)
-
void request_snapshot()#
-
bool wait_for_snapshots()#
-
long fineacquire(std::string args, std::string &retstring)#
-
void do_fineacquire()#
-
long autoexpose(std::string args, std::string &retstring)#
-
void do_autoexpose()#
-
long avg_frames(std::string args, std::string &retstring)#
-
long bin(std::string args, std::string &retstring)#
-
long test_image()#
-
long open(std::string args, std::string &help)#
-
long isopen(std::string which, bool &state, std::string &help)#
wrapper to open all slicecams
-
bool isopen(std::string which)#
wrapper for slicecams
-
void close()#
wrapper for slicecams
-
long close(std::string args, std::string &retstring)#
-
long tcs_init(std::string args, std::string &retstring)#
-
long acamd_init()#
initialize connection to TCS
-
long saveframes(std::string args, std::string &retstring)#
-
void alert_framegrabbing_stopped(const int &waitms)#
-
long framegrab(std::string args)#
-
long framegrab(std::string args, std::string &retstring)#
wrapper to control Andor frame grabbing
-
long framegrab_fix(std::string args, std::string &retstring)#
wrapper to control Andor frame grabbing
-
long image_quality(std::string args, std::string &retstring)#
wrapper to control Andor frame grabbing
-
long put_on_slit(std::string args, std::string &retstring)#
wrapper for Astrometry::image_quality
-
long solve(std::string args, std::string &retstring)#
put target on slit
-
long gui_settings_control()#
wrapper for Astrometry::solve
-
long gui_settings_control(std::string args, std::string &retstring)#
get gui settings and push to Guider GUI display
-
long shutdown(std::string args, std::string &retstring)#
set or get and push to Guider GUI display
-
long shutter(const std::string args, std::string &retstring)#
-
long test(std::string args, std::string &retstring)#
-
long exptime(std::string args, std::string &retstring)#
-
long fan_mode(std::string args, std::string &retstring)#
-
long gain(std::string args, std::string &retstring)#
-
long offset_acam_goal(const std::pair<double, double> &offsets, std::optional<bool> fineacquire = std::nullopt)#
-
long collect_header_info(std::unique_ptr<Andor::Interface> &slicecam)#
-
inline void init_names()#
-
void dothread_framegrab(const std::string whattodo, const std::string sourcefile)#
-
void preserve_framegrab()#
-
long collect_header_info_threaded()#
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
-
std::atomic<bool> should_framegrab_run#
set if framegrab loop should run
-
std::atomic<bool> is_framegrab_running#
set if framegrab loop is running
-
std::atomic<bool> is_fineacquire_running#
set if fine target acquisition is running
-
std::atomic<bool> is_fineacquire_locked#
set when fine acquire target acquired
-
std::atomic<bool> is_autoexpose_running#
set if pre-acquisition auto-exposure is running
-
std::atomic<bool> is_acam_guiding#
is acam guiding?
-
std::atomic<int64_t> last_acam_pubtime = {0}#
pubtime (us) of latest received acamd status
-
std::atomic<double> targetinfo_ra_deg = {NAN}#
latest goal RA [deg] from TARGETINFO
-
std::atomic<double> targetinfo_dec_deg = {NAN}#
latest goal DEC [deg] from TARGETINFO
-
std::atomic<int> nsave_preserve_frames#
number of frames to preserve (normally overwritten)
these are set by Interface::saveframes()
-
std::atomic<int> nskip_preserve_frames#
number of frames to skip before saving nsave⦠frames
-
std::string tcsname#
-
bool is_tcs_open#
-
double angle_scope#
-
std::string ra_scope_hms#
-
std::string dec_scope_dms#
-
double ra_scope_h#
-
double dec_scope_d#
-
double offsetra#
-
double offsetdec#
-
double az#
-
double telfocus#
-
double airmass#
-
double slitoffset#
-
double slitwidth#
-
std::mutex snapshot_mtx#
-
std::unordered_map<std::string, bool> snapshot_status#
-
bool is_fineacquire_running = false
-
bool is_fineacquire_locked = false
-
bool is_autoexpose_running = false
-
GUIManager gui_manager#
-
TcsDaemonClient tcsd#
instantiate a FITS container object
-
Common::DaemonClient acamd = {"acamd"}#
for communicating with the TCS daemon, defined in ~/Software/tcsd/tcsd_client.h
Public Static Attributes
-
static constexpr int64_t ACAM_STATUS_MAX_AGE_US = 10'000'000#
Max acceptable age (us) for cached ACAM status used by fineacquire.
-
static constexpr int64_t ACAM_WAIT_TIMEOUT_US = 2'000'000#
Max time (us) fineacquire() will wait for a fresh, guiding ACAM status before failing.
-
bool is_acam_status_fresh() const#