- 2024-06-27 2.1.73
- update demo.py to support multiple spectrometers
- add optional `callback` parameter to WrapperWorker for Inversion of Control (IoC)
- 2024-06-27 2.1.72
- temporarily disable GET_LASER_ENABLED on XS
- 2024-06-19 2.1.71
- disable applog to stdout if stdout missing
- 2024-06-12 2.1.70
- force laser to disable on perc/PWM zero
- 2024-05-30 2.1.69
- added avg_resolution to edittable EEPROM fields
- 2024-05-24 2.1.68
- added horizontal ROI to XL virtual EEPROM
- Raspberry Pi testing (no change)
- 2024-05-22 2.1.67
- relax thread logging 10sec after successful connection
- display connected spectrometer properties in demo.py
- 2024-05-07 2.1.66
- gave TakeOneRequest a copy-ctor
- 2024-05-02 2.1.65
- updated README links to work on pypi servers
- 2024-05-02 2.1.64
- added wasatch.FirmwareRequirements
- added wasatch.PollStatus
- added FID.get_poll_status() and .is_sensor_stable()
- added util.vercmp()
- added microcontroller serial number
- 2024-03-23 2.1.63
- CSVLoader
- store x-axes in ProcessedReading rather than metadata
- support "intensity" header
- simplified
- 2024-03-22 2.1.62
- ignore 3 consecutive USB errors when reading spectra (R&D)
- ignore None responses in WasatchDevice func/attr calls
- skip ambient temperature readout on ARM 1.0.2.9
- 2024-03-19 2.1.61
- handle either 3-byte or 2-byte FPGA_COMPILATION_OPTIONS response
- 2024-03-18 2.1.60
- added get_ambient_temperature_degC_arm
- 2024-03-15 2.1.59
- changed XS get_detector_gain to big-endian
- added clarity around XS laser_tec_mode -vs- enabled
- 2024-03-15 2.1.58
- added set/get_laser_tec_mode
- sanity-check XS laser TEC setpoint to 700-900 range
- 2024-03-14 2.1.57
- added laser temperature calibration for XS
- added EDC for XS
- clarified FPGAOptions as 24-bit (but ignore for XS)
- 2024-03-13 2.1.56
- double-check to prevent div-by-zero in InGaAs gain correction
- decline to parse FPGAOptions for ARM (leave at initialized values)
- 2024-03-13 2.1.55
- don't use FPGAOptions on ARM
- return "Sensor Stabilizing" message on ARM when intTime/gain changes
- 2024-03-07 2.1.54
- return "sensor stabilizing" message
- 2024-02-28 2.1.53
- enriched ProcessedReading.dump
- 2024-02-28 2.1.52
- fixed ProcessedReading bug
- 2024-02-27 2.1.51
- added ProcessedReading.get_pixel_axis
- 2024-02-20 2.1.50
- fixed AndorDevice temperature
- 2024-02-19 2.1.49
- return state.laser_enabled from FID.get_laser_enabled on SiG until FW fixed
- 2024-02-14 2.1.48
- ProcessedReading: force to np.array on load_from_dict, clear .interpolated on set_processed
- 2024-02-07 2.1.47
- ProcessedReading always takes wavelengths/wavenumbers from settings if empty and available
- 2024-02-06 2.1.46
- removed enlighten.SaveOptions(?) from wasatch.CSVLoader(?!?)
- made ProcessedReading smarter about loading wavelengths/wavenumbers from SpectrometerSettings
- 2024-02-05 2.1.45
- clarified scan averaging a bit
- added TakeOneRequest.scans_to_average
- 2024-01-30 2.1.44
- Auto-Raman fix: store laser-related attributes in Reading before auto-disabling laser
- notation updates
- 2024-01-26 2.1.43
- utils bugfix
- 2024-01-25 2.1.42
- TakeOneRequest.take_dark + .enable_laser_before now implies laser disable + 1sec delay
- 2024-01-23 2.1.41
- moved to TakeOneRequest
- deprecated acquisition_laser_trigger_enable, self.acquisition_take_dark_enable and acquisition_laser_trigger_delay_ms
- 2024-01-15 2.1.40
- better UTF-8 support
- support cropped/interpolated ProcessedReading in dict conversions
- 2024-01-11 2.1.39
- refactored ProcessedReading with new .cropped and .interpolated nodes
- fixed small PWM bug
- 2023-12-18 2.1.38
- fixed iterable bug in ProcessedReading dict ctor
- 2023-12-14 2.1.37
- ProcessedReading tweak
- 2023-12-07 2.1.36
- add throwaways around IMX sensor commands
- treat flat IMX spectra as keepalives
- 2023-11-01 2.1.35
- auto-generate raman_intensity_calibration_order in AndorDevice virtual EEPROM if missing
- added ProcessedReading.to_dict()
- 2023-09-20 2.1.34
- added applog(append)
- 2023-09-20 2.1.33
- enforce FPGA version number length
- log USB results in hex
- check for "bad data" in EEPROM
- XS-Series
- added set_laser_power_attenuator
- added support for startup laser TEC setpoint
- read battery 0.2Hz
- 2023-07-10 2.1.32
- offset gettors now return SpectrometerResponse
- fixed display of gettors returning SpectrometerResponse in WasatchShell
- 2023-07-04 2.1.31
- clarify methods returning bool vs SpectrometerResponse
- remove return type annotations
- s/vignette/crop/
- 2023-06-13 2.1.30
- invert x-axis for 1064XL
- don't enable TEC with default / invalid TEC calibration
- restore ability for CSVLoader.parse_metadata to support single-measurement
CSVs where metadata fields are expected to be scalars rather than lists
- 2023-05-10 2.1.29
- support for 1064XL
- 2023-05-03 2.1.28
- better handling of rare null-buffer EEPROM readout
- 2023-01-13 2.1.27
- is_andor fix
- laser watchdog fix (disable on older EEPROMs)
- 2022-12-14 2.1.26
- default InGaAs detectors to high-gain mode
- forget disconnected USB devices
- 2022-12-13 2.1.25
- disable laserEnable verification loop for Series-XS
- 2022-12-07 2.1.24
- update EEPROM to Rev15
- default laser power calibration to high-resolution
- 2022-10-26 2.1.23
- fix connect bug
- added scripts/dark-vs-integ.py
- 2022-10-17 2.1.22
- updates to MockUSBDevice to support ENLIGHTEN regression tests
- 2022-10-12 2.1.21
- add is_sml and is_mml functions
- fix floating-point array index lookup
- 2022-10-11 2.1.20
- added demo-virtual and readme for virtual spectrometers
- 2022-09-19 2.1.19
- track reset tries within WasatchDeviceWrapper
- stop sending bools upstream from WasatchDeviceWrapper.acquire_data
- 2022-09-19 2.1.18
- added WasatchDevice.reset()
- added utils.check_admin()
- 2022-08-31 2.1.17
- fix name error in external trigger control flow
- Add pyusb reset for disconnect on error robustness
- 2022-08-16 2.1.16
- Restructure DeviceID to no longer carry other classes
- Move control logic for BLE from ENLIGHTEN to here
- Change Mock spec creation so that it can be done by info in DeviceID
- 2022-08-04 2.1.15
- fixed bug affecting spectra loaded from file and thus missing SpectrometerSettings.hardware_info
- 2022-07-28 2.1.14
- change all Device.connect() methods to return SpectrometerResponse so
caller can display appropriate error message
- 2022-07-21 2.1.13
- SPIDevice upgrades
- deprecated laser power ramping
- ignore laser PWM return codes
- Andor fixes
- 2022-07-11 2.1.12
- added get_dark and set_raman_intensity_correction_enable in WasatchShell
- 2022-06-23 2.1.11
- remove := to allow more backwards compatibility
- 2022-06-13 2.1.10
- add high gain mode for andor
- 2022-06-10 2.1.9
- add check to prevent vertical binning for legacy sig vis
- 2022-06-06 2.1.8
- support encoding in CSVLoader
- fix Andor fan control
- 2022-05-11 2.1.7
- populate laser attributes on Readings
- fixed bug in can_laser_fire
- 2022-04-28 2.1.6
- Resolve SPI eeprom read and write issues
- 2022-04-27 2.1.5
- Andor updates
- added error codes
- support "detector" override from .json
- increase shutter time per Newton testing
- fixed WrapperWorker bug
- 2022-04-22 2.1.4
- Andor updates
- search for DLL in various locations
- support startup_integration_time_ms and startup_temp_degC in JSON
- default startup_temp_degC to -60C if not specified in JSON
- added DeviceID.is_andor()
- populate SpectrometerState.shutter_enable
- respect array length in EEPROM.generate_write_buffers
- 2022-04-21 2.1.3
- fix break in BLE functions
- refactor wrapper worker to not use if, elif, elif ... for each device type
- 2022-04-19 2.1.2
- added NaN check to has_linearity_coeffs (and made public)
- 2022-04-19 2.1.1
- restored automatic laser disable at connect
- restored automatic TEC enable at connect
- added demo-workflow.py
- added 'make pip-install-local'
- Setup SPI device
- 2022-04-06 2.1.0
- Setup interface devices in new architecture
- 2022-03-21 2.0.3
- renamed has_laser_tec to sig_laser_tec
- added has_interlock_feedback
- 2022-03-17 2.0.2
- explicitly prefer libusb0 backend (needed for 64-bit)
- fixed potential EEPROM logging bug
- 2022-01-28 2.0.1
- fixed logging bug
- 2022-01-18 2.0.0
- add support for Andor Spectrometers
- 2021-12-13 1.1.37
- dropped FeatureMask support from EEPROM format 9 (only support on format 10+)
- 2021-10-28 1.1.36
- added FID.can_laser_fire() and is_laser_firing() (and corresponding Reading flags)
- grouped laser commands in FID
- switched some FID getters from returning 1/0 to True/False
- 2021-10-18 1.1.35
- added OceanDevice.py
- Changed DeviceFinderUSB.py to use usb.core
- 2021-10-13 1.1.34
- added get_fpga_configuration_register
- trap for 0ms integration time
- 2021-09-21 1.1.33
- added DetectorROI.enabled
- added SpectrometerSettings.init_regions
- added FID.clear_regions, set_single_region
- fixed bin2x2 bug
- added SpectrometerState.ignore_timeouts_for
- 2021-09-20 1.1.32
- many ROI updates
- 2021-09-16 1.1.31
- DetectorRegions working from ENLIGHTEN
- 2021-09-16 1.1.30
- don't try to configure/claim interface on Windows
- 2021-09-13 1.1.29
- fixed untethered uint16s
- 2021-09-01 1.1.28
- replaced set_pixel_depth with set_pixel_mode
- updated opcodes for set_pixel_mode and set_detector_roi
- removed FileSpectrometer
- removed Overrides
- removed FileBus
- 2021-08-31 1.1.27
- added DetectorRegions
- added DetectorROI
- added set_detector_roi
- added set_pixel_depth
- 2021-08-20 1.1.26
- untethered
- 2021-08-12 1.1.25
- extracted WrapperWorker
- docs
- 2021-08-12 1.1.24
- many changes to area scan
- 2021-08-11 1.1.23
- get_detector_gain\* only updates session eeprom if update_session_eeprom=True
- 2021-08-04 1.1.22
- auto-apply startup_integration_time_ms on connect
- 2021-07-28 1.1.21
- added utils.to_bool
- 2021-07-20 1.1.20
- fixed setting gain to 0.99999999
- 2021-07-15 1.1.19
- InGaAs fix
- 2021-07-15 1.1.18
- merged customer fix
- removed rounding from even-odd correction
- 2021-07-15 1.1.17
- more consistent rounding / casting to ints
- removed heartbeat logs
- removed EEPROM serial number validation on write
- docs
- 2021-07-14 1.1.16
- debugs
- 2021-07-14 1.1.15
- added hardwareEvenOdd
- 2021-07-14 1.1.14
- moved float_to_uint16 to EEPROM
- bumped EEPROM.format to 12
- 2021-07-14 1.1.13
- made FID.py return values more consistent
- added utils.float_to_uint16
- 2021-07-06 1.1.12
- removed regex from SpectrometerSettings.full_model
- 2021-06-21 1.1.11
- store retrieved detector_offset to cached EEPROM after read from FPGA
- updated gettors in WasatchShell
- 2021-06-21 1.1.10
- fixed "detctor" typos in FID gettors
- 2021-06-18 1.1.9
- cache battery percentage
- 2021-05-25 1.1.8
- updates for cross-platform logging
- 2021-05-25 1.1.7
- changed SpectrometerState.laser_power_in_mW to use_mW
- changed SpectrometerState.laser_power to laser_power_perc and _mW
- changed Reading .laser_power to laser_power_perc and _mW
- removed bare_readings
- 2021-05-24 1.1.6
- fixed laser_power_in_mW bug
- 2021-05-19 1.1.5
- demo version logging
- log SRM coefficients on math exception
- 2021-05-14 1.1.4
- added ROI
- 2021-04-28 1.1.3
- fixed poison-pill bug on IMX
- 2021-04-15 1.1.2
- fixed settings.is_arm bug
- 2021-04-14 1.1.1
- downleveled some error messages
- clarified state.gain_db vs eeprom.detector_gain
- enforced that is_sig implies is_arm
- log format tweak
- 2021-04-09 1.1.0
- changing WasatchDeviceWrapper from multiprocess to multithreaded
- 2021-04-05 1.0.73
- fixed get_ambient_temperature_degC
- renamed get_ccd_trigger_source -> get_trigger_source
- renamed get_mod_duration -> get_mod_duration_us
- renamed get_mod_period -> get_mod_period_us
- renamed get_mod_width -> get_mod_width_us
- renamed get_mod_pulse_delay -> get_mod_delay_us
- renamed set_cont_strobe_enable -> set_strobe_enable (just simplified set_laser_enable)
- 2021-03-30 1.0.72
- added EEPROM.update_digest()
- 2021-03-30 1.0.71
- update state.gain_db during get_detector_gain
- 2021-03-30 1.0.70
- prevent vertical binning start/stop lines from matching (stop must be > start)
- 2021-03-25 1.0.69
- restored even/odd InGaAs gain/offset correction
- 2021-03-23 1.0.68
- added macOS to Darwin exclusion in applog.py
- 2021-03-18 1.0.67
- fixed InGaAs bug on get_high_gain_mode_enabled
- 2021-03-15 1.0.66
- added FeatureMask.cutoff_filter_installed
- added EEPROM.laser_warmup_sec
- added Gen 1.5 to WasatchShell
- made Fast Area Scan the default
- 2021-02-24 1.0.65
- docs
- accessory connector
- added get/set_fan_enable
- added get/set_lamp_enable
- added FeatureMask.gen15
- 2021-02-02 1.0.64
- consolidated spectrometer feature queries into SpectrometerSettings
- added support for "fast" area scan
- added support for raman_correction
- fixed invert_x_axis bug
- accessory connector (initial ICD, testing pending FW)
- SpectrometerState
- shutter_enabled
- cont_strobe_enabled
- cont_strobe_width_us
- cont_strobe_period_us
- FeatureIdentificationDevice (and WasatchShell)
- set_shutter_enable
- get_shutter_enable
- set_cont_strobe_enable
- get_cont_strobe_enable
- set_cont_strobe_period_us
- get_cont_strobe_period_us
- set_cont_strobe_width_us
- get_cont_strobe_width_us
- get_ambient_temperature_degC
- 2021-01-05 1.0.63
- added get_high_gain_mode_enable()
- added G9206 and G14237 to InGaAs detection
- made InGaAs detection more robust
- added parabolic approximation
- 2020-11-20 1.0.62
- added docs about Unicode logger warnings
- 2020-11-12 1.0.61
- added demo.py --version, stdev, debug output
- 2020-??-?? 1.0.60
- added invertXAxis, bin2x2 to EEPROM.dump
- 2020-08-06 1.0.59
- removed SiG Area Scan "stomp first 125px" kludge
- 2020-08-04 1.0.58
- reduced area scan "prefix overwrite" for non-IMX detectors
- 2020-07-28 1.0.57
- deprecated get_raman_mode from WasatchShell
- simplified retry logic
- simplified set_high_gain_mode
- increased laser watchdog on micro
- drafted get/set_analog_state/value
- disabled I2C overrides
- 2020-06-24 1.0.56
- removed SW implementation of odd gain/offset
- added get_line profiling
- automatically update laser watchdog timeout on ramanMicro
- deprecated HW laserDelay and ramanMode on ramanMicro
- added throwaways in TakeOne for ramanMicro
- added SpectrometerState.gainDb for ramanMicro
- 2020-06-11 1.0.55
- moved settings to lambdas
- added vertical ROI
- clamp offset
- move area scan from 0xe9 to 0xeb
- support 2048px ARM
- moved bad pixel correction into get_line
- added Reading.__str__
- 2020-05-15 1.0.54
- added EEPROM.feature_mask
- added FeatureMask.invert_x_axis
- added FeatureMask.bin2x2
- bumped EEPROM to rev 9
- support start-of-frame markers
- schedule_disconnect on DFU mode
- added Raman Mode, Raman Delay, Laser Watchdog
- 2020-04-26 1.0.53
- added raman_mode_enable
- support subformat 0
- better handling of 5th wavecal coeff
- extend timeouts for SiG sensor waking
- allow external triggering on FX2
- added SpectrometerSettings.full_model()
- added SpectrometerSettings.is_sig()
- 2020-03-27 1.0.52
- increased timeout for multiple devices
- added gain/offset initialization from EEPROM
- zero NaN wavecal coeffs
- 2020-03-25 1.0.51
- increased timeout for multiple devices
- added EEPROM.avg_resolution
- 2020-03-23 1.0.50
- added SpectrometerState.acquisition_take_dark_enable
- moved 5th wavecal coeff to EEPROM rev 8
- added retries on read of spectral bulk endpoint
- stubbing retry logic for FID.send_code
- fixed some bugs from moving coeffs_look_valid to utils
- 2020-02-28 1.0.49
- EEPROM fix
- 2020-02-27 1.0.48
- refactored spline
- updated laser ramping docs
- added connection state checks
- updated raman intensity calibration definition
- added DFU docs
- 2020-01-15 1.0.47
- added demo-simple.py
- 2020-01-10 1.0.46
- updated EEPROM to format 7
- 2019-10-11 1.0.45
- added Raman Intensity calibration
- added get_battery_register
- added SpectrometerSettings.lock_wavecal, has_excitation()
- added utils.generate_wavelengths_from_wavenumbers
- added utils.generate_excitation
- removed unused response_queue
- Doxygen
- 2019-10-08 1.0.44
- raman intensity calibration fixes
- 2019-10-08 1.0.43
- added raman intensity calibration
- added README_SETTINGS.md
- 2019-09-30 1.0.42
- added timout to applog listener
- fixed horizontal ROI limits
- added take_one, cancel_take_one, reset_scan_averaging
- added README_CHANGELOG.md
- 2019-09-19 1.0.41
- added various to_dict() methods to better-support JSON serialization
- 2019-09-16 1.0.40
- WasatchShell updates
- fixed demo.py with --max and --scans-to-average
- 2019-09-16 1.0.39
- added EEPROM.get_horizontal_roi()
- 2019-08-20 1.0.38
- WasatchShell updates
- added laser_power_require_modulation
- 2019-07-30 1.0.37
- added laser_power_high_resolution
- stopped sending FX2 fake buffers on laser pulse width/period
- 2019-07-16 1.0.36
- added allow_nan to EEPROM.json()
- 2019-07-16 1.0.35
- added --eod to WasatchShell
- 2019-06-17 1.0.34
- round negatives to zero when writing unsigned EEPROM fields
- 2019-06-05 1.0.33
- made write_eeprom 2nd-tier on ARM, legacy offset on FX2
- 2019-06-05 1.0.32
- disable "fake buffer length from value" on ARM
- 2019-05-31 1.0.31
- updated scripts/deploy
- still working on reading.laser_enabled
- 2019-05-31 1.0.30
- moved write_eeprom to 2nd-tier command
- 2019-05-29 1.0.29
- enable Area Scan for IMX detectors
- added EEPROM.product_configuration
- changed min/max_integration_time_ms to 32-bit
- 2019-05-15 1.0.28
- fixed DeviceFinderUSB bug in Linux
- 2019-05-13 1.0.27
- fallback bus/addr implementation
- 2019-05-10 1.0.26
- README-RPI.md
- added conda-rpi.yml
- cleanup Queue references in exception cases
- added DeviceID.__repr__()
- 2019-04-30 1.0.25
- made linearity_coeffs, laser_power_coeffs and min/max_laser_power_mW customer-editable
- 2019-04-29 1.0.24
- support for area scan on FX2
- 2019-04-25 1.0.23
- fixed utils.truthy() (Py3)
- 2019-04-24 1.0.22
- added max_tries and max_integration_time_ms to balance_acquisition
- WasatchShell updates
- logging fixes for ENLIGHTEN under Windows
- 2019-04-18 1.0.21
- added get_detector_tec_setpoint_degC
- added get_detector_tec_setpoint_raw
- added get_selected_laser
- 2019-04-15 1.0.20
- merging Pipes and Py3
- 2019-04-15 1.0.19
- moved multiprocessing.Queue to .Pipe
- 2019-04-11 py3-1.1.0
- initial Python 3 version (works on Linux)
- 2019-04-10 1.0.18
- fixed for Windows (reverted multiprocessing.Manager to multiprocessing)
- 2019-04-10 1.0.17
- memory profiling
- removed Zynq delay
- 2019-04-05 1.0.16
- made allow_default_gain_reset default
- 2019-04-04 1.0.15
- added swap_alternating_pixels
- added allow_default_gain_reset
- 2019-04-02 1.0.14
- clear response queue when disabling free-running mode
- Zynq fix
- 2019-04-01 1.0.13
- Enable ENG-0034 Rev 4
- 2019-03-29 1.0.12
- disable select_laser if no laser present
- kludge SiG-VIS to bare_readings
- 2019-03-28 1.0.11
- validate set_laser_enable with gettor
- replace WasatchDevice internal multiprocessing.Queue with array
- 2019-03-26 1.0.10
- added set_selected_laser to WasatchShell
- add is_zynq() with 250ms min USB interval
- ignore NULLs/control chars in reading FPGA revision string
- 2019-03-22 1.0.9
- added set_selected_laser
- improved robustness when recovering from disabled triggering
- 2019-03-15 1.0.8
- added bare_readings so WasatchShell wouldn't double-sample photodiode
- added immediate_mode so WasatchShell could use change_setting
- fixed BalanceAcquisition to support non-free-running mode
- moved auto-triggered laser disable to after laser temperature and photodiode readouts
- 2019-03-14 1.0.7
- stubbed select_laser
- tweaked poison-pill logic
- 2019-02-16 1.0.6
- added DeviceID
- renamed DeviceListFID -> DeviceFinderUSB
- removed bus_order
- 2019-02-16 1.0.5
- disabled EEPROM range-checks on integration time
- 2019-02-07 1.0.4
- added default_detector_setpoint_degC
- tweaked auto-laser behavior
- default to DEBUG logging until initialized
- 2019-02-04 1.0.3
- fixed demo.py
- renamed get_interlock to get_laser_interlock
- 2019-01-21 1.0.2
- improved hotplug support
- 2019-01-18 1.0.1
- better support for hotplug / unplug events (poison pill updates)
- added SpectrometerSettings.excitation()
- 2019-01-16 1.0.0
- added UUID for tracking multiple spectrometers
- deprecated StrokerProtocol devices
- 2018-01-04 0.9.18
- updated EEPROM field definitions to latest draft of ENG-0034 Rev 4
- added battery support
- 2018-11-28 0.9.17
- fixed scan averaging in non-free-running mode
- 2018-11-27 0.9.16
- bugfixes
- 2018-11-27 0.9.15
- changed detector_offset to SInt16
- added SpectrometerState.free_running_mode, .acquisition_laser_trigger_enable, .acquisition_laser_trigger_delay_ms
- added "acquire" device command (letting ENLIGHTEN trigger individual acquisitions)
- 2018-10-03 0.9.14
- fixed demo.py --outfile
- 2018-09-27 0.9.13
- fixed demo.py integration time
- 2018-09-25 0.9.12
- ARM triggering
- 2018-08-22 0.9.11
- improved exception handling
- 2018-08-14 0.9.10
- InGaAs offset/gain processing in software
- 2018-07-31 0.9.9
- added dependency on pexpect for testing
- 2018-07-31 0.9.8
- added utils.interpolate_array
- 2018-07-13 0.9.7
- converted WasatchShell into a wrapper over Wasatch.PY
- added numerous getters
- added BalanceAcquisition
- 2018-07-13 0.9.6
- added Doxyfile
- moved class/method docs to Doxygen format
- 2018-07-11 0.9.5
- added comms_init
- 2018-07-10 0.9.4
- added StatusMessage
- 2018-07-05 0.9.3
- added graph_alternating_pixels
- 2018-06-13 0.9.2
- internally track FileSpectrometer integration time state
- 2018-06-12 0.9.1
- fixed shell.py's "get_config"
- 2018-06-12 0.9.0
- taking spectra from IMX
- 2018-06-08 0.8.9
- detector_ccd/offset_odd stubbed
- fixed command de-dupping
- 2018-06-07 0.8.8
- peak math
- 2018-06-06 0.8.7
- added area_under_peak
- 2018-06-04 0.8.6
- added CommandSettings.py
- added wasatch.applog.MainLogger(enable_stdout=True)
- 2018-06-04 0.8.5
- added shell.py
- 2018-06-01 0.8.4
- added Overrides
- 2018-05-31 0.8.3
- FileSpectrometer mostly working
- 2018-05-29 0.8.2
- initial version of FileSpectrometer
- added JSON support
- 2018-05-17 0.8.1
- ARM debugs
- added set_laser_power_mW
- 2018-05-15 0.8.0
- EEPROM writing works
- 2018-05-14 0.7.4
- fixed get_ccd_gain in StrokerProtocol devices
- 2018-05-09 0.7.3
- raise exception on reading unexpected pixel count
- 2018-05-09 0.7.2
- added support for 2048-pixel FID spectrometers
- 2018-05-08 0.7.1
- updates for ENLIGHTEN 1.3.0
- 2018-04-30 0.7.0
- added SpectrometerSettings
- added SpectrometerState
- added EEPROM
- 2018-04-21 0.6.10
- Reading.session_count
- Reading.laser_power
- robustness
- 2018-04-20 0.6.9
- additional lasersec
- 2018-04-19 0.6.8
- fixed laser ramp rounding
- 2018-04-18 0.6.7
- draft area scan implementation
- 2018-04-17 0.6.6
- parameterized laser_ramp_increments
- 2018-04-16 0.6.5
- updated laser power ramping
- 2018-04-13 0.6.4
- initial laser power ramping
- 2018-04-12 0.6.3
- added get_secondary_adc_calibrated
- reads linearity, ROI from EEPROM
- 2018-04-06 0.6.2
- fixed secondary ADC endian order
- 2018-04-05 0.6.1
- StrokerProtocolDevice fixes
- FPGAOptions fixes to laser_control and laser_type
- added enable_secondary_adc
- added invert_x_axis
- better FID USB logging
- 2018-03-22 0.6.0
- starting multi-spectrometer support
- tagging before attempting switch to MonoLibUsb
- 2018-03-06 0.5.6
- added FPGAOptions
- supported more EEPROM options
- added fpga_reset()
- don't read laser temp unless has_laser
- 2018-03-02 0.5.5
- added "max_usb_interval_ms"
- de-dupe USB commands
- 2018-02-15 0.5.4
- added "min_usb_interval_ms"
- 2018-02-14 0.5.3
- added set_ccd_offset()
- 2018-01-26 0.5.2
- added set_ccd_trigger()
- 2018-01-24 0.5.1
- added get/set_laser_temperature_setpoint_raw()
- 2018-01-22 0.5.0
- initial customer release
- analyzed non-blocking issue on MacOS
- default TEC to min
- 2018-01-22 0.2.2
- tested and documented for Linux
- 2018-01-22 0.2.1
- tested and documented for MacOS
- 2018-01-22 0.2.0
- added demo.py, Windows run instructions
- 2018-01-08 0.1.2
- swapped LSB/MSB on high-gain mode
- 2018-01-05 0.1.1
- fixed laser_enable
- updated NIR high-gain mode
- 2018-01-05 0.1.0
- initial import from ENLIGHTEN
Changelog
- 2024-11-05 1.0.24
- fixed correctBadPixels
- 2024-06-12 1.0.23
- setting PWM 0% disables laser
- update MacOS build to latest Homebrew
- 2024-04-03 1.0.22
- added Spectrometer::badPixelCorrection
- 2024-02-22 1.0.21
- added --delay-us, --throwaways and --tabs in demo
- 2023-06-06 1.0.20
- fixed writing EEPROM on ARM
- fixed Raman Intensity Correction
- 2022-07-15 1.0.19
- fixed nullptr bugs in Linux openAllSpectrometers
- deprecated PID 0x3000
- renamed symlinks in udev rules
- 2021-11-02 1.0.18
- stopped limiting USB reads to 1sec while "polling" for cancellations
- 2021-11-02 1.0.17
- added maxSpectra to Visual C++ Demo GUI
- 2021-11-02 1.0.16
- added --integration-time-ms, --laser to demo.cpp
- 2021-10-13 1.0.15
- added <algorithm> to WasatchVCPPWrapper to resolve VS2017 issue
- 2021-09-09 1.0.14
- added Windows DLL version resource
- added float32 versions of wavelength, wavenumber and getSpectrum functions
- moved demo to float32 versions for testing
- 2021-09-09 1.0.13
- fixed debug log message
- clamped startup temperature to min/max range
- default to startupDetectorTemperatureDegC rather than detTempMin
- 2021-09-08 1.0.12
- Visual Studio Code Analysis cleanup
- moved to enum classes
- 2021-09-08 1.0.11
- added wp\_destroy\_driver
- valgrind reports no leaks on Ubuntu 20
- 2021-08-23 1.0.10
- added demo-eeprom.cpp
- added Proxy::Spectrometer::getWavecalCoeffs
- 2021-08-03 1.0.9
- added FeatureMask.gen15, .cutoffFilterInstalled, .hardwareEvenOdd
- 2021-07-06 1.0.8
- fixed getDetectorTemperatureDegC crashing on Windows when spectrometer unplugged
- 2021-07-06 1.0.7
- fixed return values for most setters to correctly indicate comms success / failure
- 2021-06-17 1.0.6
- fixed return values for setLaserEnable, setIntegrationTimeMS and getHighGainModeEnable
- updated MacOS libusb to latest Homebrew version (1.0.24)
- 2021-04-19 1.0.5
- added README\_MACOS.md
- 2021-02-16 1.0.4
- updated demo-linux with cmd-line args, 'make test'
- fixed uninitialized values
- 2020-08-13 1.0.3
- merged in Linux updates
- 2020-08-11 1.0.2
- cleanup, docs, improved mutex synchronization
- 2020-07-23 1.0.1
- WasatchVCPPLib
- preliminary SW support for FPGA cancelOperation
- disallow reading temperature unless cooling configured
- WasatchVCPPNet
- added temperature monitoring
- fixed GUI display for temperature, offset error values
- 2020-07-22 1.0.0
- added Logger.cs
- added wp\_log\_debug
- added 'len' to wp\_set\_logfile\_path
- changed Proxy::Spectrometer::spectrumBuf to std::vector
- changed Proxy::Driver::spectrometers to std::map
- resolved all known bugs
- tested WasatchVCPPNet with multiple spectrometers in parallel
- all functions listed in WasatchVCPP.h believed working
- 2020-07-21 0.0.11
- WasatchVCPPNet is now successfully testing almost all features
- added getMaxTimeoutMS
- implemented getEEPROMPage
- fixed getDetectorGain\*
- fixed isNan() check in ParseData::toFloat
- fixed setDetectorTECEnable
- null-terminated all exported C strings
- better debugs / return value around Spectrometer::sendCmd
- ISSUE: can't setHighGainMode on InGaAs
- 2020-07-20 0.0.10
- basic support for reentrant thread-safety
- added libusb\_drivers to installers
- added getEEPROMFieldName
- fixed firmwareVersion
- fleshed-out WasatchVCPPNet GUI
- EEPROM works
- acquisition works
- integration time works
- 2020-07-15 0.0.9
- build configurations for Debug/Release on x86/x64
- added "make check\_headers"
- added getEEPROMPage
- added setMaxTimeoutMS
- added cancelOperation
- 2020-07-13 0.0.8
- added getIntegrationTimeMS
- added getLaserEnable
- added getDetectorGain
- added getDetectorGainOdd
- added getDetectorOffset
- added getDetectorOffsetOdd
- added getDetectorTECEnable
- added getDetectorTECSetpointDegC
- added getHighGainModeEnable
- 2020-07-12 0.0.7
- stubbed WasatchVCPPNet
- added sendControlMsg
- added readControlMsg
- 2020-07-12 0.0.6
- added setLogLevel
- supported featureMask.invertXAxis
- supported featureMask.bin2x2
- supported startupIntegrationTimeMS
- supported 2048-pixel FX2
- 2020-07-11 0.0.5
- added getLibraryVersion
- added setDetectorGain
- added setDetectorGainOdd
- added setDetectorOffset
- added setDetectorOffsetOdd
- added setTECEnable
- added setDetectorTECSetpointDegC
- added setHighGainMode
- added getFirmwareVersion
- added getFPGAVersion
- added getDetectorTemperatureRaw
- added getDetectorTemperatureDegC
- 2020-07-10 0.0.4
- added Set Outfile (Demo)
- validated spectra
- merged WasatchVCPPWrapper.h, WasatchVCPPProxy.h and WasatchVCPPProxy.cpp
into ./include/WasatchVCPP.h
- changed WasatchVCPP::Proxy::Driver from static to instance
- lots of docs
- 2020-07-09 0.0.3
- added InputBox (Demo)
- added Logger
- exposed stringified EEPROM through Wrapper
- laser working
- getSpectrum works on WP-785-OEM-ARM, but not microRaman?
- 2020-07-08 0.0.2
- added Util
- added EEPROM
- added ParseData
- added FeatureMask
- added WasatchVCPPWrapper
- added WasatchVCPP::Proxy
- documented architecture
- 2020-07-07 0.0.1
- stubbed Demo
- added Driver
- added Spectrometer
- openAllSpectrometers seems to work
- setIntegrationTimeMS seems to work
- getSpectrum seems to work
Backlog
Tracking for features planned for implementation, and explicit listing of
features considered _and rejected_ for implementation (at least at present).
Feature Matrix
Per the "Design Remit" described in README.md:
Supported
(done)
- see WasatchVCPP.h and README_CHANGELOG.md
Not supported (pending customer use-case)
- Gen 1.5 features
- hardware triggering
- lampEnable
- contStrobe
- fanEnable
- shutterEnable
- ...
- laser power
- modulated (%)
- calibrated (mW)
- ramanMicro
- battery
- laser watchdog
- vertical ROI
- spectral processing
- bad pixel correction
- scan averaging
- boxcar averaging
- dark correction
- transmission / reflectance or absorbance
- Raman Intensity Calibration (ROI / vignetting?)
- peakfinding
- manufacturing features
- write EEPROM
- set TEC setpoint
- set DFU mode
- reset FPGA
- area scan
- rare features
- multi-channel optimizations (e.g., wp\_send\_software\_trigger(specIndex) and wp\_get\_spectrum(..., send\_trigger=1)
- actual frame count
- threshold sensing
- configurable throwaways
- selectable ADC
- read laser TEC temperature (degC) (doesn't work well, regardless)
- advanced driver features
- rigorous thread safety
- internal threading / callbacks / inversion of control
Platforms
- build and test on Raspberry Pi (Linux/ARM)
libusb-win32 deprecation
At some point we may need to move from the legacy libusb-win32 to the newer
libusbk backend on Windows. That should be achievable without too much heartache,
but at the moment libusb-win32 is what our standard .inf files (and ENLIGHTEN)
use, and it still seems to work for all our use-cases, so this has not been
prioritized.
Wasatch.NET Changelog
- 2024-03-19 2.4.16
- fixed issue with multi channel wrapper demo program
- 2024-03-05 2.4.15
- added Spectrometer.isAndor
- fixes to multi channel wrapper timing
- attempted changes for hardware triggering
- 2023-09-26 2.4.14
- updates for 1064XL
- don't enable detector TEC unless degCToDACCoeffs has a non-default calibration
- added Spectrometer.loadFromJSON for XL
- fixed AnyCPU build
- 2023-04-20 2.4.13
- add warning when encountering unsupported / higher EEPROM format
- 2022-12-19 2.4.12
- explicitly default High-Gain Mode true for Hamamatsu InGaAs detectors
- 2022-09-20 2.4.11
- added checkBoxLaserPowerInMW to WinFormDemo
- 2022-08-17 2.4.10
- add temperature caching for Andor spectrometers to prevent long reads
- 2022-07-28 2.4.9
- fixed how temp min/max set for certain spectrometers
- fixed null terminator issue with user text when EEPROM not defaulted to all 0s
- 2022-06-21 2.4.8
- added user control over some Gen1.5 features (in demo as well)
- 2022-06-17 2.4.7
- fix to ensure gain always written (default 1.9 if EEPROM setting is zero)
- 2022-04-26 2.4.6
- added region subformat
- filled in JSON support for more recent EEPROM fields
- some minor updates to Andor camera operation
- added guardrails for SPI EEPROM read and temporarily disabled
- 2022-03-21 2.4.5
- added FeatureMask.SIG\_LASER\_TEC
- added FeatureMask.HAS\_INTERLOCK\_FEEDBACK
- 2021-12-15 2.4.4
- added checks for EEPROM.toJSON()
- 2021-12-08 2.4.3
- implemented offline version of raman correction
- made end of roi for raman correction inclusive
- 2021-12-07 2.4.2
- removed "fast re-initialization" code that was causing issues in production
- added user accessible, automatic raman intensity correction
- 2021-11-18 2.4.1
- fixed fast area scan functionality with 2k cameras
- 2021-11-04 2.4.0
- added basic support for Andor cameras
- 2021-11-01 2.3.37
- added start/stop detector lines (vertical binning opcodes)
- fixed area scan on SiG (disable bin\_2x2 during area scan)
- 2021-10-12 2.3.36
- fixed bugs with EEPROM/JSON
- fixed bug with pixel correction in some spectrometers
- tweaks to how untethered spectros work
- 2021-09-16 2.3.35
- fixed issue preventing multiple spectrometer communication when one is SPI
- 2021-09-08 2.3.34
- updated POLL\_DATA for untethered capture status
- 2021-06-30 2.3.33
- added AnyCPU target to scripts/deploy
- updated Newtonsoft to 12.x
- WinFormDemo tweaks
- 2021-06-30 2.3.32
- patch to long-standing serious small bug with EEPROM JSON/string
- 2021-06-29 2.3.31
- upgraded to EEPROM format 12 and changes around IsInGaAs
- 2021-06-24 2.3.30
- added support for software even/odd gain/offset correction for InGaAs units
- added option for 0 noise TEC readbacks on mocks
- 2021-05-28 2.3.29
- updated docs
- strengthened EEPROM.hasLaserPowerCalibration
- updated WinFormDemo with tabbed controls and laserPowerMW
- 2021-05-18 2.3.28
- added user configurable field to control how long temperatures are cached
- 2021-04-12 2.3.27
- added matchingThreshold, matchingMinPeakHeight, matchingMinRampPixels
- 2021-03-25 2.3.26
- fixing bugs with EEPROMJSON and misalignment between relative intensity order and coefficient array length
- adding new fields to JSON representation of EEPROM
- 2021-03-15 2.3.25
- added subformat 4 (handheld)
- added GET\_STORAGE, ERASE\_STORAGE, SET\_FEEDBACK
- 2021-03-02 2.3.24
- upgraded EEPROM to format 10
- clamp pct in laser mw set, fixing issue with squishiness on edges
- 2021-02-19 2.3.23
- added control over laser power via direct MW set
- added optional fast area scan ability
- fixed bug where buffer too small for some commands on ARM spectrometers
- 2020-12-08 2.3.22
- internal
- 2020-12-08 2.3.21
- internal
- 2020-12-07 2.3.20
- internal
- 2020-11-16 2.3.19
- changed default wavecal values on some spectrometers, which was causing downstream issues
- 2020-09-24 2.3.18
- fixed lingering EEPROM to JSON bug with older EEPROM formats on read
- 2020-09-17 2.3.17
- made some fixes around mock spectrometer and last version
- attempt at fixing SPI issues
- 2020-09-09 2.3.16
- added DomainTest
- added Logger.close
- cleanly close logger in Driver dtor
- added SpectrometerUptime
- updated WinFormDemo to partially support re-initialization of one device without changing other spectrometers' settings
- 2020-09-04 2.3.15
- fixed issue with trying to set laser power in OCT spectrometer
- fixed subtle bug with mock spectrometers with single samples for a source
- 2020-08-31 2.3.14
- added support for WASATCHNET\_LOGGER\_PATHNAME and \_LEVEL environment variables
- updated most Spectrometer setters to ignore duplicate (cached) values
- rate-limit detector temperature readings to 1Hz (cache otherwise)
- added high-level retry loop in Spectrometer.getSpectrum
- added Spectromeer.acquisitionRetryCount
- added Spectromeer.acquireCount
- supported both BackgroundWorkers and Tasks in WinFormDemo
- 2020-08-21 2.3.13
- upped timeout even further
- 2020-08-21 2.3.12
- added getSoucres() function for mock spectrometers
- increased timeouts for Boulder spectrometer
- 2020-08-11 2.3.11
- fixed bug where excitation would overwrite feature mask no matter what
- moved SB library check
- 2020-08-05 2.3.10
- added library check to prevent trying to open boulder spec when library not present
- 2020-08-05 2.3.9
- made all calls to underlying driver in Boulder spectrometers async with timeouts
- 2020-07-30 2.3.8
- added safeguards for loading EEPROM from malformed JSON
- added some async functions and blocking for boulder spectrometers
- 2020-07-29 2.3.7
- added support for OCT frames to mock spectrometer
- made linesPerFrame a generalized attribute
- 2020-07-22 2.3.6
- generalized EEPROM JSON
- added conversions between JSON and EEPROM
- 2020-07-20 2.3.5
- fixed bug with spi spectrometer interaction with downstream software
- 2020-07-15 2.3.4
- fixed bugs with spi spectrometer axis flipping and serial number
- 2020-07-13 2.3.3
- added integration time to mock spectrometer EEPROM
- fixed bug with wavelength generation when loading mock spectrometer EEPROM from JSON
- 2020-07-07 2.3.2
- added option to Mock Spectrometer to bulk load and set EEPROM through JSON file
- 2020-06-26 2.3.1
- reorganized EEPROM read/write differences from switch-like model to subclasses
- 2020-06-25 2.3.0
- added simple mock spectrometer
- 2020-06-10 2.2.11
- added support for writing older EEPROM formats
- fixed bugs with some spectrometer's temp range and initialization
- 2020-06-03 2.2.10
- don't attempt to read temperature on ambient detectors
- added support for 2048-pixel ARM
- added useReadoutMutex
- bulk endpoint cleanup
- simplified 'make clean'
- 2020-05-28 2.2.9
- surfacing firmware for Boulder spectrometers
- downstream bug fixes for Boulder spectrometers
- 2020-05-22 2.2.8
- battery cleanup
- 2020-05-19 2.2.7
- revised how startup temperature works
- 2020-05-18 2.2.6
- fixed EEPROM.write on ARM
- added MultiChannelWrapper.scanAveraging
- 2020-05-18 2.2.5
- quick design change, HOCT no longer auto writes to EEPROM on close
- 2020-05-18 2.2.4
- WasatchNET
- added FeatureMask
- added Spectrometer.scanAveragingIsContinuous
- MultiChannel
- serialized operations to avoid async failures
- add FW to groupBox titles
- 2020-05-12 2.2.3
- added full model compound EEPROM field for bigger model number support
- reorganized some EEPROM fields
- 2020-05-08 2.2.2
- added readback to fix issue with HOCT eeprom write
- added USB reset on HOCT buffer clear errors (may or may not be needed)
- added some attempted error logging and handling for HOCT
- 2020-05-05 2.2.1
- WasatchNET
- added WasatchMath.dll
- tightened EEPROM coeff and range validation
- added Logger.header()
- fixed waitForUsb()
- updated timeout logic for multiple devices, IMX power-up
- added autoTrigger
- exposed sendTrigger()
- updated throwaway logic on changed integration time
- updated TEC default setpoint detector list
- added acquisitionTriggerTimeout (MS and Timestamp)
- MultiChannelWrapper/Demo
- lots of debugs related to triggering bug (walking spectra, multiple triggers)
- added Monte Carlo operation
- randomized integration time
- randomized trigger pulse width
- final tally
- injected double-triggers
- async free-running workers to collect and count double acquisitions
- increased configurability
- trigger width
- integration time
- scan averaging
- arbitrary spectrometer subsets
- refactored checkboxes
- repeatability
- initial throwaway spectrum
- perform all operations in positional order
- IntegrationOptimizer
- GUI widgets
- list failures by channel
- saving
- interpolation
- enhancements
- update groupbox titles
- parallelized integration throwaways
- 2020-04-27 2.2.0
- fixed HOCT excitation
- removed frame counter and "bad pixels" at beginning of lines in HOCT
- added frame "cutting" (removing pixels 1025 - 2048) for HOCT
- added automatic eeprom write to HOCT close
- added wavelength generation to constructor (caused downstream issues)
- 2020-04-17 2.1.21
- WasatchNET
- Spectrometer.reference convenience array
- MultiChannelWrapper/Demo
- added reflectance
- added save
- 2020-04-16 2.1.20
- MultiChannelWrapper: made acquisition trigger synchronous
- restored executable bit on scripts
- 2020-04-02 2.1.19
- internal build for WPSC 1.9.15
- initial support for HOCT units
- 2020-03-24 2.1.18
- added support for EEPROM Format 8
- tweaked wavelength calculation in accordance with up to 5 coeffs
- 2020-03-20 2.1.17
- incorporating 2.1.16 with internal builds
- internal features incorporated
- added support for legacy boards (with libusb drivers)
- added area scan read and logic for legacy boards only
- added attribute and logic for "default EEPROM"
- temporarily changed area scan opcode back to legacy opcode
- 2020-03-19 2.1.16
- added retry logic on spectrum bulk read failure
- 2020-xx-xx 2.1.15
- internal
- 2020-xx-xx 2.1.14
- internal
- 2020-02-18 2.1.13
- unsigned WasatchNET
- rebuilt under Win10 v1909 and VS 2019
- retested from LabVIEW 2018 32-bit
- 2020-02-18 2.1.12
- added IntegrationOptimizer
- added MultiChannelWrapper
- added MultiChannelDemo
- bumped .NET to 4.6.1
- 2020-02-13 2.1.11
- Boulder specs no longer read as having a battery
- added sanity check to prevent bare adafruits being interpreted as spectrometers
- added acquisition locks to all api calls in boulder spec
- added average resolution field (part of format 7) to EEPROM
- 2020-01-30 2.1.10
- added sanity check for intensity correction format
- added support for TEC reading on some units
- changed method for EEPROM read/write for SPI units
- 2020-01-16 2.1.9
- added support for EEPROM format 6 (intensity correction coeffs)
- removed problematic integration time checks for Ocean specs
- 2020-01-08 2.1.8
- added strong assembly names to WasatchNET, LibUsbDotNet and MPSSELight for
LabVIEW NXG
- 2020-01-08 2.1.7
- internal build
- 2020-01-02 2.1.6
- added support for writing EEPROM on SPI spectrometers
- surfaced isSPI flag in Interface
- adjusted and standardized padding for SPI commands
- added some constants for SPI packets
- 2019-12-18 2.1.5
- added flag to indicate SPI spectrometer
- implemented reading and writing detector gain and offset for SPI spectrometers
- implemented reading pixel count and fpga revision for SPI spectrometers
- 2019-12-09 2.1.4
- made adcRaw and selectedADC protected
- added adcLock
- added hasSecondaryADC
- encapsulate internal pushd/popd when loading FTDI drivers
- downleveled Ocean warning
- fixed Ocean boxcar
- narrowed SPI trigger warning
- hide throwaway ADC value
- cache more laser modulation settings
- track laser fired and adc selection events
- 2019-12-09 2.1.3
- disable trigger accessors on non-ARM units
- disable battery accessors if not configured
- disable laser accessors if not configured
- consolidated Spectrometer docs to ISpectrometer
- added Logger.logString() for languages that can't pass empty params
- autoflush logfile
- 2019-11-27 2.1.2
- removed Driver.enableSPI
- added lib/{x86,x64}/FTD2XX.dll, updated post-build events
- 2019-11-26 2.1.1
- added Driver.enableSPI
- 2019-11-26 2.1.0
- added support for SPI spectrometers
- added event raising for alterations to "Virtual" EEPROM
- 2019-11-01 2.0.30
- added proper DLL checking for OceanSpectrometer opening
- 2019-10-29 2.0.29
- added OceanSpectrometer subclass
- virtualized Spectrometer class
- added support for opening, and reading various data from EEPROM of Ocean units
- 2019-10-03 2.0.28
- fixed product config initialization error
- fixed null string write issue
- 2019-08-27 2.0.27
- unsigned DLL (conflicts with COM registration due to unsigned LibUsbDotNet dependency)
- fixed COM declaration for DriverVBAWrapper
- 2019-08-27 2.0.26
- attempting to sign DLL with strong name for Delphi/GAC support
- 2019-08-27 2.0.25
- removed ILogger.getErrors for COM support
- 2019-08-19 2.0.24
- made LaserPowerResolution.1000 the default
- made EEPROM.read() public, so the object can refresh itself from the
spectrometer if local values have been changed in memory
- 2019-07-31 2.0.23
- don't cache laser modulation width/period; check values after setting them
- 2019-07-31 2.0.22
- added LaserPowerResolution.MANUAL
- 2019-07-29 2.0.21
- simplify and speed setLaserPowerPerc
- make HiRes laser power the default in WinFormDemo
- 2019-07-29 2.0.20
- remove fakeBuf from laser pulse width/period on FX2
- 2019-07-29 2.0.19
- added laserPowerResolution
- 2019-07-16 2.0.18
- automatically apply gain and offset from EEPROM if configured
- ignore "odd" gain/offset for non-InGaAs
- 2019-06-14 2.0.17
- changed SET\_MODEL\_CONFIG to 2nd-tier command
- 2019-05-29 2.0.16
- added productConfiguration to EEPROM
- moved min/maxIntegrationTimeMS from ushort to uint
- 2019-05-10 2.0.15
- changed laserWavelengthNM() to writable property
- changed hasLaser to only rely on EEPROM
- changed WinFormDemo's numericUpDownIntegTimeMS.Maximum to 5min
- 2019-04-26 2.0.14
- added (get/set)Detector(Gain/Offset)Odd
- initial test support for areaScanEnable
- disabled laserRampEnable pending redesign
- documentation updates
- 2019-04-01 2.0.13
- added new ENG-0034 Rev 4 fields to EEPROM.read() and .write().
- TODO: add new -odd opcode implementations
- 2019-03-28 2.0.12
- removed enforcement of EEPROM maxIntegrationTimeMS to allow longer at-risk integrations
- added correctBadPixels
- 2019-02-01 2.0.11 (internal)
- updated laser temperature degC formula from datasheet
- 2019-01-22 2.0.10
- fixes for reading/setting laserTemperatureSetpoint
- exposed VID/PID through API
- improved support for floating-point excitation wavelength
- 2019-01-22 2.0.9
- precompute endpoints / bulk sizes
- triggering fixes for LabVIEW
- 2019-01-22 2.0.8
- interlock fix on ARM
- detector offset fix on ARM
- 2019-01-04 2.0.7
- added isSiG
- disable laser and detector temperature readouts on SiG
- disable TEC enable and TEC setpoint unless eeprom.hasCooling
- fixed setIntegrationTime on ARM
- 2019-01-04 2.0.6
- added batteryPercentage and batteryCharging
- secondaryADC cleanup
- added "make cloc"
- 2018-12-19 2.0.5
- updated to latest draft Rev 4 of ENG-0034
- renamed ModelConfig to EEPROM
- extended full EEPROM write privileges
- 2018-12-14 2.0.4
- added min/maxLaserPowerMW, laserPowerCoeffs
- 2018-12-10 2.0.3
- improved logging
- 2018-12-04 2.0.2
- adding support for 2048-pixel detectors
- 2018-09-25 2.0.0
- refactored to better use COM / .NET Properties
- tested ARM triggering
- 2018-08-03 1.0.28
- auto-set integration time limits
- 2018-07-20 1.0.27
- removed Generics from COM API for Delphi
- 2018-05-29 1.0.26
- changed ModelConfig.detectorTempMin/Max from float to short
- 2018-05-28 1.0.25
- added IDriver.logger getter
- 2018-05-27 1.0.24
- added ISpectrometer.getSpectrum()
- 2018-05-25 1.0.23
- added IDriverVBAWrapper.getSingleton()
- 2018-05-25 1.0.22
- More COM Interface classes
- 2018-05-24 1.0.21
- COM annotations
- 2018-05-23 1.0.20
- split RegisterDLL.bat into RegisterDLL32 and RegisterDLL64
- 2018-04-24 1.0.19
- changed setCCDTriggerSource to Int40
- 2018-03-30 1.0.18
- added APITest
- improved ARM support for READ\_COMPILATION\_OPTIONS, ACQUIRE\_CCD, others
- 2018-03-22 1.0.17
- snapshot before testing with MonoLibUsb
- 2018-03-13 1.0.16
- ARM testing
- 2018-03-06 1.0.15
- internal test build
- 2018-01-10 1.0.14
- added detector TEC setpoint control to WinFormDemo
- fixed dependency path in Setup64
- 2017-11-28 1.0.13 set initial detector TEC setpoint;
- added setHighGainModeEnabled
- 2017-11-28 1.0.12
- updated laser temperature readout
- 2017-10-26 1.0.11
- added setLaserPowerPercentage()
- 2017-10-25 1.0.10
- added setDFUMode() for ARM reflash
- 2017-10-25 1.0.9
- fixed spectrum-save issue
- 2017-10-24 1.0.8
- corrected detector temperature computation
- resolved some multi-spectrometer syncronization issues
- 2017-10-23 1.0.7
- tweaks after multi-spectrometer testing with 1064-L
- 2017-10-22 1.0.6
- added cmd-line args to WinFormDemo
- 2017-10-11 1.0.5
- fixed temperature read-out in degrees
- 2017-10-11 1.0.4
- fixed and restored ModelConfig.write
- 2017-10-11 1.0.3
- disabled ModelConfig.write due to corruption
- 2017-10-10 1.0.2
- separate 32/64-bit installers
- 2017-09-29 1.0.1
- initial GitHub release (alpha)