9#include "sequencejobstate.h"
10#include "indi/indistd.h"
11#include "indi/indicamera.h"
14#include <QTableWidgetItem>
28class CaptureDeviceAdaptor;
35 static QString const &ISOMarker;
42 SJ_EnforceTemperature,
84 SJ_RemoteFormatDirectory,
86 SJ_RemoteFormatFilename,
92 SJ_TargetADUTolerance,
96 SJ_DitherPerJobFrequency,
113 SequenceJobType jobType, XMLEle *root =
nullptr,
QString targetName =
"");
132 void startCapturing(
bool autofocusReady, FITSMode mode);
138 void capture(FITSMode mode);
145 void setCoreProperty(PropertyID
id,
const QVariant &value);
146 QVariant getCoreProperty(PropertyID
id)
const;
151 const QString &getStatusString()
153 return StatusStrings()[getStatus()];
156 void setCompleted(
int value)
161 int getCompleted()
const
166 void setExposeLeft(
double value);
168 double getExposeLeft()
const;
170 void resetStatus(JOBStatus status = JOB_IDLE);
172 void setCaptureRetires(
int value);
174 int getCaptureRetires()
const;
177 int getJobRemainingTime(
double estimatedDownloadTime);
183 void connectDeviceAdaptor();
185 void disconnectDeviceAdaptor();
187 void setTargetFilter(
int pos,
const QString &name);
189 int getCurrentFilter()
const;
191 ISD::Mount::PierSide getPierSide()
const;
197 SequenceJobType jobType()
const
201 void setJobType(SequenceJobType newJobType)
203 m_jobType = newJobType;
207 return (getCoreProperty(SJ_Signature).toString()).
remove(
".fits");
218 const QString getScript(ScriptTypes type)
const
220 return m_Scripts[type];
222 void setScript(ScriptTypes type,
const QString &value)
224 m_Scripts[type] = value;
228 void setISO(
int index);
233 return m_CustomProperties;
237 m_CustomProperties = value;
243 return m_CoreProperties;
247 void setUploadMode(ISD::Camera::UploadMode value);
249 ISD::Camera::UploadMode getUploadMode()
const;
252 void setCalibrationPreAction(uint32_t value);
254 uint32_t getCalibrationPreAction()
const;
257 void setWallCoord(
const SkyPoint &value);
259 const SkyPoint &getWallCoord()
const;
262 void setFlatFieldDuration(FlatFieldDuration value);
264 FlatFieldDuration getFlatFieldDuration()
const;
267 void setJobProgressIgnored(
bool value);
268 bool getJobProgressIgnored()
const;
274 void updateDeviceStates();
302 JOBStatus getStatus()
304 return state->getStatus();
307 void setFrameType(CCDFrameType value)
309 state->setFrameType(value);
311 CCDFrameType getFrameType()
const
313 return state->getFrameType();
316 int getTargetFilter()
const
318 return state->targetFilterID;
321 double getTargetTemperature()
const
323 return state->targetTemperature;
325 void setTargetTemperature(
double value)
327 state->targetTemperature = value;
330 void setFocusStatus(FocusState value)
332 state->setFocusStatus(value);
335 double getTargetRotation()
const
337 return state->targetPositionAngle;
339 void setTargetRotation(
double value)
341 state->targetPositionAngle = value;
344 SequenceJobState::CalibrationStage getCalibrationStage()
const
346 return state->calibrationStage;
348 void setCalibrationStage(SequenceJobState::CalibrationStage value)
350 state->calibrationStage = value;
353 SequenceJobState::PreparationState getPreparationState()
const
355 return state->m_PreparationState;
357 void setPreparationState(SequenceJobState::PreparationState value)
359 state->m_PreparationState = value;
362 bool getAutoFocusReady()
const
364 return state->autoFocusReady;
366 void setAutoFocusReady(
bool value)
368 state->autoFocusReady = value;
376 void prepareCapture();
381 void processPrepareComplete(
bool success =
true);
385 void processAbortCapture();
393 IPState checkFlatFramePendingTasksCompleted();
396 double currentTemperature()
const;
397 double currentGain()
const;
398 double currentOffset()
const;
401 void loadFrom(XMLEle *root,
const QString &targetName, SequenceJobType jobType);
405 void prepareComplete(
bool success =
true);
407 void captureStarted(CaptureResult rc);
413 void prepareState(CaptureState state);
415 void prepareCapture(CCDFrameType frameType,
bool enforceCCDTemp,
bool enforceStartGuiderDrift,
bool isPreview);
417 void updateGuiderDrift(
double deviation_rms);
426 SequenceJobType m_jobType;
428 void setStatus(JOBStatus
const);
441 FlatFieldDuration m_FlatFieldDuration { DURATION_MANUAL };
445 ISD::Camera::UploadMode m_UploadMode { ISD::Camera::UPLOAD_CLIENT };
447 QString m_TransferFormat {
"FITS" };
452 int m_CaptureRetires { 0 };
453 uint32_t m_Completed { 0 };
454 double m_ExposeLeft { 0 };
455 bool m_JobProgressIgnored {
false};
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)