//============================================================================== // // Title: TLDC2200 // Purpose: A short description of the interface. // // Created on: 9/30/2014 at 4:22:59 PM by cwestphal. // Copyright: . All Rights Reserved. // Last Change May-30-2016 by dkause // //============================================================================== #ifndef __TLDC2200_H__ #define __TLDC2200_H__ #ifdef __cplusplus extern "C" { #endif //============================================================================== // Include files //============================================================================== #include //#include "TLDC2200_defines.h" /*--------------------------------------------------------------------------- USB stuff ---------------------------------------------------------------------------*/ #define TLDC2200_VID (0x1313) // Thorlabs #define TLDC2200_PID_DFU (0x80C0) // Thorlabs DC2200 with DFU interface enabled #define TLDC2200_PID (0x80C8) // Thorlabs DC2200 w/o DFU interface /*--------------------------------------------------------------------------- Buffers ---------------------------------------------------------------------------*/ #define TLDC2200_BUFFER_SIZE 256 // General buffer size #define TLDC2200_ERR_DESCR_BUFFER_SIZE 512 // Error description buffer size /*--------------------------------------------------------------------------- Find Pattern ---------------------------------------------------------------------------*/ #define TLDC2200_FIND_PATTERN ("USB?*?{VI_ATTR_MANF_ID==0x1313 && VI_ATTR_MODEL_CODE==0x80C8}") #define TLDC2200_SESSION_TIMEOUT 3000 /*--------------------------------------------------------------------------- Error/Warning Codes Note: The instrument returns errors within the range -512 .. +1023. The driver adds the value VI_INSTR_ERROR_OFFSET (0xBFFC0900). So the driver returns instrumetn errors in the range 0xBFFC0700 .. 0xBFFC0CFF. ---------------------------------------------------------------------------*/ // Offsets #undef VI_INSTR_WARNING_OFFSET #undef VI_INSTR_ERROR_OFFSET #define VI_INSTR_WARNING_OFFSET (0x3FFC0900L) #define VI_INSTR_ERROR_OFFSET (_VI_ERROR + 0x3FFC0900L) //0xBFFC0900 // Driver Error Codes #define TLDC2200_ERROR_UNKNOWN_ATTRIBUTE (VI_INSTR_ERROR_OFFSET + 1) #define TLDC2200_ERROR_NOT_SUPPORTED (VI_INSTR_ERROR_OFFSET + 2) #define TLDC2200_ERROR_PARAMETER_OUT_OF_RANGE (VI_INSTR_ERROR_OFFSET + 3) #define TLDC2200_ERROR_LIMIT_COUNT_REACHED (VI_INSTR_ERROR_OFFSET + 4) #define TLDC2200_ERROR_TEST_HEAD_FAILED (VI_INSTR_ERROR_OFFSET + 5) // Driver warnings #undef VI_INSTR_WARN_OVERFLOW #undef VI_INSTR_WARN_UNDERRUN #undef VI_INSTR_WARN_NAN #undef VI_INSTR_WARN_LEGACY_FW #define VI_INSTR_WARN_OVERFLOW (VI_INSTR_WARNING_OFFSET + 0x01L) //0x3FFC0901 #define VI_INSTR_WARN_UNDERRUN (VI_INSTR_WARNING_OFFSET + 0x02L) //0x3FFC0902 #define VI_INSTR_WARN_NAN (VI_INSTR_WARNING_OFFSET + 0x03L) //0x3FFC0903 #define VI_INSTR_WARN_LEGACY_FW (VI_INSTR_WARNING_OFFSET + 0x10L) //0x3FFC0910 /*--------------------------------------------------------------------------- Register Values ---------------------------------------------------------------------------*/ // common status bits #define STAT_VCC_FAIL_CHANGED 0x0001 #define STAT_VCC_FAIL 0x0002 #define STAT_OTP_CHANGED 0x0004 #define STAT_OTP 0x0008 #define STAT_NO_LED1_CHANGED 0x0010 #define STAT_NO_LED1 0x0020 #define STAT_LED_OPEN1_CHANGED 0x0040 #define STAT_LED_OPEN1 0x0080 #define STAT_LED_LIMIT1_CHANGED 0x0100 #define STAT_LED_LIMIT1 0x0200 #define STAT_IFC_REFRESH_CHANGED 0x1000 /*--------------------------------------------------------------------------- Value attributes ---------------------------------------------------------------------------*/ #define TLDC2200_ATTR_SET_VAL (0) #define TLDC2200_ATTR_MIN_VAL (1) #define TLDC2200_ATTR_MAX_VAL (2) #define TLDC2200_ATTR_DFLT_VAL (3) #define TLDC2200_ATTR_HOT_VAL (4) /*--------------------------------------------------------------------------- Driver attributes ---------------------------------------------------------------------------*/ #define TLDC2200_ATTR_AUTO_ERROR_QUERY (10) /*--------------------------------------------------------------------------- Protection modes ---------------------------------------------------------------------------*/ #define TLDC2200_PROTMODE_NONE (0) // None (protection disabled) #define TLDC2200_PROTMODE_PAUSE (1) // Pause laser (output enable) #define TLDC2200_PROTMODE_SWITCH_OFF (2) // Switch off laser /*--------------------------------------------------------------------------- LED head types ---------------------------------------------------------------------------*/ #define NO_HEAD 0 // no head at all #define FOUR_CHANNEL_HEAD 1 // four channel head #define ONE_CHANNEL_HEAD 2 // single channel head #define NOT_SUPPORTED_HEAD 253 // head with unsupported forward bias #define UNKNOWN_HEAD 254 // head with unknown type #define HEAD_WITHOUT_EEPROM 255 // old standard head /*--------------------------------------------------------------------------- Operation modes ( compatible with DC2100 ) ---------------------------------------------------------------------------*/ #define MODUS_CONST_CURRENT (0) #define MODUS_PWM (1) #define MODUS_EXTERNAL_CONTROL (2) #define MODUS_BRIGHTNESS (3) #define MODUS_PULSE (4) #define MODUS_INTERNAL_MOD (5) #define MODUS_TTL (6) /*--------------------------------------------------------------------------- Operation modes (Internal for the SCPI commands) ---------------------------------------------------------------------------*/ #define TLDC2200_LD_OPMODE_CC (1) // Constant current mode #define TLDC2200_LD_OPMODE_CB (2) // Brightness mode #define TLDC2200_LD_OPMODE_PWM (3) // PWM mode #define TLDC2200_LD_OPMODE_PULS (4) // Pulse mode #define TLDC2200_LD_OPMODE_IMOD (5) // Internal modulation mode #define TLDC2200_LD_OPMODE_EMOD (6) // External modulation mode #define TLDC2200_LD_OPMODE_TTL (7) // TTL mode /*--------------------------------------------------------------------------- LD/PD polarity ---------------------------------------------------------------------------*/ #define TLDC2200_POL_CG (0) // cathode grounded #define TLDC2200_POL_AG (1) // anode grounded /*--------------------------------------------------------------------------- Temperature types ---------------------------------------------------------------------------*/ #define TLDC2200_TEMPUNIT_CEL (0) // returns the temperature value in celsius #define TLDC2200_TEMPUNIT_FAR (1) // returns the temperature value in fahrenheit #define TLDC2200_TEMPUNIT_KEL (2) // returns the temperature value in kelvin /*--------------------------------------------------------------------------- Output Terminal ---------------------------------------------------------------------------*/ #define TLDC2200_OUTPUT_TERMINAL_10A (1) // uses the output 10A with 12 Pins #define TLDC2200_OUTPUT_TERMINAL_2A (2) // uses the output 2A with 4 Pins /*--------------------------------------------------------------------------- Internal Modulation Shape ---------------------------------------------------------------------------*/ #define TLDC2200_INTERNAL_MODULATION_SHAPE_SINE (1) #define TLDC2200_INTERNAL_MODULATION_SHAPE_SQUARE (2) #define TLDC2200_INTERNAL_MODULATION_SHAPE_TRIANGLE (3) //============================================================================== // Global functions //============================================================================== ViStatus _VI_FUNC TLDC2200_init (ViRsrc rsrcName, ViBoolean id_query, ViBoolean reset_instr, ViPSession vi); ViStatus _VI_FUNC TLDC2200_close (ViSession vi); //============================================================================== // Resource functions //============================================================================== ViStatus _VI_FUNC TLDC2200_get_device_count (ViSession vi, ViPUInt32 device_count); ViStatus _VI_FUNC TLDC2200_get_device_info ( ViSession vi, ViUInt32 device_index, ViChar manufacturer[], ViChar model_name[], ViChar serial_number[], ViPBoolean device_available, ViChar resource_name[]); //============================================================================== // Utility functions //============================================================================== ViStatus _VI_FUNC TLDC2200_reset (ViSession vi); ViStatus _VI_FUNC TLDC2200_self_test (ViSession vi, ViPInt16 test_result, ViChar test_message[]); ViStatus _VI_FUNC TLDC2200_error_query (ViSession vi, ViPInt32 error_code, ViChar error_message[]); ViStatus _VI_FUNC TLDC2200_error_message (ViSession vi, ViStatus status_code, ViChar message[]); ViStatus _VI_FUNC TLDC2200_revision_query (ViSession vi, ViChar driver_rev[], ViChar instr_rev[]); ViStatus _VI_FUNC TLDC2200_get_head_info (ViSession vi, ViChar serialNumber[], ViChar name[], ViPInt32 type); //============================================================================== // Configuration functions //============================================================================== ViStatus _VI_FUNC TLDC2200_get_limit_current_range (ViSession vi, ViUInt16 terminal, ViReal64 voltage, ViPReal64 minimumCurrent, ViPReal64 maximumCurrent); ViStatus _VI_FUNC TLDC2200_setLimitCurrent (ViSession vi, ViReal32 limit); /// \bug ViReal32 is unallowed data type ViStatus _VI_FUNC TLDC2200_getLimitCurrent (ViSession vi, ViPReal32 limit); /// \bug ViReal32 is unallowed data type ViStatus _VI_FUNC TLDC2200_get_limit_voltage_range (ViSession vi, ViUInt16 terminal, ViReal64 current, ViPReal64 minimumVoltage, ViPReal64 maximumVoltage); ViStatus _VI_FUNC TLDC2200_set_limit_voltage (ViSession vi, ViReal64 limitVoltage); ViStatus _VI_FUNC TLDC2200_get_limit_voltage (ViSession vi,ViPReal64 limitVoltage); ViStatus _VI_FUNC TLDC2200_setOperationMode (ViSession vi, ViInt32 operationMode); ViStatus _VI_FUNC TLDC2200_getOperationMode (ViSession vi, ViPInt32 operationMode); ViStatus _VI_FUNC TLDC2200_set_output_terminal (ViSession vi, ViUInt16 terminal); ViStatus _VI_FUNC TLDC2200_get_output_terminal (ViSession vi,ViPUInt16 terminal); ViStatus _VI_FUNC TLDC2200_setLedOnOff (ViSession vi, ViBoolean LEDOnOff); ViStatus _VI_FUNC TLDC2200_getLedOnOff (ViSession vi, ViPBoolean LEDOutputState); ViStatus _VI_FUNC TLDC2200_test_head (ViSession vi, ViUInt16 terminal); ViStatus _VI_FUNC TLDC2200_get_output_condition (ViSession vi, ViPBoolean outputCondition); ViStatus _VI_FUNC TLDC2200_get_limit_current_protection (ViSession vi, ViPBoolean limitCurrent); ViStatus _VI_FUNC TLDC2200_get_limit_voltage_protection (ViSession vi, ViPBoolean limitVoltage); ViStatus _VI_FUNC TLDC2200_get_interlock_protection (ViSession vi, ViPBoolean interlockCircuitProtection); ViStatus _VI_FUNC TLDC2200_get_driver_over_temperature_protection (ViSession vi, ViPBoolean driverOverTemperature); ViStatus _VI_FUNC TLDC2200_get_head_over_temperature_protection (ViSession vi, ViPBoolean headOverTemperature); ViStatus _VI_FUNC TLDC2200_setConstCurrent (ViSession vi, ViReal32 current); ViStatus _VI_FUNC TLDC2200_getConstCurrent (ViSession vi, ViPReal32 current); ViStatus _VI_FUNC TLDC2200_set_brightness (ViSession vi, ViReal64 brightness); ViStatus _VI_FUNC TLDC2200_get_brightness (ViSession vi, ViPReal64 brightness); ViStatus _VI_FUNC TLDC2200_setPWMCurrent (ViSession vi,ViReal32 current); ViStatus _VI_FUNC TLDC2200_getPWMCurrent (ViSession vi, ViPReal32 current); ViStatus _VI_FUNC TLDC2200_setPWMFrequency (ViSession vi, ViReal64 frequency); ViStatus _VI_FUNC TLDC2200_getPWMFrequency (ViSession vi, ViPReal64 frequency); ViStatus _VI_FUNC TLDC2200_setPWMDutyCycle (ViSession vi, ViInt32 dutyCycle); ViStatus _VI_FUNC TLDC2200_getPWMDutyCycle (ViSession vi, ViPInt32 dutyCycle); ViStatus _VI_FUNC TLDC2200_setPWMCounts (ViSession vi, ViInt32 counts); ViStatus _VI_FUNC TLDC2200_getPWMCounts (ViSession vi, ViPInt32 counts); ViStatus _VI_FUNC TLDC2200_set_pulse_brightness (ViSession vi, ViReal64 brightness); ViStatus _VI_FUNC TLDC2200_get_pulse_brightness (ViSession vi, ViPReal64 brightness); ViStatus _VI_FUNC TLDC2200_set_pulse_on_time (ViSession vi,ViReal64 onTime); ViStatus _VI_FUNC TLDC2200_get_pulse_on_time (ViSession vi, ViPReal64 onTime); ViStatus _VI_FUNC TLDC2200_set_pulse_off_time (ViSession vi,ViReal64 offTime); ViStatus _VI_FUNC TLDC2200_get_pulse_off_time (ViSession vi,ViPReal64 offTime); ViStatus _VI_FUNC TLDC2200_set_pulse_counts (ViSession vi, ViInt32 counts); ViStatus _VI_FUNC TLDC2200_get_pulse_counts (ViSession vi, ViPInt32 counts); ViStatus _VI_FUNC TLDC2200_get_internal_modulation_current_max_range ( ViSession vi, ViPReal64 minimum, ViPReal64 maximum); ViStatus _VI_FUNC TLDC2200_set_internal_modulation_current_max (ViSession vi,ViReal64 currentMax); ViStatus _VI_FUNC TLDC2200_get_internal_modulation_current_max (ViSession vi, ViPReal64 currentMax); ViStatus _VI_FUNC TLDC2200_get_internal_modulation_current_min_range ( ViSession vi, ViPReal64 minimum, ViPReal64 maximum); ViStatus _VI_FUNC TLDC2200_set_internal_modulation_current_min (ViSession vi, ViReal64 currentMin); ViStatus _VI_FUNC TLDC2200_get_internal_modulation_current_min (ViSession vi, ViPReal64 currentMax); ViStatus _VI_FUNC TLDC2200_set_internal_modulation_shape (ViSession vi,ViInt32 shape); ViStatus _VI_FUNC TLDC2200_get_internal_modulation_shape (ViSession vi,ViPInt32 shape); ViStatus _VI_FUNC TLDC2200_set_internal_modulation_frequency (ViSession vi, ViReal64 frequency); ViStatus _VI_FUNC TLDC2200_get_internal_modulation_frequency (ViSession vi, ViPReal64 frequency); ViStatus _VI_FUNC TLDC2200_set_ttl_modulation_current (ViSession vi, ViReal64 current); ViStatus _VI_FUNC TLDC2200_get_ttl_modulation_current (ViSession vi, ViPReal64 current); ViStatus _VI_FUNC TLDC2200_setFanVoltage (ViSession vi, ViReal32 voltage); ViStatus _VI_FUNC TLDC2200_getFanVoltage (ViSession vi, ViPReal32 voltage); //============================================================================== // Measurement functions //============================================================================== ViStatus _VI_FUNC TLDC2200_get_led_current_measurement (ViSession vi, ViPReal64 currentMeasurement); ViStatus _VI_FUNC TLDC2200_get_led_voltage_measurement (ViSession vi, ViPReal64 voltageMeasurement); ViStatus _VI_FUNC TLDC2200_get_temperature_measurement (ViSession vi, ViPReal64 temperatureMeasurement); //============================================================================== // System functions //============================================================================== ViStatus _VI_FUNC TLDC2200_set_beeper_state (ViSession vi, ViBoolean state); ViStatus _VI_FUNC TLDC2200_get_beeper_state (ViSession vi, ViPBoolean state); ViStatus _VI_FUNC TLDC2200_set_beeper_volume (ViSession vi, ViReal64 volume); ViStatus _VI_FUNC TLDC2200_get_beeper_volume (ViSession vi, ViPReal64 volume); ViStatus _VI_FUNC TLDC2200_setDispBright (ViSession vi, ViInt32 displayBrightness); ViStatus _VI_FUNC TLDC2200_getDispBright (ViSession vi, ViPInt32 displayBrightness); ViStatus _VI_FUNC TLDC2200_set_auto_dimming (ViSession vi, ViBoolean state); ViStatus _VI_FUNC TLDC2200_get_auto_dimming (ViSession vi, ViPBoolean state); ViStatus _VI_FUNC TLDC2200_set_temperature_unit (ViSession vi, ViInt32 temperatureUnit); ViStatus _VI_FUNC TLDC2200_get_temperature_unit (ViSession vi, ViPInt32 temperatureUnit); ViStatus _VI_FUNC TLDC2200_getStatusRegister (ViSession vi, ViPInt32 statusRegister); ViStatus _VI_FUNC TLDC2200_get_measurement_status_register (ViSession vi, ViPInt32 statusRegister); ViStatus _VI_FUNC TLDC2200_get_standard_operation_register (ViSession vi, ViPInt32 standardRegister); ViStatus _VI_FUNC TLDC2200_getWavelength (ViSession vi, ViPReal32 wavelength); ViStatus _VI_FUNC TLDC2200_getForwardBias (ViSession vi,ViPReal32 forwardBias); ViStatus _VI_FUNC TLDC2200_is_equipped_with_temperature_sensor (ViSession vi, ViPBoolean temperatureSensorAvailable); //============================================================================== // LED Head Information functions //============================================================================== ViStatus _VI_FUNC TLDC2200_get_head_temperature_sensor_range (ViSession vi, ViPReal64 minimum, ViPReal64 maximum); ViStatus _VI_FUNC TLDC2200_is_equipped_with_fan (ViSession vi, ViUInt16 terminal, ViPBoolean fanAvailable); #ifdef __cplusplus } #endif #endif /* ifndef __TLDC2200_H__ */