12#include "indi/indicommon.h"
13#include "../guideinterface.h"
15#include "calibration.h"
16#include "calibrationprocess.h"
18#include "ekos_guide_debug.h"
34class InternalGuider :
public GuideInterface
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)
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;
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};
164 int m_highRMSCounter {0};
166 GuiderUtils::Matrix ROT_Z;
167 Ekos::GuideState rememberState { GUIDE_IDLE };
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;
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);
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.