#ifndef DUALCAMGRABBER_H
#define DUALCAMGRABBER_H

#include <QObject>
#include <QThread>
#include "dualcamwrapper.h"
#include "imagebuffer.h"

class DualcamGrabber : public QThread
{
  Q_OBJECT
public:
  DualcamGrabber(DualcamWrapper *wrapper, ImageBuffer *buffer, int framerate, QObject *parent = nullptr) :
    QThread(parent), wrapper(wrapper), buffer(buffer), framerate(framerate) {}

  void run() override;
  void stop();
  int currentFramerate() {
    return framerate;
  }

  double currentExposureTime() {
      return exposure;
  }

  double currentGain() {
      return gain;
  }

private:
  bool stop_request = false;
  DualcamWrapper *wrapper;
  ImageBuffer *buffer;
  int framerate;
  double exposure, gain;

public slots:
  void requestStop() {
    stop_request=true;
  }

  void setFrameRate(int newFramerate) {
    framerate = newFramerate;
  }

  void setExposureTime(double newExposureTime) {
    exposure = newExposureTime;
  }

  void setGain(double gain_db) {
    gain = gain_db;
  }

signals:
  void terminated();
};

#endif // DUALCAMGRABBER_H