9#include "sequencejobstate.h"
11#include <QTableWidgetItem>
25class CaptureDeviceAdaptor;
32 static QString const &ISOMarker;
39 SJ_EnforceTemperature,
81 SJ_RemoteFormatDirectory,
83 SJ_RemoteFormatFilename,
89 SJ_TargetADUTolerance,
93 SJ_DitherPerJobFrequency,
95 SJ_DitherPerJobEnabled,
112 SequenceJobType jobType, XMLEle *root =
nullptr,
QString targetName =
"");
131 void startCapturing(
bool autofocusReady, FITSMode mode);
137 void capture(FITSMode mode);
144 void setCoreProperty(PropertyID
id,
const QVariant &value);
145 QVariant getCoreProperty(PropertyID
id)
const;
150 const QString &getStatusString()
152 return StatusStrings()[getStatus()];
155 void setCompleted(
int value)
160 int getCompleted()
const
165 void setExposeLeft(
double value);
167 double getExposeLeft()
const;
169 void resetStatus(JOBStatus status = JOB_IDLE);
171 void setCaptureRetires(
int value);
173 int getCaptureRetires()
const;
176 int getJobRemainingTime(
double estimatedDownloadTime);
182 void connectDeviceAdaptor();
184 void disconnectDeviceAdaptor();
186 void setTargetFilter(
int pos,
const QString &name);
188 int getCurrentFilter()
const;
190 ISD::Mount::PierSide getPierSide()
const;
196 SequenceJobType jobType()
const
200 void setJobType(SequenceJobType newJobType)
202 m_jobType = newJobType;
206 return (getCoreProperty(SJ_Signature).toString()).
remove(
".fits");
217 const QString getScript(ScriptTypes type)
const
219 return m_Scripts[type];
221 void setScript(ScriptTypes type,
const QString &value)
223 m_Scripts[type] = value;
227 void setISO(
int index);
232 return m_CustomProperties;
236 m_CustomProperties = value;
242 return m_CoreProperties;
248 const QVariant getRemoteDirectory()
const;
251 void setUploadMode(ISD::Camera::UploadMode value);
253 ISD::Camera::UploadMode getUploadMode()
const;
256 void setCalibrationPreAction(uint32_t value);
258 uint32_t getCalibrationPreAction()
const;
261 void setWallCoord(
const SkyPoint &value);
263 const SkyPoint &getWallCoord()
const;
266 void setFlatFieldDuration(FlatFieldDuration value);
268 FlatFieldDuration getFlatFieldDuration()
const;
271 void setJobProgressIgnored(
bool value);
272 bool getJobProgressIgnored()
const;
278 void updateDeviceStates();
306 JOBStatus getStatus()
308 return state->getStatus();
311 void setFrameType(CCDFrameType value)
313 state->setFrameType(value);
315 CCDFrameType getFrameType()
const
317 return state->getFrameType();
322 return state->getFrameType() == FRAME_VIDEO;
325 int getTargetFilter()
const
327 return state->targetFilterID;
330 double getTargetTemperature()
const
332 return state->targetTemperature;
334 void setTargetTemperature(
double value)
336 state->targetTemperature = value;
339 void setFocusStatus(FocusState value)
341 state->setFocusStatus(value);
344 double getTargetRotation()
const
346 return state->targetPositionAngle;
348 void setTargetRotation(
double value)
350 state->targetPositionAngle = value;
353 SequenceJobState::CalibrationStage getCalibrationStage()
const
355 return state->calibrationStage;
357 void setCalibrationStage(SequenceJobState::CalibrationStage value)
359 state->calibrationStage = value;
362 SequenceJobState::PreparationState getPreparationState()
const
364 return state->m_PreparationState;
366 void setPreparationState(SequenceJobState::PreparationState value)
368 state->m_PreparationState = value;
371 bool getAutoFocusReady()
const
373 return state->autoFocusReady;
375 void setAutoFocusReady(
bool value)
377 state->autoFocusReady = value;
385 void prepareCapture();
390 void processPrepareComplete(
bool success =
true);
394 void processAbortCapture();
402 IPState checkFlatFramePendingTasksCompleted();
405 double currentTemperature()
const;
406 double currentGain()
const;
407 double currentOffset()
const;
410 void loadFrom(XMLEle *root,
const QString &targetName, SequenceJobType jobType);
414 void prepareComplete(
bool success =
true);
416 void captureStarted(CaptureResult rc);
422 void prepareState(CaptureState state);
424 void prepareCapture(CCDFrameType frameType,
bool enforceCCDTemp,
bool enforceStartGuiderDrift,
bool isPreview);
426 void updateGuiderDrift(
double deviation_rms);
435 SequenceJobType m_jobType;
437 void setStatus(JOBStatus
const);
450 FlatFieldDuration m_FlatFieldDuration { DURATION_MANUAL };
454 ISD::Camera::UploadMode m_UploadMode { ISD::Camera::UPLOAD_CLIENT };
456 QString m_TransferFormat {
"FITS" };
461 int m_CaptureRetires { 0 };
462 uint32_t m_Completed { 0 };
463 double m_ExposeLeft { 0 };
464 bool m_JobProgressIgnored {
false};
481 QString setCameraDeviceProperties();
Class handles control of INDI dome devices.
Handles operation of a remotely controlled dust cover cap.
Handles operation of a remotely controlled light box.
device handle controlling Mounts.
Sequence Job is a container for the details required to capture a series of images.
The sky coordinates of a point in the sky.
Ekos is an advanced Astrophotography tool for Linux.
QString & remove(QChar ch, Qt::CaseSensitivity cs)