Kstars
capture.h
41 * It is based on a modular extensible framework to perform common astrophotography tasks. This includes highly accurate GOTOs using astrometry solver, ability to measure and correct polar alignment errors ,
42 * auto-focus & auto-guide capabilities, and capture of single or stack of images with filter wheel support.\n
44 * - Control your telescope, CCD (& DSLRs), filter wheel, focuser, guider, adaptive optics unit, and any INDI-compatible auxiliary device from Ekos.
45 * - Extremely accurate GOTOs using astrometry.net solver (both Online and Offline solvers supported).
46 * - Load & Slew: Load a FITS image, slew to solved coordinates, and center the mount on the exact image coordinates in order to get the same desired frame.
49 * - Automated unattended meridian flip. Ekos performs post meridian flip alignment, calibration, and guiding to resume the capture session.
52 * - Auto guiding with support for automatic dithering between exposures and support for Adaptive Optics devices in addition to traditional guiders.
53 * - Powerful sequence queue for batch capture of images with optional prefixes, timestamps, filter wheel selection, and much more!
55 * - Center the telescope anywhere in a captured FITS image or any FITS with World Coordinate System (WCS) header.
57 * - Automatic abort and resumption of exposure tasks if guiding errors exceed a user-configurable value.
63 * The primary class is Ekos::Manager. It handles startup and shutdown of local and remote INDI devices, manages and orchesterates the various Ekos modules, and provides advanced DBus
76 * The capture class support capturing single or multiple images from a CCD, it provides a powerful sequence queue with filter wheel selection. Any sequence queue can be saved as Ekos Sequence Queue (.esq).
77 * All image capture operations are saved as Sequence Jobs that encapsulate all the different options in a capture process. The user may select in sequence autofocusing by setting a maximum HFR limit. When the limit
78 * is exceeded, it automatically trigger autofocus operation. The capture process can also be linked with guide module. If guiding deviations exceed a certain threshold, the capture operation aborts until
97 typedef enum { MF_NONE, MF_REQUESTED, MF_READY, MF_INITIATED, MF_FLIPPING, MF_SLEWING, MF_COMPLETED, MF_ALIGNING, MF_GUIDING } MFStage;
124 * select the filter device from the available filter drivers. The filter device can be the same as the CCD driver if the filter functionality was embedded within the driver.
143 * Returns the overall sequence queue status. If there are no jobs pending, it returns "Invalid". If all jobs are idle, it returns "Idle". If all jobs are complete, it returns "Complete". If one or more jobs are aborted
144 * it returns "Aborted" unless it was temporarily aborted due to guiding deviations, then it would return "Suspended". If one or more jobs have errors, it returns "Error". If any jobs is under progress, returns "Running".
163 * @param value if enable is true, it sets the maximum guiding deviation in arcsecs. If the value is exceeded, the capture operation is aborted until the value falls below the value threshold.
170 * @param HFR if enable is true, it sets HFR in pixels. After each exposure, the HFR is re-measured and if it exceeds the specified value, an autofocus operation will be commanded.
261 * Clear in-sequence focus settings. It sets the autofocus HFR to zero so that next autofocus value is remembered for the in-sequence focusing.
266 * Jobs will NOT be checked for progress against the file system and will be always assumed as new jobs.
272 * with identical paths, but we need to continue where we left off. For example, if we have 3 identical
273 * jobs, each capturing 5 images. Let's suppose 9 images were captured before. If the count for this signature
274 * is set to 1, then we continue to capture frame #2 even though the number of completed images is already
424 * @brief addDSLRInfo Save DSLR Info the in the database. If the interactive dialog was open, close it.
431 void addDSLRInfo(const QString &model, uint32_t maxW, uint32_t maxH, double pixelW, double pixelH);
450 * Starts the sequence queue capture procedure sequentially by starting all jobs that are either Idle or Aborted in order.
455 * Stop all jobs and set current job status to aborted if abort is set to true, otherwise status is idle until
471 * The only difference between SUSPENDED and ABORTED it that capture module can automatically resume a suspended
472 * state on its own without external trigger once the right conditions are met. When whatever reason caused the module
473 * to go into suspended state ceases to exist, the capture module automatically resumes. On the other hand, ABORTED state
474 * must be started via an external programmatic or user trigger (e.g. click the start button again).
502 * @brief restartCamera Restarts the INDI driver associated with a camera. Remote and Local drivers are supported.
503 * @param name Name of camera to restart. If a driver defined multiple cameras, they would be removed and added again
505 * @note Restarting camera should only be used as a last resort when it comes completely unresponsive. Due the complex
590 * @brief newFITS process new FITS data received from camera. Update status of active job and overall sequence.
603 * @param filterNum The filter wheel index in the filter device combo box to set as the active filter.
608 * @brief processCCDNumber Process number properties arriving from CCD. Currently, only CCD and Guider frames are processed.
614 * @brief processTelescopeNumber Process number properties arriving from telescope for meridian flip purposes.
620 * @brief processNewTargetName If mount slews to a new object, process it as it can be used for prefix
626 * @brief addSequenceJob Add a sequence job. This simply calls addJob below with both preview and isDarkFlat set to false.
641 * @param index Row index for job to remove, if left as -1 (default), the currently selected row will be removed.
660 * @brief setGuideDeviation Set the guiding deviation as measured by the guiding module. Abort capture if deviation exceeds user value. Resume capture if capture was aborted and guiding deviations are below user value.
683 * @brief showTemperatureRegulation Toggle temperature regulation dialog which sets temperature ramp and threshold
697 * @brief preparePreCaptureActions Check if we need to update filter position or CCD temperature before starting capture process
896 * @brief processJobCompletionStage1 Process job completion. In stage 1 when simply check if the is a post-job script to be running
902 * @brief processJobCompletionStage2 Set job as complete and look for next job in the sequence, if any.
930 return meridianFlipStage == MF_INITIATED || meridianFlipStage == MF_FLIPPING || meridianFlipStage == MF_SLEWING;
972 * @return generates argument list consisting of one argument -metadata followed by JSON-formatted key:value pair:
1000 * @brief setDarkFlatExposure Given a dark flat job, find the exposure suitable from it by searching for
1005 * If the flat frames were captured in another session (i.e. Ekos restarted), then all automatic exposure
1006 * calculation results are discarded since Ekos does not save this information to the sequene file.
1007 * Possible solution is to write to a local config file to keep this information persist between sessions.
1080 * @brief updateHFRThreshold calculate new HFR threshold based on median value for current selected filter
Q_OBJECTQ_OBJECT
const QJsonArray & getSequence() const
getSequence Return the JSON representation of the current sequeue queue
Definition: capture.h:366
void setTargetTemperature(double temperature)
setTemperature Set the target CCD temperature in the GUI settings.
Definition: capture.cpp:5326
Q_PROPERTY(...)
void setPrefix(const QString &prefix)
setPrefix Set target or prefix name used in constructing the generated file name
Definition: capture.h:553
Ekos is an advanced Astrophotography tool for Linux. It is based on a modular extensible framework to...
Definition: align.cpp:70
void generateDarkFlats()
generateDarkFlats Generate a list of dark flat jobs from available flat frames.
Definition: capture.cpp:7517
bool addJob(bool preview=false, bool isDarkFlat=false)
addJob Add a new job to the sequence queue given the settings in the GUI.
Definition: capture.cpp:2970
Q_SCRIPTABLE Q_NOREPLY void stop(CaptureState targetState=CAPTURE_IDLE)
DBUS interface function.
Definition: capture.cpp:879
Stores dms coordinates for a point in the sky. for converting between coordinate systems.
Definition: skypoint.h:44
Q_CLASSINFO(Name, Value)
int count(const T &value) const const
void captureImage()
captureImage Initiates image capture in the active job.
Definition: capture.cpp:2475
Q_SCRIPTABLE double getJobExposureProgress(int id)
DBUS interface function.
Definition: capture.cpp:5260
void setDelay(uint16_t delay)
setDelay Set delay between capturing images within a sequence in seconds
Definition: capture.h:544
Definition: indilightbox.h:20
Definition: indicamerachip.h:22
Q_SCRIPTABLE Q_NOREPLY void setMaximumGuidingDeviation(bool enable, double value)
DBUS interface function.
Definition: capture.cpp:5312
Q_SCRIPTABLE bool saveSequenceQueue(const QString &path)
DBUS interface function.
Definition: capture.cpp:4747
void updateCCDTemperature(double value)
updateCCDTemperature Update CCD temperature in capture module.
Definition: capture.cpp:2945
Q_SCRIPTABLE Q_NOREPLY void toggleVideo(bool enabled)
DBUS interface function.
Definition: capture.cpp:6362
bool startFocusIfRequired()
Check, if re-focusing is required and initiate it in that case.
Definition: capture.cpp:2329
Definition: indirotator.h:19
Q_SCRIPTABLE bool setCamera(const QString &device)
DBUS interface function.
Definition: capture.cpp:1014
void checkCamera(int CCDNum=-1)
checkCamera Refreshes the CCD information in the capture module.
Definition: capture.cpp:1039
The QProgressIndicator class lets an application display a progress indicator to show that a long tas...
Definition: QProgressIndicator.h:23
void showTemperatureRegulation()
showTemperatureRegulation Toggle temperature regulation dialog which sets temperature ramp and thresh...
Definition: capture.cpp:7466
Q_SCRIPTABLE Q_NOREPLY void restartCamera(const QString &name)
DBus interface function.
Definition: capture.cpp:7431
QJsonObject getCalibrationSettings()
getCalibrationSettings Get Calibration settings
Definition: capture.cpp:6847
Sequence Job is a container for the details required to capture a series of images.
Definition: sequencejob.h:18
void moveJobDown()
moveJobDown Move the job in the sequence queue one place down.
Definition: capture.cpp:3353
void setCount(uint16_t count)
seqCount Set required number of images to capture in one sequence job
Definition: capture.h:535
Q_SCRIPTABLE Q_NOREPLY void setCapturedFramesMap(const QString &signature, int count)
DBUS interface function.
Definition: capture.cpp:6694
Definition: indimount.h:26
void setLimitSettings(const QJsonObject &settings)
setLimitSettings Set limit settings
Definition: capture.cpp:6864
ExitStatus
void prepareActiveJobStage2()
prepareActiveJob Reset calibration state machine and prepare capture job actions.
Definition: capture.cpp:3607
Definition: indicamera.h:47
QJsonObject getPresetSettings()
getSettings get current capture settings as a JSON Object
Definition: capture.cpp:5067
Q_SCRIPTABLE bool setFilter(const QString &filter)
DBUS interface function.
Definition: capture.cpp:1640
void processNewTargetName(const QString &name)
processNewTargetName If mount slews to a new object, process it as it can be used for prefix
Definition: capture.cpp:4257
QString join(const QString &separator) const const
void preparePreCaptureActions()
preparePreCaptureActions Check if we need to update filter position or CCD temperature before startin...
Definition: capture.cpp:3659
enabled
Q_SCRIPTABLE Q_NOREPLY void setInSequenceFocus(bool enable, double HFR)
DBUS interface function.
Definition: capture.cpp:5319
Definition: indidustcap.h:22
void setPresetSettings(const QJsonObject &settings)
setSettings Set capture settings
Definition: capture.cpp:6703
void processTelescopeNumber(INumberVectorProperty *nvp)
processTelescopeNumber Process number properties arriving from telescope for meridian flip purposes.
Definition: capture.cpp:5399
bool setVideoLimits(uint16_t maxBufferSize, uint16_t maxPreviewFPS)
setVideoLimits sets the buffer size and max preview fps for live preview
Definition: capture.cpp:6390
Captures single or sequence of images from a CCD. The capture class support capturing single or multi...
Definition: capture.h:83
void checkFilter(int filterNum=-1)
checkFilter Refreshes the filter wheel information in the capture module.
Definition: capture.cpp:1656
void syncDSLRToTargetChip(const QString &model)
syncDSLRToTargetChip Syncs INDI driver CCD_INFO property to the DSLR values.
Definition: capture.cpp:7377
void prepareActiveJobStage1()
prepareActiveJobStage1 Check for pre job script to execute.
Definition: capture.cpp:3583
void setExposure(double value)
setExposure Set desired exposure value in seconds
Definition: capture.h:526
void updateTargetDistance(double targetDiff)
Slot receiving the update of the current target distance.
Definition: capture.cpp:2465
Q_SCRIPTABLE CCDFrameType getJobFrameType(int id)
DBUS interface function.
Definition: capture.cpp:5282
void registerNewModule(const QString &name)
registerNewModule Register an Ekos module as it arrives via DBus and create the appropriate DBus inte...
Definition: capture.cpp:722
Q_SCRIPTABLE bool setFilterWheel(const QString &device)
DBUS interface function.
Definition: capture.cpp:1606
Definition: indidome.h:22
void setFileSettings(const QJsonObject &settings)
setFileSettings Set File Settings
Definition: capture.cpp:6788
void setCalibrationSettings(const QJsonObject &settings)
setCalibrationSettings Set Calibration settings
Definition: capture.cpp:6826
Definition: indistd.h:115
bool removeJob(int index=-1)
removeJob Remove a job sequence from the queue
Definition: capture.cpp:3257
void addDSLRInfo(const QString &model, uint32_t maxW, uint32_t maxH, double pixelW, double pixelH)
addDSLRInfo Save DSLR Info the in the database.
Definition: capture.cpp:6625
void processCCDNumber(INumberVectorProperty *nvp)
processCCDNumber Process number properties arriving from CCD.
Definition: capture.cpp:1563
void moveJobUp()
moveJobUp Move the job in the sequence queue one place up.
Definition: capture.cpp:3315
Q_SCRIPTABLE double getJobExposureDuration(int id)
DBUS interface function.
Definition: capture.cpp:5271
Q_SCRIPTABLE Q_NOREPLY void clearSequenceQueue()
DBUS interface function.
Definition: capture.cpp:5331
void setGuideDeviation(double delta_ra, double delta_dec)
setGuideDeviation Set the guiding deviation as measured by the guiding module.
Definition: capture.cpp:3825
Q_SCRIPTABLE Q_NOREPLY void ignoreSequenceHistory()
DBUS interface function.
Definition: capture.cpp:4963
Q_SCRIPTABLE bool loadSequenceQueue(const QString &fileURL)
DBUS interface function.
Definition: capture.cpp:4329
void processData(const QSharedPointer< FITSData > &data)
newFITS process new FITS data received from camera.
Definition: capture.cpp:1797
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Fri Aug 12 2022 04:00:52 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2022 The KDE developers.
Generated on Fri Aug 12 2022 04:00:52 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.