#pragma once
#include "pch.h"
#include "ATPControl_Serial_QT.h"
#include <atomic>

typedef struct tagFSInfo
{
	ZZ_U8         ucDeviceModel;
	int           iInterface;
	std::string   strSN;
}FSInfo;

class CAbstractFSController :public QObject
{
	Q_OBJECT
public:
	CAbstractFSController(QObject* parent = nullptr);
	virtual ~CAbstractFSController();
public:
	//call first
	virtual int SetRunParas(int iThreadID, FSInfo fsInfo);

	//create derived class from base class 
	virtual int InitializeFSControl();

private:
	CIrisFSBase *m_pFSCtrl;
	int m_iThreadID;
	FSInfo m_fsInfo;

public slots:
	virtual int StartAcquisition();
	virtual int StopAcquisition();

signals:
	void SignalAcqStarted();
	void SignalAcqFinished(int iThreadID, int iFlagStatus);
};