#ifndef ENGINE_DIAGNOSTIC_H #define ENGINE_DIAGNOSTIC_H #include "script_global.h" #include "core/gtl_device.h" #include "script/gtl_scr_engine.h" namespace gtl { namespace scr { class diagnostic : public QObject { Q_OBJECT Q_PROPERTY(qreal interval READ interval WRITE set_interval NOTIFY interval_changed) Q_PROPERTY(qreal time READ time WRITE set_time NOTIFY time_changed) Q_PROPERTY(qreal progress READ progress WRITE set_progress NOTIFY progress_changed) public: diagnostic(QObject* parent = NULL); qreal interval() const; qreal time() const; void start(); bool is_running() const; qreal progress() const; private: qreal _interval; qreal _time; bool _is_running; qreal _progress; signals: void interval_changed(); void time_changed(); void stopped(); void progress_changed(); void progress_(qreal); public slots: void set_interval(qreal value); void set_time(qreal value); void stop(); void set_progress(qreal value); }; class SCRIPT_EXPORT engine_diagnostic : public engine { Q_OBJECT public: engine_diagnostic(QObject* parent = NULL); virtual bool evaluate(QString program) override; private: QJSValue _diagnose; diagnostic *_diagnostic; std::map _devices_intervals; private: virtual void init() override; protected slots: virtual void device_recieved_data() override; private slots: void connect_spec(gtl::scr::spec* spec); void connect_base_index(gtl::math::analog_value *index); signals: void diagnostic_stopped(); void diagnostic_progress(qreal); }; } } #endif // ENGINE_DIAGNOSTIC_H