#pragma once
/*************************************************
History:
Jimmy Chan 2022/1/25 3.0.0.0 build this moudle
Jimmy Chan 2022/3/9  3.0.0.1 add function "SetColorTemperature_s" and "SetMulColorTemperature_s" and "GetColorTemperature_s"
*************************************************/

#ifndef __SCONTROLLERDLL_H__
#define __SCONTROLLERDLL_H__

#ifdef _WIN64 
typedef	  long long   ControllerHandle;
#else
typedef	  long   ControllerHandle;
#endif

typedef struct MulDigitalValue_s
{
	int channelIndex;
	int DigitalValue;
}MulDigValItem_s;

typedef struct MulONOFF_s
{
	int channelIndex;
	int onoffState;
}MulONOFFItem_s;

typedef struct MulColorTemperature_s
{
	int channelIndex;
	int colorTemperature;
}MulColorTemperatureItem_s;

extern "C"
{
	_declspec(dllexport)	int SetDigitalValue_s(int ChannelIndex, int intensity, ControllerHandle controllerHandle);
	_declspec(dllexport)    int SetMulDigitalValue_s(MulDigValItem_s* MulDigValArray, int length, ControllerHandle controllerHandle);
	_declspec(dllexport)	int GetDigitalValue_s(int* intensity, int ChannelIndex, ControllerHandle controllerHandle);
	_declspec(dllexport)    int SetON_OFF_s(int ChannelIndex, int on_off, ControllerHandle controllerHandle);
	_declspec(dllexport)    int SetMulON_OFF_s(MulONOFFItem_s* MulONOFFArray, int length, ControllerHandle controllerHandle);
	_declspec(dllexport)    int GetON_OFF_s(int ChannelIndex, int* on_off, ControllerHandle controllerHandle);
	_declspec(dllexport)	int SetTriggerPolarity_s(int triggerPolarity, ControllerHandle controllerHandle);
	_declspec(dllexport)	int GetTriggerPolarity_s(int* triggerPolarity, ControllerHandle controllerHandle);
	_declspec(dllexport)	int GetChannelNumberSummary_s(int* channelNumberSummary, ControllerHandle controllerHandle);
	_declspec(dllexport)    int GetSoftwareVersion_s(int *softwareVersion, ControllerHandle controllerHandle);
	_declspec(dllexport)    int GetControllerModel_s(char *controllerModel, ControllerHandle controllerHandle);
	_declspec(dllexport)	int SetColorTemperature_s(int ChannelIndex, int colorTemperature, ControllerHandle controllerHandle);
	_declspec(dllexport)    int SetMulColorTemperature_s(MulColorTemperatureItem_s* MulColorTemperatureArray, int length, ControllerHandle controllerHandle);
	_declspec(dllexport)	int GetColorTemperature_s(int* colorTemperature, int ChannelIndex, ControllerHandle controllerHandle);
}

#endif