OceanDirectLighthouse  3.1.1
OceanDirect Lighthouse C++/C API
LighthouseAPI.h
1 #ifndef LIGHTHOUSE_API_H
2 #define LIGHTHOUSE_API_H
3 
4 /*******************************************************
5  * @file LighthouseAPI.h
6  * @date November 2023
7  * @author Ocean Insight, Inc.
8  *
9  * This is an interface that allows the user to connect to devices over USB and other buses.
10  * This interface provides the most commonly used functions and accessors to further
11  * "advanced" functionality that may be optional on some models of spectrometer e.g.
12  * Thermoelectric Cooling.
13  *
14  */
15  /************************************************************************
16  *
17  * OCEAN INSIGHT CONFIDENTIAL
18  * __________________
19  *
20  * [2018] - [2023] Ocean Insight Incorporated
21  * All Rights Reserved.
22  *
23  * NOTICE: All information contained herein is, and remains
24  * the property of Ocean Insight Incorporated and its suppliers,
25  * if any. The intellectual and technical concepts contained
26  * herein are proprietary to Ocean Insight Incorporated
27  * and its suppliers and may be covered by U.S. and Foreign Patents,
28  * patents in process, and are protected by trade secret or copyright law.
29  * Dissemination of this information or reproduction of this material
30  * is strictly forbidden unless prior written permission is obtained
31  * from Ocean Insight Incorporated.
32  *
33  **************************************************************************/
34 
35 #ifdef __cplusplus
36 #include "lighthouse/api/LighthouseDllDecl.h"
37 #include "lighthouse/api/lhdefs.h"
38 #include "lighthouse/api/advanced/LHAutoNullingAPI.h"
39 #include "lighthouse/api/advanced/LHDeviceInformationAPI.h"
40 #include "lighthouse/api/advanced/LHSensorAPI.h"
41 #include "lighthouse/api/advanced/LHStrobeAPI.h"
42 #include "lighthouse/api/advanced/LHGpioAPI.h"
43 #include "lighthouse/api/advanced/LHLampAPI.h"
44 #include "lighthouse/api/advanced/LHLedAPI.h"
45 #include "lighthouse/api/advanced/LHThermoelectricAPI.h"
46 #include "lighthouse/api/advanced/LHNetworkConfigurationAPI.h"
47 #include "lighthouse/api/advanced/LHNonlinearityAPI.h"
48 #include "lighthouse/api/advanced/LHSerialPortAPI.h"
49 #include "lighthouse/api/advanced/LHShutterAPI.h"
50 #include "lighthouse/api/advanced/LHUserStringAPI.h"
51 #include "lighthouse/api/advanced/LHGainModeAPI.h"
52 #include "lighthouse/api/advanced/LHFlashAPI.h"
53 
54 namespace oceandirect {
55  namespace api {
56  class LighthouseImpl;
57 
58  class LIGHTHOUSE_DLL_DECL LighthouseAPI {
59  public:
60 
67 
74  static void shutdown();
75 
82  virtual void getAPIVersionNumber(uint32_t &major, uint32_t &minor, uint32_t &point);
83  virtual void getAPIRCNumber(uint32_t &candidate);
84 
90  virtual void setMulticastMsgSendRetry(size_t retryCount);
91 
97  virtual void setMulticastMsgResponseReadRetry(size_t retryCount);
98 
104  virtual void setMulticastMsgResponseReadDelay(lh_milliseconds_t milliseconds);
105 
118  virtual size_t probeAllDevices();
119 
130  virtual size_t probeUsbDevices();
131 
139  virtual size_t probeNetworkDevices();
140 
152  virtual lh_device_id_t addNetworkDevices(const char ipAddressStr[], const char deviceTypeStr[], lh_error_code_t* errorCode);
153 
161  virtual size_t getNumberOfDeviceIDs();
162 
176  virtual size_t getDeviceIDs(lh_device_id_t ids[], size_t idsLength);
177 
190  virtual size_t getNetworkDeviceIDs(lh_device_id_t ids[], size_t idsLength);
191 
204  virtual void openDevice(lh_device_id_t deviceID, lh_error_code_t *errorCode);
205 
214  virtual void closeDevice(lh_device_id_t deviceID, lh_error_code_t *errorCode);
215 
225  virtual size_t getDeviceType(lh_device_id_t deviceID, lh_error_code_t *errorCode, char buffer[], size_t bufferLength);
226 
234 
242 
249 
255  virtual LHStrobeAPI* Strobe();
256 
262  virtual LHGpioAPI* Gpio();
263 
268  virtual LHLampAPI* Lamp();
269 
275  virtual LHLedAPI* Led();
276 
286 
293 
300 
307 
312  virtual LHShutterAPI* Shutter();
313 
319 
325 
330  virtual LHFlashAPI* Flash();
331 
345  virtual void setNonLinearityCorrectionState(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_enable_state_t state);
346 
355  virtual lh_enable_state_t getNonLinearityCorrectionState(lh_device_id_t deviceID, lh_error_code_t *errorCode);
356 
368  virtual void setElectricDarkCorrectionState(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_enable_state_t state);
369 
378  virtual lh_enable_state_t getElectricDarkCorrectionState(lh_device_id_t deviceID, lh_error_code_t *errorCode);
379 
389  virtual size_t getWavelengths(lh_device_id_t deviceID, lh_error_code_t *errorCode, float wavelengths[], size_t wavelengthsLength);
390 
400  virtual size_t getWavelengthCoefficients(lh_device_id_t deviceID, lh_error_code_t *errorCode, float coeff[], size_t coeffLength);
401 
402 
414  virtual void setIntegrationTime(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_microseconds_t microseconds);
415 
422  virtual lh_microseconds_t getIntegrationTime(lh_device_id_t deviceID, lh_error_code_t *errorCode);
423 
431  virtual lh_microseconds_t getIntegrationTimeIncrement(lh_device_id_t deviceID, lh_error_code_t *errorCode);
432 
440  virtual lh_microseconds_t getMinimumIntegrationTime(lh_device_id_t deviceID, lh_error_code_t *errorCode);
441 
454  virtual lh_microseconds_t getMinimumAveragingIntegrationTime(lh_device_id_t deviceID, lh_error_code_t *errorCode);
455 
462  virtual lh_microseconds_t getMaximumIntegrationTime(lh_device_id_t deviceID, lh_error_code_t *errorCode);
463 
470  virtual lh_pixel_intensity_t getMaximumIntensity(lh_device_id_t deviceID, lh_error_code_t *errorCode);
471 
478  virtual size_t getSpectrumLength(lh_device_id_t deviceID, lh_error_code_t *errorCode);
479 
488  virtual size_t getSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, float buffer[], size_t bufferLength);
489 
500  virtual size_t getSpectrumWithMetadata(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_spectrum_with_metadata_t &spectrum);
501 
510  virtual void setStoredDarkSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float darkSpectrum[], size_t darkSpectrumLength);
511 
521  virtual size_t getStoredDarkSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, float darkSpectrum[], size_t darkSpectrumLength);
522 
533  virtual size_t getDarkCorrectedSpectrum(lh_device_id_t deviceID, lh_error_code_t* errorCode, float darkCorrectedSpectrum[], size_t darkCorrectedSpectrumLength);
534 
548  virtual size_t getDarkCorrectedSpectrum(lh_device_id_t deviceID, lh_error_code_t* errorCode, const float darkSpectrum[], size_t darkSpectrumLength,
549  float darkCorrectedSpectrum[], size_t darkCorrectedSpectrumLength);
550 
565  virtual size_t darkCorrectSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float illuminatedSpectrum[], size_t illuminatedSpectrumLength,
566  float darkCorrectedSpectrum[], size_t darkCorrectedSpectrumLength);
567 
585  virtual size_t darkCorrectSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float darkSpectrum[], size_t darkSpectrumLength,
586  const float illuminatedSpectrum[], size_t illuminatedSpectrumLength, float darkCorrectedSpectrum[], size_t darkCorrectedSpectrumLength);
587 
600  virtual size_t getNonlinearityCorrectedSpectrum(lh_device_id_t deviceID, lh_error_code_t* errorCode, float nonlinearityCorrectedSpectrum[],
601  size_t nonlinearityCorrectedSpectrumLength);
602 
618  virtual size_t getNonlinearityCorrectedSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float darkSpectrum[],
619  size_t darkSpectrumLength, float nonlinearityCorrectedSpectrum[], size_t nonlinearityCorrectedSpectrumLength);
620 
638  virtual size_t nonlinearityCorrectSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float illuminatedSpectrum[],
639  size_t illuminatedSpectrumLength, float nonlinearityCorrectedSpectrum[], size_t nonlinearityCorrectedSpectrumLength);
640 
659  virtual size_t nonlinearityCorrectSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float darkSpectrum[],
660  size_t darkSpectrumLength, const float illuminatedSpectrum[], size_t illuminatedSpectrumLength,
661  float nonlinearityCorrectedSpectrum[], size_t nonlinearityCorrectedSpectrumLength);
662 
674  void boxcarCorrectSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float illuminatedSpectrum[],
675  size_t illuminatedSpectrumLength, lh_boxcar_width_t boxcarWidth,
676  float boxcarCorrectedSpectrum[], size_t boxcarCorrectedSpectrumLength);
677 
684  virtual lh_scan_averaging_t getScansToAverage(lh_device_id_t deviceID, lh_error_code_t *errorCode);
685 
698  virtual void setScansToAverage(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_scan_averaging_t scansToAverage);
699 
712  virtual lh_boxcar_width_t getBoxcarWidth(lh_device_id_t deviceID, lh_error_code_t *errorCode);
713 
727  virtual void setBoxcarWidth(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_boxcar_width_t boxcarWidth);
728 
735  virtual void setTriggerMode(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_trigger_mode_t mode);
736 
743  virtual lh_trigger_mode_t getTriggerMode(lh_device_id_t deviceID, lh_error_code_t *errorCode);
744 
751  virtual void setAcquisitionDelay(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_microseconds_t microseconds);
752 
759  virtual lh_microseconds_t getAcquisitionDelay(lh_device_id_t deviceID, lh_error_code_t *errorCode);
760 
769  virtual lh_microseconds_t getAcquisitionDelayIncrement(lh_device_id_t deviceID, lh_error_code_t *errorCode);
770 
777  virtual lh_microseconds_t getAcquisitionDelayMaximum(lh_device_id_t deviceID, lh_error_code_t *errorCode);
778 
785  virtual lh_microseconds_t getAcquisitionDelayMinimum(lh_device_id_t deviceID, lh_error_code_t *errorCode);
786 
795  virtual size_t getErrorMessage(lh_error_code_t errorCode, char message[], size_t messageLength);
796 
803  virtual size_t getErrorMessageLength(lh_error_code_t errorCode);
804 
805  virtual ~LighthouseAPI();
806 
807  friend class InstrumentedLighthouseAPI;
808  friend class NetLighthouseAdmin;
809  private:
810  LighthouseAPI();
811  LighthouseAPI(LighthouseImpl* impl);
812  // LighthouseAPI is a singleton so disallow the following...
813  LighthouseAPI(const LighthouseAPI&) = delete;
814  LighthouseAPI(LighthouseAPI&&) = delete;
815  LighthouseAPI& operator=(const LighthouseAPI&) = delete;
816  LighthouseAPI& operator=(LighthouseAPI&&) = delete;
817 
818  static LighthouseAPI *instance;
819 
820  LighthouseImpl* pimpl;
821 
822  // private log file and methods for the instrumentation
823  static LighthouseAPI* getInstance(const char log[]);
824 
825  static void shutdownInstrumentation();
826  size_t probeInstrumentedDevices();
827  };
828  }
829 }
830 #endif /* __cplusplus */
831 #endif /* LIGHTHOUSE_API_H */
Definition: LHAutoNullingAPI.h:41
Definition: LHDeviceInformationAPI.h:40
Definition: LHFlashAPI.h:39
Definition: LHGainModeAPI.h:39
Definition: LHGpioAPI.h:39
Definition: LHLampAPI.h:39
Definition: LHLedAPI.h:39
Definition: LHNetworkConfigurationAPI.h:43
Definition: LHNonlinearityAPI.h:38
Definition: LHSensorAPI.h:40
Definition: LHSerialPortAPI.h:39
Definition: LHShutterAPI.h:39
Definition: LHStrobeAPI.h:41
Definition: LHThermoelectricAPI.h:39
Definition: LHUserStringAPI.h:39
Definition: LighthouseAPI.h:58
virtual size_t nonlinearityCorrectSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float darkSpectrum[], size_t darkSpectrumLength, const float illuminatedSpectrum[], size_t illuminatedSpectrumLength, float nonlinearityCorrectedSpectrum[], size_t nonlinearityCorrectedSpectrumLength)
virtual size_t getErrorMessageLength(lh_error_code_t errorCode)
virtual size_t getDarkCorrectedSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, float darkCorrectedSpectrum[], size_t darkCorrectedSpectrumLength)
virtual lh_trigger_mode_t getTriggerMode(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual size_t darkCorrectSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float darkSpectrum[], size_t darkSpectrumLength, const float illuminatedSpectrum[], size_t illuminatedSpectrumLength, float darkCorrectedSpectrum[], size_t darkCorrectedSpectrumLength)
virtual void setScansToAverage(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_scan_averaging_t scansToAverage)
virtual LHLampAPI * Lamp()
virtual void setMulticastMsgResponseReadDelay(lh_milliseconds_t milliseconds)
virtual LHSerialPortAPI * SerialPort()
virtual void setStoredDarkSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float darkSpectrum[], size_t darkSpectrumLength)
virtual size_t getNonlinearityCorrectedSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float darkSpectrum[], size_t darkSpectrumLength, float nonlinearityCorrectedSpectrum[], size_t nonlinearityCorrectedSpectrumLength)
virtual size_t getSpectrumWithMetadata(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_spectrum_with_metadata_t &spectrum)
virtual LHGpioAPI * Gpio()
virtual size_t getErrorMessage(lh_error_code_t errorCode, char message[], size_t messageLength)
virtual lh_microseconds_t getIntegrationTimeIncrement(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual LHNetworkConfigurationAPI * Network()
virtual size_t getNonlinearityCorrectedSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, float nonlinearityCorrectedSpectrum[], size_t nonlinearityCorrectedSpectrumLength)
virtual LHNonlinearityAPI * Nonlinearity()
virtual lh_scan_averaging_t getScansToAverage(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual lh_microseconds_t getMaximumIntegrationTime(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual LHStrobeAPI * Strobe()
virtual void setNonLinearityCorrectionState(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_enable_state_t state)
virtual lh_microseconds_t getMinimumIntegrationTime(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual lh_boxcar_width_t getBoxcarWidth(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual void setMulticastMsgSendRetry(size_t retryCount)
virtual size_t getNumberOfDeviceIDs()
virtual size_t probeAllDevices()
virtual lh_microseconds_t getAcquisitionDelayIncrement(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual LHUserStringAPI * UserString()
virtual size_t probeNetworkDevices()
virtual lh_enable_state_t getElectricDarkCorrectionState(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual size_t getDarkCorrectedSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float darkSpectrum[], size_t darkSpectrumLength, float darkCorrectedSpectrum[], size_t darkCorrectedSpectrumLength)
virtual void setAcquisitionDelay(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_microseconds_t microseconds)
virtual size_t getDeviceIDs(lh_device_id_t ids[], size_t idsLength)
virtual LHGainModeAPI * GainMode()
virtual lh_device_id_t addNetworkDevices(const char ipAddressStr[], const char deviceTypeStr[], lh_error_code_t *errorCode)
virtual LHLedAPI * Led()
virtual LHAutoNullingAPI * AutoNulling()
virtual void openDevice(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual LHThermoelectricAPI * Thermoelectric()
virtual void setMulticastMsgResponseReadRetry(size_t retryCount)
virtual LHFlashAPI * Flash()
virtual size_t probeUsbDevices()
virtual size_t darkCorrectSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float illuminatedSpectrum[], size_t illuminatedSpectrumLength, float darkCorrectedSpectrum[], size_t darkCorrectedSpectrumLength)
virtual size_t getSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, float buffer[], size_t bufferLength)
virtual lh_pixel_intensity_t getMaximumIntensity(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual void setElectricDarkCorrectionState(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_enable_state_t state)
virtual LHSensorAPI * SensorInformation()
virtual LHDeviceInformationAPI * DeviceInformation()
static LighthouseAPI * getInstance()
virtual void setIntegrationTime(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_microseconds_t microseconds)
virtual lh_microseconds_t getAcquisitionDelayMaximum(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual void getAPIVersionNumber(uint32_t &major, uint32_t &minor, uint32_t &point)
virtual lh_enable_state_t getNonLinearityCorrectionState(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual size_t getStoredDarkSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, float darkSpectrum[], size_t darkSpectrumLength)
virtual lh_microseconds_t getMinimumAveragingIntegrationTime(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual lh_microseconds_t getIntegrationTime(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual size_t getDeviceType(lh_device_id_t deviceID, lh_error_code_t *errorCode, char buffer[], size_t bufferLength)
virtual size_t getSpectrumLength(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual void setBoxcarWidth(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_boxcar_width_t boxcarWidth)
virtual lh_microseconds_t getAcquisitionDelayMinimum(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual size_t nonlinearityCorrectSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float illuminatedSpectrum[], size_t illuminatedSpectrumLength, float nonlinearityCorrectedSpectrum[], size_t nonlinearityCorrectedSpectrumLength)
virtual size_t getNetworkDeviceIDs(lh_device_id_t ids[], size_t idsLength)
virtual size_t getWavelengthCoefficients(lh_device_id_t deviceID, lh_error_code_t *errorCode, float coeff[], size_t coeffLength)
virtual void setTriggerMode(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_trigger_mode_t mode)
virtual lh_microseconds_t getAcquisitionDelay(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual size_t getWavelengths(lh_device_id_t deviceID, lh_error_code_t *errorCode, float wavelengths[], size_t wavelengthsLength)
void boxcarCorrectSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, const float illuminatedSpectrum[], size_t illuminatedSpectrumLength, lh_boxcar_width_t boxcarWidth, float boxcarCorrectedSpectrum[], size_t boxcarCorrectedSpectrumLength)
virtual void closeDevice(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual LHShutterAPI * Shutter()
This is the API for controlling the autonulling functionality of a device.
Definition: LighthouseAPI.h:54