#pragma once
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <vector>
#include "api/SeaBreezeWrapper.h"
#include "IrisFiberSpectrometerBase.h"

using namespace std;

class OceanOptics_lib :public CIrisFSBase
{
public:
	OceanOptics_lib();
	virtual ~OceanOptics_lib();
public:
	//初始化设备
	//此处string为指明连接哪个ocean光谱仪的参数，可自行更换为其他c/c++标准类型
	//0为无错误，不同错误请返回不同值(不能确定：当不成功时SeaBreeze返回的错误代码error不为0 → 不敢将error直接返回)
	int Initialize(bool bIsUSBMode, std::string ucPortNumber, std::string strDeviceName);//ok
	int Initialize();//ok

	//关闭设备
	void Close();//ok

	//单次数据采集
	int SingleShot(DataFrame &dfData);

	//设置曝光时间
	int SetExposureTime(int iExposureTimeInMS);//ok

	//获取曝光时间设置
	int GetExposureTime(int &iExposureTimeInMS);//ok

	//设置目标温度
	int SetDeviceTemperature(float fTemperature);//ok

	//获取温度设置
	int GetDeviceTemperature(float &fTemperature);//ok

	//获取设备信息
	int GetDeviceInfo(DeviceInfo &Info);//ok

	//获取设备特征数据
	int GetDeviceAttribute(DeviceAttribute &Attr);//ok

	//tc
	static const char* get_error_string(int error);
private:
	int m_iSpectralmeterHandle;
	DeviceInfo m_deviceInfo;
	int m_iExposureTime;

	bool isSuccess(char* resultStr);
	string GetDeviceType(int index);
	string GetSerialNumber(int index);
public:
	std::vector<int> m_vecDarkPixels;
};
