ENLIGHTEN
Cross-platform desktop GUI for Wasatch Photonics spectrometers
Loading...
Searching...
No Matches
backend.h
Go to the documentation of this file.
1
23
24#ifndef BACKEND_H
25#define BACKEND_H
26
27#include <QImage>
28#include <QObject>
29#include <QString>
30#include <QThread>
31#include <cstdint>
32#include <memory>
33
34#include "acquisitionworker.h"
35#include <peak/peak.hpp>
36
37class BackEnd : public QObject
38{
39 Q_OBJECT
40
41public:
42 explicit BackEnd(QObject* parent = nullptr);
43 ~BackEnd() override;
44
45 bool Start();
46
47 bool OpenDevice();
48 void CloseDevice();
49 bool InitializeAFL();
50
51 int GetImageWidth() const;
52 int GetImageHeight() const;
53
55 bool SetFocusMode(peak_afl_controller_automode mode);
56
57 peak::afl::Range<double> GetExposureRange();
58 double GetExposureInUs();
59 void SetExposure(double exposureTimeInUs, double& fpsOut, double& maxFpsOut);
60
62 peak::afl::Range<double> GetGainRange();
63 double GetGain();
64 void SetGain(double gain);
65
66 peak::afl::Range<double> GetFrameRateRange();
67 double GetFrameRate();
68 void SetFrameRate(double frameRate);
69
71 const std::vector<peak_afl_controller_algorithm>& GetSearchAlgorithms();
72 void SetSearchAlgorithm(int searchAlgorithmIndex);
73
75 const std::vector<peak_afl_controller_sharpness_algorithm>& GetSharpnessAlgorithms();
76 void SetSharpnessAlgorithm(int sharpnessAlgorithmIndex);
77
79 peak::afl::Range<uint8_t> GetHysteresisRange();
80 uint8_t GetHysteresis();
81 void SetHysteresis(uint8_t hysteresis);
82
84 peak::afl::Range<int64_t> GetSearchRangeRange();
85 peak_afl_controller_limit GetSearchRangeLimit();
86 bool SetSearchRange(int min, int max);
87
89 peak_afl_rectangle GetROI();
90 peak_afl_size GetROIMinSize();
91 bool SetROI(peak_afl_rectangle roi);
92
93 bool SetAutoControllerFinishedCallback(const peak::afl::callback::FinishedCallback& callback);
94 bool SetAutoControllerProcessingCallback(const peak::afl::callback::DataProcessingCallback& callback);
95
96 bool HasDeviceAutoFocus();
98
99private:
100 std::shared_ptr<peak::core::Device> m_device;
101 std::shared_ptr<peak::core::DataStream> m_dataStream;
102 std::shared_ptr<peak::core::NodeMap> m_nodemapRemoteDevice;
103
104 bool m_aflInitialized = false;
105 std::shared_ptr<peak::afl::Manager> m_autoFeatureManager{};
106 std::shared_ptr<peak::afl::Controller> m_autoController{};
107
108 std::vector<peak_afl_controller_algorithm> m_searchAlgorithms{};
109 std::vector<peak_afl_controller_sharpness_algorithm> m_sharpnessAlgorithms{};
110
113
114 bool NodeIsAvailable(const std::string& node_name);
115 bool NodeIsReadable(const std::string& node_name);
116 bool NodeIsWriteable(const std::string& node_name);
117
118signals:
119 void ImageReceived(QImage image);
120 void CounterChanged(unsigned int frameCounter, unsigned int errorCounter);
121 void MessageBoxTrigger(QString messageTitle, QString messageText);
122};
123
124#endif // BACKEND_H
The AcquisitionWorker class is used in a worker thread to capture images from the device continuously...
Definition acquisitionworker.h:41
const std::vector< peak_afl_controller_algorithm > & GetSearchAlgorithms()
Definition backend.cpp:544
void CloseDevice()
Definition backend.cpp:228
void SetHysteresis(uint8_t hysteresis)
Definition backend.cpp:830
void SetSharpnessAlgorithm(int sharpnessAlgorithmIndex)
Definition backend.cpp:812
bool IsAutoFocusModeSupported()
Definition backend.cpp:330
~BackEnd() override
Definition backend.cpp:57
peak::afl::Range< double > GetGainRange()
Definition backend.cpp:445
bool NodeIsReadable(const std::string &node_name)
Definition backend.cpp:1006
double GetFrameRate()
Definition backend.cpp:516
peak_afl_rectangle GetROI()
Definition backend.cpp:680
std::shared_ptr< peak::core::Device > m_device
Definition backend.h:100
peak::afl::Range< double > GetExposureRange()
Definition backend.cpp:348
bool Start()
Definition backend.cpp:89
peak::afl::Range< uint8_t > GetHysteresisRange()
Definition backend.cpp:583
std::shared_ptr< peak::core::NodeMap > m_nodemapRemoteDevice
Definition backend.h:102
std::shared_ptr< peak::afl::Controller > m_autoController
Definition backend.h:106
peak::afl::Range< double > GetFrameRateRange()
Definition backend.cpp:483
void MessageBoxTrigger(QString messageTitle, QString messageText)
bool InitializeAFL()
Definition backend.cpp:284
std::shared_ptr< peak::core::DataStream > m_dataStream
Definition backend.h:101
void SetSearchAlgorithm(int searchAlgorithmIndex)
Definition backend.cpp:794
void SetExposure(double exposureTimeInUs, double &fpsOut, double &maxFpsOut)
Definition backend.cpp:742
bool SetFocusMode(peak_afl_controller_automode mode)
Definition backend.cpp:716
void EnsureDeviceAutoFeaturesAreDisabled()
Definition backend.cpp:926
bool SetSearchRange(int min, int max)
Definition backend.cpp:843
void SetGain(double gain)
Definition backend.cpp:767
peak_afl_controller_limit GetSearchRangeLimit()
Definition backend.cpp:624
void UpdateSharpnessAlgorithms()
Definition backend.cpp:550
int GetImageWidth() const
Definition backend.cpp:689
uint8_t GetHysteresis()
Definition backend.cpp:597
bool HasDeviceAutoFocus()
Definition backend.cpp:919
AcquisitionWorker * m_acquisitionWorker
Definition backend.h:111
bool OpenDevice()
Definition backend.cpp:109
bool SetAutoControllerProcessingCallback(const peak::afl::callback::DataProcessingCallback &callback)
Definition backend.cpp:904
bool IsHysteresisSupported()
Definition backend.cpp:569
bool SetGainSelectorToAll()
Definition backend.cpp:394
bool IsAutoFocusROISupported()
Definition backend.cpp:664
QThread m_acquisitionThread
Definition backend.h:112
const std::vector< peak_afl_controller_sharpness_algorithm > & GetSharpnessAlgorithms()
Definition backend.cpp:563
bool m_aflInitialized
Definition backend.h:104
peak::afl::Range< int64_t > GetSearchRangeRange()
Definition backend.cpp:638
std::vector< peak_afl_controller_sharpness_algorithm > m_sharpnessAlgorithms
Definition backend.h:109
BackEnd(QObject *parent=nullptr)
Definition backend.cpp:35
bool IsSearchRangeSupported()
Definition backend.cpp:611
std::shared_ptr< peak::afl::Manager > m_autoFeatureManager
Definition backend.h:105
bool SetROI(peak_afl_rectangle roi)
Definition backend.cpp:859
bool NodeIsWriteable(const std::string &node_name)
Definition backend.cpp:1026
void CounterChanged(unsigned int frameCounter, unsigned int errorCounter)
double GetExposureInUs()
Definition backend.cpp:378
int GetImageHeight() const
Definition backend.cpp:695
std::vector< peak_afl_controller_algorithm > m_searchAlgorithms
Definition backend.h:108
bool NodeIsAvailable(const std::string &node_name)
Definition backend.cpp:986
peak_afl_size GetROIMinSize()
Definition backend.cpp:701
void SetFrameRate(double frameRate)
Definition backend.cpp:780
void UpdateSearchAlgorithms()
Definition backend.cpp:532
bool SetAutoControllerFinishedCallback(const peak::afl::callback::FinishedCallback &callback)
Definition backend.cpp:890
double GetGain()
Definition backend.cpp:468
void ImageReceived(QImage image)