12#include "indi/indicommon.h"
13#include "../guideinterface.h"
15#include "calibration.h"
16#include "calibrationprocess.h"
18#include "ekos_guide_debug.h"
41 bool Connect()
override
46 bool Disconnect()
override
50 bool isConnected()
override
55 bool calibrate()
override;
56 bool guide()
override;
57 bool abort()
override;
58 bool suspend()
override;
59 bool resume()
override;
61 bool dither(
double pixels)
override;
62 bool ditherXY(
double x,
double y);
64 bool clearCalibration()
override;
65 bool restoreCalibration();
67 bool reacquire()
override;
69 bool setFrameParams(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t binX, uint16_t binY)
override;
70 bool setGuiderParams(
double ccdPixelSizeX,
double ccdPixelSizeY,
double mountAperture,
71 double mountFocalLength)
override;
74 void setStarPosition(QVector3D &starCenter)
override;
77 void setStarDetectionAlgorithm(
int index);
80 bool getReticleParameters(
double *x,
double *y);
83 void setGuideBoxSize(uint32_t value)
89 void setGuideView(
const QSharedPointer<GuideView> &guideView);
91 void setImageData(
const QSharedPointer<FITSData> &data);
95 bool isGuiding(
void)
const;
96 void setInterface(
void);
98 void setSubFramed(
bool enable)
100 m_isSubFramed = enable;
105 const Calibration &getCalibration()
const;
108 bool selectAutoStar();
109 bool selectAutoStarSEPMultistar();
110 bool SEPMultiStarEnabled();
113 bool processManualDithering();
115 void updateGPGParameters();
116 void resetGPG()
override;
117 void resetDarkGuiding();
118 void setExposureTime();
119 void setDarkGuideTimerInterval();
120 void setTimer(std::unique_ptr<QTimer> &timer, Seconds seconds);
123 void setDECSwap(
bool enable);
127 void trackingStarSelected(
int x,
int y);
128 void setDitherSettled();
132 void newMultiPulse(GuideDirection ra_dir,
int ra_msecs, GuideDirection dec_dir,
int dec_msecs,
133 CaptureAfterPulses followWithCapture);
134 void newSinglePulse(GuideDirection dir,
int msecs, CaptureAfterPulses followWithCapture);
136 void DESwapChanged(
bool enable);
139 bool processGuiding();
140 void startDarkGuiding();
142 bool onePulseDither(
double pixels);
143 void startDitherSettleTimer(
int ms);
144 void disableDitherSettleTimer();
150 void fillGuideInfo(GuideLog::GuideInfo *info);
152 std::unique_ptr<cgmath> pmath;
153 QSharedPointer<GuideView> m_GuideFrame;
154 QSharedPointer<FITSData> m_ImageData;
155 bool m_isStarted {
false };
156 bool m_isSubFramed {
false };
157 bool m_isFirstFrame {
false };
158 int m_starLostCounter { 0 };
161 uint32_t guideBoxSize { 32 };
163 GuiderUtils::Vector m_DitherTargetPosition;
164 uint8_t m_DitherRetries {0};
166 QElapsedTimer reacquireTimer;
167 int m_highRMSCounter {0};
169 GuiderUtils::Matrix ROT_Z;
170 Ekos::GuideState rememberState { GUIDE_IDLE };
173 QQueue<GuiderUtils::Vector> m_ProgressiveDither;
176 std::unique_ptr<QTimer> m_darkGuideTimer;
177 std::unique_ptr<QTimer> m_captureTimer;
178 std::unique_ptr<QTimer> m_ditherSettleTimer;
179 std::pair<Seconds, Seconds> calculateGPGTimeStep();
180 bool isInferencePeriodFinished();
184 static const uint8_t MAX_RMS_THRESHOLD = 10;
186 static const uint8_t MAX_LOST_STAR_THRESHOLD = 5;
190 static const uint16_t MAX_IMMEDIATE_CAPTURE = 250;
192 static const uint16_t PROPAGATION_DELAY = 100;
195 static const uint8_t MAX_DITHER_TRAVEL = 15;
199 QVector3D m_DitherOrigin;
203 void iterateCalibration();
204 std::unique_ptr<CalibrationProcess> calibrationProcess;
205 double calibrationStartX = 0;
206 double calibrationStartY = 0;
209 bool isPoorGuiding(
const cproc_out_params *out);
210 void emitAxisPulse(
const cproc_out_params *out);
Interface skeleton for implementation of different guiding applications and/or routines.
The main change relative to fitsview is to add the capability of displaying the 'neighbor guide stars...
Ekos is an advanced Astrophotography tool for Linux.