#pragma once
//#pragma warning(disable:4251)
#include "ILamp.h"

#include "CommonToolDll.h"
#include "ControllerDll.h"
#include "sControllerDll.h"
#include "ErrorCode.h"
#pragma comment(lib,"CommonToolDll.lib")
#pragma comment(lib,"ControllerDll.lib")
#pragma comment(lib,"sControllerDll.lib")


#ifdef LAMP_CST_EXPORTS
#define LAMP_CST_DLL_API __declspec(dllexport)
#else
#define LAMP_CST_DLL_API //__declspec(dllimport)
#endif

class LAMP_CST_DLL_API CLamp_CST : public ILamp
{
private:
	ControllerHandle m_stControllerHandle;
	static std::mutex m_mutexReadWrite;

public:
	long Init(const char* ipAddress) override; //��ʼ��
	void UnInit() override;//�ر�

	string GetErrText(long errid) override;

	long SetLight(std::vector<LIGHT_STRUCT> vecLight, unsigned char iMaxSendNum = 3) override;
	long SetLight(int ChannelIndex, int LightValue, unsigned char iMaxSendNum = 3) override;
	long GetLight(int ChannelIndex, int& LightValue, unsigned char iMaxSendNum = 3) override;

	CLamp_CST(string strLightName);
	~CLamp_CST();
};