- 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
- WasatchNET
- 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
- WasatchNET
- 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
- WasatchNET
- 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)