Python application driver for Wasatch Photonics spectrometers
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 123]
 CQueueHandlerCopied verbatim from PlumberJack (see above)
 CCommandSettingsThis class encapsulates information about the "ControlObject" settings supported by WasatchDevice hardware classes (FID and SP)
 CControlObjectA class holding setting-value pairs sent from ENLIGHTEN to the spectrometer
 CDeviceFinderUSBGenerates a list of DeviceID objects for all connected USB Wasatch Photonics spectrometers
 CDeviceIDRepresents a persistent unique identifier for a spectrometer device (USB or otherwise) which should remain valid for connected devices in spite of hotplug events around them
 CEEPROMThis class encapsulates the post-read parsing, pre-write marshalling, and current state of the 8-page EEPROM used to store non-volatile configuration data in Wasatch Photonics spectrometers
 CFeatureIdentificationDeviceThis is the basic implementation of our FeatureIdentificationDevice (FID) spectrometer USB API as defined in ENG-0001
 CFileSpectrometerInterface to a remote "virtual spectrometer" with which ENLIGHTEN exchanges commands and spectra via a watch-directory
 CFPGAOptionsEncapsulate the set of options used to compile the FPGA code in the firmware of the connected spectrometer
 CHardwareInfoThis class captures aspects of the hardware which normally ENLIGHTEN can't / shouldn't see, which isn't otherwise reliably inferred from EEPROM, ModelInfo etc
 COverridesA mechanism to override the normal FID commands sent to a USB device with arbitrary binary data stored in an external JSON configuration file
 CReadingA single set of data read from a device
 CSimulateMaterialRead recorded spectrum from file, respond with noise on the baseline read from file
 CSpectrometerSettingsEncapsulate a spectrometer's state, including compiled firmware (FPGAOptions), non-volatile configuration (EEPROM) and volatile state (SpectrometerState)
 CSpectrometerStateVolatile attributes (must persist here for multi-spectrometers)
 CStatusMessageAn outbound analog to ControlObject
 CFileBusSupport a "virtual spectrometer" implemented via a "watch folder" containing a file named "spectrometer.json" (see FileSpectrometer for format), allowing ENLIGHTEN to send commands "to" the remote spectrometer (by writing command files to the directory), and reading spectra "from" the remote spectrometer (by reading spectrum files from the directory)
 CWasatchBusThe different bus classes don't use inheritance and don't follow a common ABC or interface, but each should have an update() method, and each should have a 'device_ids' array
 CWasatchDeviceA WasatchDevice encapsulates and wraps a Wasatch spectrometer in a blocking interface
 CWasatchDeviceWrapperWrap WasatchDevice in a non-blocking interface run in a separate process, using multiprocess.pipes to exchange data (SpectrometerSettings, Readings and StatusMessages) for multiprocessing-safe device communications and acquisition under Windows and Qt