/*
 * This file was generated by qdbusxml2cpp version 0.8
 * Source file was org.kde.kstars.Ekos.Focus.xml
 *
 * qdbusxml2cpp is Copyright (C) The Qt Company Ltd. and other contributors.
 *
 * This is an auto-generated file.
 * This file may have been hand-edited. Look for HAND-EDIT comments
 * before re-generating it.
 */

#ifndef FOCUSADAPTOR_H
#define FOCUSADAPTOR_H

#include <QtCore/QObject>
#include <QtDBus/QtDBus>
#include "ekos/focus/focusmodule.h"
#include <QtCore/qcontainerfwd.h>

/*
 * Adaptor class for interface org.kde.kstars.Ekos.Focus
 */
class FocusAdaptor: public QDBusAbstractAdaptor
{
    Q_OBJECT
    Q_CLASSINFO("D-Bus Interface", "org.kde.kstars.Ekos.Focus")
    Q_CLASSINFO("D-Bus Introspection", ""
"  <interface name=\"org.kde.kstars.Ekos.Focus\">\n"
"    <method name=\"camera\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"s\"/>\n"
"    </method>\n"
"    <method name=\"filterWheel\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"s\"/>\n"
"    </method>\n"
"    <method name=\"filter\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"s\"/>\n"
"    </method>\n"
"    <method name=\"setFilter\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"filter\"/>\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"b\"/>\n"
"    </method>\n"
"    <method name=\"focuser\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"s\"/>\n"
"    </method>\n"
"    <method name=\"status\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"(i)\"/>\n"
"      <annotation value=\"Ekos::FocusState\" name=\"org.qtproject.QtDBus.QtTypeName.Out0\"/>\n"
"    </method>\n"
"    <method name=\"start\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"b\"/>\n"
"    </method>\n"
"    <method name=\"abort\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <annotation value=\"true\" name=\"org.freedesktop.DBus.Method.NoReply\"/>\n"
"    </method>\n"
"    <method name=\"capture\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"in\" type=\"d\" name=\"settleTime\"/>\n"
"      <arg direction=\"out\" type=\"b\"/>\n"
"    </method>\n"
"    <method name=\"focusIn\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"b\"/>\n"
"      <arg direction=\"in\" type=\"i\" name=\"ms\"/>\n"
"    </method>\n"
"    <method name=\"focusOut\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"b\"/>\n"
"      <arg direction=\"in\" type=\"i\" name=\"ms\"/>\n"
"    </method>\n"
"    <method name=\"checkFocus\">\n"
"      <arg direction=\"in\" type=\"d\" name=\"requiredHFR\"/>\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <annotation value=\"true\" name=\"org.freedesktop.DBus.Method.NoReply\"/>\n"
"    </method>\n"
"    <method name=\"canAutoFocus\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"b\"/>\n"
"    </method>\n"
"    <method name=\"useFullField\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"b\"/>\n"
"    </method>\n"
"    <method name=\"setBinning\">\n"
"      <arg direction=\"in\" type=\"i\" name=\"binX\"/>\n"
"      <arg direction=\"in\" type=\"i\" name=\"binY\"/>\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"b\"/>\n"
"    </method>\n"
"    <method name=\"setAutoStarEnabled\">\n"
"      <arg direction=\"in\" type=\"b\" name=\"enable\"/>\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"b\"/>\n"
"    </method>\n"
"    <method name=\"setAutoSubFrameEnabled\">\n"
"      <arg direction=\"in\" type=\"b\" name=\"enable\"/>\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"out\" type=\"b\"/>\n"
"    </method>\n"
"    <method name=\"setAutoFocusParameters\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <arg direction=\"in\" type=\"i\" name=\"boxSize\"/>\n"
"      <arg direction=\"in\" type=\"i\" name=\"stepSize\"/>\n"
"      <arg direction=\"in\" type=\"i\" name=\"maxTravel\"/>\n"
"      <arg direction=\"in\" type=\"d\" name=\"tolerance\"/>\n"
"      <arg direction=\"out\" type=\"b\"/>\n"
"    </method>\n"
"    <method name=\"resetFrame\">\n"
"      <arg direction=\"in\" type=\"s\" name=\"trainname\"/>\n"
"      <annotation value=\"true\" name=\"org.freedesktop.DBus.Method.NoReply\"/>\n"
"    </method>\n"
"    <signal name=\"newStatus\">\n"
"      <arg direction=\"out\" type=\"(i)\" name=\"status\"/>\n"
"      <arg direction=\"out\" type=\"s\" name=\"trainname\"/>\n"
"      <annotation value=\"Ekos::FocusState\" name=\"org.qtproject.QtDBus.QtTypeName.Out0\"/>\n"
"    </signal>\n"
"    <signal name=\"newLog\">\n"
"      <arg direction=\"out\" type=\"s\" name=\"text\"/>\n"
"    </signal>\n"
"    <signal name=\"newHFR\">\n"
"      <arg direction=\"out\" type=\"d\" name=\"HFR\"/>\n"
"      <arg direction=\"out\" type=\"i\" name=\"position\"/>\n"
"      <arg direction=\"out\" type=\"b\" name=\"inAutofocus\"/>\n"
"      <arg direction=\"out\" type=\"s\" name=\"trainname\"/>\n"
"    </signal>\n"
"  </interface>\n"
        "")
public:
    FocusAdaptor(Ekos::FocusModule *parent);
    ~FocusAdaptor() override;

    inline Ekos::FocusModule *parent() const
    { return static_cast<Ekos::FocusModule *>(QObject::parent()); }

public: // PROPERTIES
public Q_SLOTS: // METHODS
    Q_NOREPLY void abort(const QString &trainname);
    QString camera(const QString &trainname);
    bool canAutoFocus(const QString &trainname);
    bool capture(const QString &trainname, double settleTime);
    Q_NOREPLY void checkFocus(double requiredHFR, const QString &trainname);
    QString filter(const QString &trainname);
    QString filterWheel(const QString &trainname);
    bool focusIn(const QString &trainname, int ms);
    bool focusOut(const QString &trainname, int ms);
    QString focuser(const QString &trainname);
    Q_NOREPLY void resetFrame(const QString &trainname);
    bool setAutoFocusParameters(const QString &trainname, int boxSize, int stepSize, int maxTravel, double tolerance);
    bool setAutoStarEnabled(bool enable, const QString &trainname);
    bool setAutoSubFrameEnabled(bool enable, const QString &trainname);
    bool setBinning(int binX, int binY, const QString &trainname);
    bool setFilter(const QString &filter, const QString &trainname);
    bool start(const QString &trainname);
    Ekos::FocusState status(const QString &trainname);
    bool useFullField(const QString &trainname);
Q_SIGNALS: // SIGNALS
    void newHFR(double HFR, int position, bool inAutofocus, const QString &trainname);
    void newLog(const QString &text);
    void newStatus(Ekos::FocusState status, const QString &trainname);
};

#endif
