File indexing completed on 2024-04-14 14:11:12

0001 /*
0002     SPDX-FileCopyrightText: 2009 Prakash Mohan <prakash.mohan@kdemail.net>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 #pragma once
0007 
0008 #include "oal/oal.h"
0009 #include <QString>
0010 #include "ekos/ekos.h"
0011 
0012 #define NULL_FILTER "--"
0013 
0014 struct filterProperties
0015 {
0016     QString vendor;
0017     QString model;
0018     QString type;
0019     QString color;
0020     int offset;
0021     double exposure;
0022     bool useAutoFocus;
0023     QString lockedFilter;
0024     int absFocusPos;
0025     double focusTemperature;
0026     double focusAltitude;
0027     double focusTicksPerTemp;
0028     double focusTicksPerAlt;
0029     double wavelength;
0030 
0031     filterProperties(QString _vendor, QString _model, QString _type, QString _color,
0032                      int _offset = 0, double _exposure = 1.0, bool _useAutoFocus = false, QString _lockedFilter = NULL_FILTER,
0033                      int _absFocusPos = 0, double _focusTemperature = Ekos::INVALID_VALUE, double _focusAltitude = Ekos::INVALID_VALUE,
0034                      double _focusTicksPerTemp = 0.0, double _focusTicksPerAlt = 0.0, double _wavelength = 500.0) :
0035         vendor(_vendor), model(_model), type(_type), color(_color),
0036         offset(_offset), exposure(_exposure), useAutoFocus(_useAutoFocus), lockedFilter(_lockedFilter),
0037         absFocusPos(_absFocusPos), focusTemperature(_focusTemperature), focusAltitude(_focusAltitude),
0038         focusTicksPerTemp(_focusTicksPerTemp), focusTicksPerAlt(_focusTicksPerAlt), wavelength(_wavelength) {}
0039 };
0040 
0041 /**
0042  * @class OAL::Filter
0043  *
0044  * Information of user filters
0045  */
0046 
0047 class OAL::Filter
0048 {
0049     public:
0050         Filter(const QString &id, const filterProperties *fp);
0051 
0052         QString id() const
0053         {
0054             return m_Id;
0055         }
0056         QString name() const
0057         {
0058             return m_Name;
0059         }
0060         QString model() const
0061         {
0062             return m_Model;
0063         }
0064         QString vendor() const
0065         {
0066             return m_Vendor;
0067         }
0068         QString type() const
0069         {
0070             return m_Type;
0071         }
0072         QString color() const
0073         {
0074             return m_Color;
0075         }
0076 
0077         // Additional fields used by Ekos
0078         int offset() const
0079         {
0080             return m_Offset;
0081         }
0082         void setOffset(int _offset)
0083         {
0084             m_Offset = _offset;
0085         }
0086 
0087         double exposure() const
0088         {
0089             return m_Exposure;
0090         }
0091         void setExposure(double _exposure)
0092         {
0093             m_Exposure = _exposure;
0094         }
0095 
0096         QString lockedFilter() const
0097         {
0098             return m_LockedFilter;
0099         }
0100         void setLockedFilter(const QString &_filter)
0101         {
0102             m_LockedFilter = _filter;
0103         }
0104 
0105         bool useAutoFocus() const
0106         {
0107             return m_UseAutoFocus;
0108         }
0109         void setUseAutoFocus(bool enabled)
0110         {
0111             m_UseAutoFocus = enabled;
0112         }
0113 
0114         int absoluteFocusPosition()
0115         {
0116             return m_AbsoluteFocusPosition;
0117         }
0118         void setAbsoluteFocusPosition(int newAbsFocusPos)
0119         {
0120             m_AbsoluteFocusPosition = newAbsFocusPos;
0121         }
0122 
0123         double focusTemperature()
0124         {
0125             return m_FocusTemperature;
0126         }
0127         void setFocusTemperature(double newFocusTemperature)
0128         {
0129             m_FocusTemperature = newFocusTemperature;
0130         }
0131 
0132         double focusAltitude()
0133         {
0134             return m_FocusAltitude;
0135         }
0136         void setFocusAltitude(double newFocusAltitude)
0137         {
0138             m_FocusAltitude = newFocusAltitude;
0139         }
0140 
0141         double focusTicksPerTemp()
0142         {
0143             return m_FocusTicksPerTemp;
0144         }
0145         void setFocusTicksPerTemp(double newFocusTicksPerTemp)
0146         {
0147             m_FocusTicksPerTemp = newFocusTicksPerTemp;
0148         }
0149 
0150         double focusTicksPerAlt()
0151         {
0152             return m_FocusTicksPerAlt;
0153         }
0154         void setFocusTicksPerAlt(double newFocusTicksPerAlt)
0155         {
0156             m_FocusTicksPerAlt = newFocusTicksPerAlt;
0157         }
0158 
0159         double wavelength()
0160         {
0161             return m_Wavelength;
0162         }
0163         void setWavelength(double newWavelength)
0164         {
0165             m_Wavelength = newWavelength;
0166         }
0167 
0168     private:
0169         QString m_Id, m_Model, m_Vendor, m_Type, m_Color, m_Name, m_LockedFilter;
0170         int m_Offset { 0 };
0171         int m_AbsoluteFocusPosition { 0 };
0172         double m_Exposure { 1.0 };
0173         bool m_UseAutoFocus { false };
0174         double m_FocusTemperature { 0 };
0175         double m_FocusAltitude { 0 };
0176         double m_FocusTicksPerTemp { 0 };
0177         double m_FocusTicksPerAlt { 0 };
0178         double m_Wavelength { 0 };
0179 };