File indexing completed on 2024-04-28 03:43:19

0001 /*
0002     SPDX-FileCopyrightText: 2024 Hy Murveit <hy@murveit.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QList>
0010 #include <QUrl>
0011 #include <QString>
0012 #include "sequencejob.h"
0013 
0014 /**
0015  * @class SequenceJob
0016  * @short SequenceQueue represents a sequence of capture jobs to be executed
0017  * by the capture module.
0018  *
0019  * @author Hy Murveit
0020  * @version 1.0
0021  */
0022 namespace Ekos
0023 {
0024 
0025 class SequenceJob;
0026 class CaptureDeviceAdaptor;
0027 class CaptureModuleState;
0028 
0029 class SequenceQueue : public QObject
0030 {
0031         Q_OBJECT
0032 
0033     public:
0034         SequenceQueue() {}
0035 
0036         bool load(const QString &fileURL, const QString &targetName,
0037                   const QSharedPointer<CaptureDeviceAdaptor> devices,
0038                   const QSharedPointer<CaptureModuleState> sharedState);
0039 
0040         bool save(const QString &path, const QString &observerName);
0041 
0042         void setOptions();
0043         void loadOptions();
0044 
0045         QList<SequenceJob *> &allJobs()
0046         {
0047             return m_allJobs;
0048         }
0049         const QUrl &sequenceURL() const
0050         {
0051             return m_SequenceURL;
0052         }
0053         void setSequenceURL(const QUrl &newSequenceURL)
0054         {
0055             m_SequenceURL = newSequenceURL;
0056         }
0057         bool getEnforceGuideDeviation()
0058         {
0059             return m_EnforceGuideDeviation;
0060         }
0061         void setEnforceGuideDeviation(bool value)
0062         {
0063             m_EnforceGuideDeviation = value;
0064         }
0065         double getGuideDeviation()
0066         {
0067             return m_GuideDeviation;
0068         }
0069         void setGuideDeviation(double value)
0070         {
0071             m_GuideDeviation = value;
0072         }
0073         bool getEnforceStartGuiderDrift()
0074         {
0075             return m_EnforceStartGuiderDrift;
0076         }
0077         void setEnforceStartGuiderDrift(bool value)
0078         {
0079             m_EnforceStartGuiderDrift = value;
0080         }
0081         double getStartGuideDeviation()
0082         {
0083             return m_StartGuideDeviation;
0084         }
0085         void setStartGuideDeviation(double value)
0086         {
0087             m_StartGuideDeviation = value;
0088         }
0089         bool getEnforceAutofocusHFR()
0090         {
0091             return m_EnforceAutofocusHFR;
0092         }
0093         void setEnforceAutofocusHFR(bool value)
0094         {
0095             m_EnforceAutofocusHFR = value;
0096         }
0097         double getHFRDeviation()
0098         {
0099             return m_HFRDeviation;
0100         }
0101         void setHFRDeviation(double value)
0102         {
0103             m_HFRDeviation = value;
0104         }
0105         bool getEnforceAutofocusOnTemperature()
0106         {
0107             return m_EnforceAutofocusOnTemperature;
0108         }
0109         void setEnforceAutofocusOnTemperature(bool value)
0110         {
0111             m_EnforceAutofocusOnTemperature = value;
0112         }
0113         double getMaxFocusTemperatureDelta()
0114         {
0115             return m_MaxFocusTemperatureDelta;
0116         }
0117         void setMaxFocusTemperatureDelta(double value)
0118         {
0119             m_MaxFocusTemperatureDelta = value;
0120         }
0121         bool getEnforceRefocusEveryN()
0122         {
0123             return m_EnforceRefocusEveryN;
0124         }
0125         void setEnforceRefocusEveryN(bool value)
0126         {
0127             m_EnforceRefocusEveryN = value;
0128         }
0129         double getRefocusEveryN()
0130         {
0131             return m_RefocusEveryN;
0132         }
0133         void setRefocusEveryN(double value)
0134         {
0135             m_RefocusEveryN = value;
0136         }
0137         bool getRefocusAfterMeridianFlip()
0138         {
0139             return m_RefocusAfterMeridianFlip;
0140         }
0141         void setRefocusAfterMeridianFlip(bool value)
0142         {
0143             m_RefocusAfterMeridianFlip = value;
0144         }
0145 
0146     signals:
0147         void newLog(const QString &message);
0148 
0149     private:
0150 
0151         // list of all sequence jobs
0152         QList<SequenceJob *> m_allJobs;
0153         // URL where the sequence queue file is stored.
0154         QUrl m_SequenceURL;
0155 
0156         bool m_GuideDeviationSet { false };
0157         bool m_EnforceGuideDeviation {false};
0158         double m_GuideDeviation = 0;
0159 
0160         bool m_GuideStartDeviationSet { false };
0161         bool m_EnforceStartGuiderDrift {false};
0162         double m_StartGuideDeviation = 0;
0163 
0164         bool m_AutofocusSet { false };
0165         bool m_EnforceAutofocusHFR { false };
0166         HFR_CHECK_ALGORITHM m_HFRCheckAlgorithm { HFR_CHECK_LAST_AUTOFOCUS };
0167         double m_HFRCheckThresholdPercentage = HFR_CHECK_DEFAULT_THRESHOLD;
0168         int m_HFRCheckFrames = 1;
0169         double m_HFRDeviation = 0;
0170 
0171         bool m_RefocusOnTemperatureDeltaSet { false };
0172         bool m_EnforceAutofocusOnTemperature { false };
0173         double m_MaxFocusTemperatureDelta = 0;
0174 
0175         bool m_RefocusEveryNSet { false };
0176         bool m_EnforceRefocusEveryN { false };
0177         double m_RefocusEveryN = 0;
0178 
0179         bool m_RefocusOnMeridianFlipSet { false };
0180         bool m_RefocusAfterMeridianFlip { false };
0181 };
0182 
0183 }