#include "dualcamgrabber.h"
#include <iostream>
#include <pylon/PylonIncludes.h>

void DualcamGrabber::run() {
  stop_request = false;
  size_t framecount = 0;
  if (wrapper->isOpen()) {
      Pylon::CInstantCameraArray &cameras = wrapper->getCameraArray();
      wrapper->frameRate(static_cast<uint>(framerate));
      wrapper->exposureTime(exposure);
      wrapper->gain(gain);
      cameras.StartGrabbing();
      Pylon::CGrabResultPtr frame0, frame1;

      while (cameras.IsGrabbing() && !stop_request) {
          MyImage *img = new MyImage();
          cameras.RetrieveResult( 5000, framecount % 2 == 0 ? frame0 : frame1, Pylon::TimeoutHandling_ThrowException );
          img->setFrame(framecount % 2 == 0 ? frame0 : frame1);
          if (framecount % 2 == 0) {
            buffer0->push(img);
          } else {
            buffer1->push(img);
          }
          framecount += 1;
      }
      cameras.StopGrabbing();
    }
}