File indexing completed on 2024-05-12 15:23:36
0001 /* 0002 SPDX-FileCopyrightText: 2016 Jasem Mutlaq <mutlaqja@ikarustech.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "../guideinterface.h" 0010 0011 #include <QAbstractSocket> 0012 #include <QTimer> 0013 0014 class QTcpSocket; 0015 0016 namespace Ekos 0017 { 0018 /** 0019 * @class LinGuider 0020 * Uses external LinGuider for guiding. 0021 * 0022 * @author Jasem Mutlaq 0023 * @version 1.0 0024 */ 0025 class LinGuider : public GuideInterface 0026 { 0027 Q_OBJECT 0028 0029 public: 0030 typedef enum { 0031 GET_VER = 1, 0032 SET_GUIDER_SQUARE_POS, 0033 SAVE_FRAME, 0034 DITHER, 0035 DITHER_NO_WAIT_XY, 0036 GET_DISTANCE, 0037 SAVE_FRAME_DECORATED, 0038 GUIDER, 0039 GET_GUIDER_STATE, 0040 SET_GUIDER_OVLS_POS, 0041 SET_GUIDER_RETICLE_POS, 0042 FIND_STAR, 0043 SET_DITHERING_RANGE, 0044 GET_RA_DEC_DRIFT 0045 } LinGuiderCommand; 0046 typedef enum { IDLE, GUIDING } LinGuiderState; 0047 typedef enum { DISCONNECTED, CONNECTING, CONNECTED } LinGuiderConnection; 0048 0049 LinGuider(); 0050 virtual ~LinGuider() override = default; 0051 0052 bool Connect() override; 0053 bool Disconnect() override; 0054 bool isConnected() override { return (connection == CONNECTED); } 0055 0056 bool calibrate() override; 0057 bool guide() override; 0058 bool abort() override; 0059 bool suspend() override; 0060 bool resume() override; 0061 bool dither(double pixels) override; 0062 bool clearCalibration() override { return true;} 0063 0064 private slots: 0065 0066 void readLinGuider(); 0067 void onConnected(); 0068 void displayError(QAbstractSocket::SocketError socketError); 0069 0070 private: 0071 void sendCommand(LinGuiderCommand command, const QString &args = QString()); 0072 void processResponse(LinGuiderCommand command, const QString &reply); 0073 0074 QTcpSocket *tcpSocket { nullptr }; 0075 QByteArray rawBuffer; 0076 0077 LinGuiderState state { IDLE }; 0078 LinGuiderConnection connection { DISCONNECTED }; 0079 0080 QTimer deviationTimer; 0081 QString starCenter; 0082 }; 0083 }