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 setSquareAlgorithm(
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);
147 void fillGuideInfo(GuideLog::GuideInfo *info);
149 std::unique_ptr<cgmath> pmath;
150 QSharedPointer<GuideView> m_GuideFrame;
151 QSharedPointer<FITSData> m_ImageData;
152 bool m_isStarted {
false };
153 bool m_isSubFramed {
false };
154 bool m_isFirstFrame {
false };
155 int m_starLostCounter { 0 };
158 uint32_t guideBoxSize { 32 };
160 GuiderUtils::Vector m_DitherTargetPosition;
161 uint8_t m_DitherRetries {0};
163 QElapsedTimer reacquireTimer;
164 int m_highRMSCounter {0};
166 GuiderUtils::Matrix ROT_Z;
167 Ekos::GuideState rememberState { GUIDE_IDLE };
170 QQueue<GuiderUtils::Vector> m_ProgressiveDither;
173 std::unique_ptr<QTimer> m_darkGuideTimer;
174 std::unique_ptr<QTimer> m_captureTimer;
175 std::pair<Seconds, Seconds> calculateGPGTimeStep();
176 bool isInferencePeriodFinished();
180 static const uint8_t MAX_RMS_THRESHOLD = 10;
182 static const uint8_t MAX_LOST_STAR_THRESHOLD = 5;
186 static const uint16_t MAX_IMMEDIATE_CAPTURE = 250;
188 static const uint16_t PROPAGATION_DELAY = 100;
191 static const uint8_t MAX_DITHER_TRAVEL = 15;
195 QVector3D m_DitherOrigin;
199 void iterateCalibration();
200 std::unique_ptr<CalibrationProcess> calibrationProcess;
201 double calibrationStartX = 0;
202 double calibrationStartY = 0;
205 bool isPoorGuiding(
const cproc_out_params *out);
206 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.