Class Interface::Controller

Nested Relationships

This class is a nested type of Class Interface.

Class Documentation

class Controller

contains information for each controller

The Controller class is a sub-class of Interface and is here to contain the Camera::Information class and FITS_file class objects. There will be a vector of Controller class objects which matches the vector of controller objects.

Public Types

enum Axis

Values:

enumerator ROW
enumerator COL

Public Functions

inline Controller()
inline ~Controller()
void logical_to_physical(int spat, int spec, int &rows, int &cols) const
void physical_to_logical(int rows, int cols, int &spat, int &spec) const
inline int spat_physical_axis() const
inline int spec_physical_axis() const
inline bool has_boi() const
inline uint32_t get_bufsize()
inline uint32_t set_bufsize(uint32_t sz)
long alloc_workbuf()
inline void init_framecount()
inline int get_framecount()
inline void increment_framecount()
template<class T>
T *deinterlace(int expbuf, T *imbuf)
template<class T>
void *alloc_workbuf(T *buf)
template<class T>
void free_workbuf(T *buf)
long write()

wrapper for this->pFits->write_image()

long open_file(std::string writekeys)

wrapper for this->pFits->open_file()

void close_file(std::string writekeys)

wrapper for this->pFits->close_file()

Public Members

Camera::Information info

no deconstructor

camera info object for this controller

void *workbuf

pointer to workspace for performing deinterlacing

std::vector<Camera::Information> expinfo

vector of Camera::Information class, one for each exposure buffer

This contains the camera information for each exposure buffer. Note that since Camera::Information contains extkeys and prikeys objects, expinfo will contain those objects, but prikeys should not be used. Use only Controller::expinfo.extkeys because keys specific to a given controller will be added to that controller’s extension.

std::mutex pcimtx

mutex protects talking to this PCI driver

int error
int cols

total number of columns read (includes overscan)

int rows

total number of rows read (includes overscan)

Axis spec_axis

which physical axis {ROW,COL} is spectral

Axis spat_axis

which physical axis {ROW,COL} is spatial

int detcols

number of detector columns (unchanged by binning)

int detrows

number of detector rows (unchanged by binning)

int oscols0

requested number of overscan rows

int osrows0

requested number of overscan columns

int oscols

realized number of overscan rows (can be modified by binning)

int osrows

realized number of overscan columns (can be modified by binning)

int skiprows
int skipcols
int defcols

default number of detector columns

int defrows

default number of detector rows

int defoscols

default number of overscan rows

int defosrows

default number of overscan columns

int defbincols

default number of overscan rows

int defbinrows

default number of overscan columns

std::string imsize_args

IMAGE_SIZE arguments read from config file, used to restore default.

arc::gen3::CArcDevice *pArcDev

arc::CController object pointer &#8212; things pointed to by this are in the ARC API

Callback *pCallback

Callback class object must be pointer because the API functions are virtual.

bool connected

true if controller connected (requires successful TDL command)

bool configured

set false to skip future use of controllers when unable to connect

bool active

used to disable an otherwise-configured controller

bool is_imsize_set

has image_size been called after controller connected?

bool firmwareloaded

true if firmware is loaded, false otherwise

std::string firmware

name of firmware (.lod) file

std::string channel

name of spectrographic channel

std::string ccd_id

CCD identifier (E.G. serial number, name, etc.)

int devnum

this controller’s devnum

std::string devname

comes from arc::gen3::CArcPCI::getDeviceStringList()

std::uint32_t retval

convenient place to hold return values for threaded commands to this controller

std::map<int, frameinfo_t> frameinfo

STL map of frameinfo structure (see above)

uint32_t readout_arg
bool have_ft

Do I have (and am I using) frame transfer?

std::atomic<bool> in_readout

Is the controller currently reading out/transmitting pixels?

std::atomic<bool> in_frametransfer

Is the controller currently performing a frame transfer?

std::vector<std::string> activate_commands

Public Static Functions

template<class T>
static void dothread_deinterlace(DeInterlace<T> &deinterlace, int cols, int rows, int section, int nthreads)