File indexing completed on 2024-05-05 15:55:31
0001 /* Ekos Observatory Module 0002 SPDX-FileCopyrightText: Wolfgang Reissenberger <sterne-jaeger@t-online.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "observatorydomemodel.h" 0010 #include "observatoryweathermodel.h" 0011 0012 #include <QObject> 0013 0014 namespace Ekos 0015 { 0016 0017 struct ObservatoryStatusControl 0018 { 0019 bool useDome, useShutter, useWeather; 0020 }; 0021 0022 class ObservatoryModel : public QObject 0023 { 0024 Q_OBJECT 0025 0026 public: 0027 ObservatoryModel(); 0028 0029 ObservatoryDomeModel *getDomeModel() 0030 { 0031 return mDomeModel; 0032 } 0033 ObservatoryWeatherModel *getWeatherModel() 0034 { 0035 return mWeatherModel; 0036 } 0037 0038 void setDomeModel(ObservatoryDomeModel *model); 0039 void setWeatherModel(ObservatoryWeatherModel *model); 0040 0041 /** 0042 * @brief Retrieve the settings that define, from which states the 0043 * "ready" state of the observatory is derived from. 0044 */ 0045 ObservatoryStatusControl statusControl() 0046 { 0047 return mStatusControl; 0048 } 0049 void setStatusControl(ObservatoryStatusControl control); 0050 0051 /** 0052 * @brief Is the observatory ready? This depends upon the states of the weather, 0053 * dome etc and upon whether these settings are relevant (see status control). 0054 */ 0055 bool isReady(); 0056 0057 public slots: 0058 // call this slot in case that the weather or dome status has changed 0059 void updateStatus(); 0060 0061 /** 0062 * @brief Depending on the status control settings execute everything so 0063 * that the status reaches the state "READY". 0064 */ 0065 void makeReady(); 0066 0067 signals: 0068 /** 0069 * @brief Signal a new observatory status 0070 * @param isReady 0071 */ 0072 void newStatus(bool isReady); 0073 0074 0075 private: 0076 ObservatoryStatusControl mStatusControl; 0077 0078 ObservatoryDomeModel *mDomeModel = nullptr; 0079 ObservatoryWeatherModel *mWeatherModel = nullptr; 0080 0081 }; 0082 0083 }