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,
110 SequenceJobType jobType, XMLEle *root =
nullptr,
QString targetName =
"");
129 void startCapturing(
bool autofocusReady, FITSMode mode);
135 void capture(FITSMode mode);
142 void setCoreProperty(PropertyID
id,
const QVariant &value);
143 QVariant getCoreProperty(PropertyID
id)
const;
148 const QString &getStatusString()
150 return StatusStrings()[getStatus()];
153 void setCompleted(
int value)
158 int getCompleted()
const
163 void setExposeLeft(
double value);
165 double getExposeLeft()
const;
167 void resetStatus(JOBStatus status = JOB_IDLE);
169 void setCaptureRetires(
int value);
171 int getCaptureRetires()
const;
174 int getJobRemainingTime(
double estimatedDownloadTime);
180 void connectDeviceAdaptor();
182 void disconnectDeviceAdaptor();
184 void setTargetFilter(
int pos,
const QString &name);
186 int getCurrentFilter()
const;
188 ISD::Mount::PierSide getPierSide()
const;
194 SequenceJobType jobType()
const
198 void setJobType(SequenceJobType newJobType)
200 m_jobType = newJobType;
204 return (getCoreProperty(SJ_Signature).toString()).
remove(
".fits");
215 const QString getScript(ScriptTypes type)
const
217 return m_Scripts[type];
219 void setScript(ScriptTypes type,
const QString &value)
221 m_Scripts[type] = value;
225 void setISO(
int index);
230 return m_CustomProperties;
234 m_CustomProperties = value;
240 return m_CoreProperties;
244 void setUploadMode(ISD::Camera::UploadMode value);
246 ISD::Camera::UploadMode getUploadMode()
const;
249 void setCalibrationPreAction(uint32_t value);
251 uint32_t getCalibrationPreAction()
const;
254 void setWallCoord(
const SkyPoint &value);
256 const SkyPoint &getWallCoord()
const;
259 void setFlatFieldDuration(FlatFieldDuration value);
261 FlatFieldDuration getFlatFieldDuration()
const;
264 void setJobProgressIgnored(
bool value);
265 bool getJobProgressIgnored()
const;
271 void updateDeviceStates();
299 JOBStatus getStatus()
301 return state->getStatus();
304 void setFrameType(CCDFrameType value)
306 state->setFrameType(value);
308 CCDFrameType getFrameType()
const
310 return state->getFrameType();
315 return state->getFrameType() == FRAME_VIDEO;
318 int getTargetFilter()
const
320 return state->targetFilterID;
323 double getTargetTemperature()
const
325 return state->targetTemperature;
327 void setTargetTemperature(
double value)
329 state->targetTemperature = value;
332 void setFocusStatus(FocusState value)
334 state->setFocusStatus(value);
337 double getTargetRotation()
const
339 return state->targetPositionAngle;
341 void setTargetRotation(
double value)
343 state->targetPositionAngle = value;
346 SequenceJobState::CalibrationStage getCalibrationStage()
const
348 return state->calibrationStage;
350 void setCalibrationStage(SequenceJobState::CalibrationStage value)
352 state->calibrationStage = value;
355 SequenceJobState::PreparationState getPreparationState()
const
357 return state->m_PreparationState;
359 void setPreparationState(SequenceJobState::PreparationState value)
361 state->m_PreparationState = value;
364 bool getAutoFocusReady()
const
366 return state->autoFocusReady;
368 void setAutoFocusReady(
bool value)
370 state->autoFocusReady = value;
378 void prepareCapture();
383 void processPrepareComplete(
bool success =
true);
387 void processAbortCapture();
395 IPState checkFlatFramePendingTasksCompleted();
398 double currentTemperature()
const;
399 double currentGain()
const;
400 double currentOffset()
const;
403 void loadFrom(XMLEle *root,
const QString &targetName, SequenceJobType jobType);
407 void prepareComplete(
bool success =
true);
409 void captureStarted(CaptureResult rc);
415 void prepareState(CaptureState state);
417 void prepareCapture(CCDFrameType frameType,
bool enforceCCDTemp,
bool enforceStartGuiderDrift,
bool isPreview);
419 void updateGuiderDrift(
double deviation_rms);
428 SequenceJobType m_jobType;
430 void setStatus(JOBStatus
const);
443 FlatFieldDuration m_FlatFieldDuration { DURATION_MANUAL };
447 ISD::Camera::UploadMode m_UploadMode { ISD::Camera::UPLOAD_CLIENT };
449 QString m_TransferFormat {
"FITS" };
454 int m_CaptureRetires { 0 };
455 uint32_t m_Completed { 0 };
456 double m_ExposeLeft { 0 };
457 bool m_JobProgressIgnored {
false};
474 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)