OceanDirectLighthouse 3.1.3
OceanDirect Lighthouse C++/C API
LighthouseAPI.h
Go to the documentation of this file.
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"
53
54namespace 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
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
313
319
325
330 virtual LHFlashAPI* Flash();
331
346
356
369
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
423
432
441
455
463
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
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
685
698 virtual void setScansToAverage(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_scan_averaging_t scansToAverage);
699
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
744
751 virtual void setAcquisitionDelay(lh_device_id_t deviceID, lh_error_code_t *errorCode, lh_microseconds_t microseconds);
752
760
770
778
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:
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 LHSerialPortAPI * SerialPort()
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 LHSensorAPI * SensorInformation()
virtual void setMulticastMsgResponseReadDelay(lh_milliseconds_t milliseconds)
virtual LHGainModeAPI * GainMode()
virtual LHThermoelectricAPI * Thermoelectric()
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 size_t getErrorMessage(lh_error_code_t errorCode, char message[], size_t messageLength)
virtual LHNetworkConfigurationAPI * Network()
virtual lh_microseconds_t getIntegrationTimeIncrement(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual LHShutterAPI * Shutter()
virtual size_t getNonlinearityCorrectedSpectrum(lh_device_id_t deviceID, lh_error_code_t *errorCode, float nonlinearityCorrectedSpectrum[], size_t nonlinearityCorrectedSpectrumLength)
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)
static LighthouseAPI * getInstance()
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 LHAutoNullingAPI * AutoNulling()
virtual lh_microseconds_t getAcquisitionDelayIncrement(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual LHStrobeAPI * Strobe()
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 LHUserStringAPI * UserString()
virtual size_t getDeviceIDs(lh_device_id_t ids[], size_t idsLength)
virtual lh_device_id_t addNetworkDevices(const char ipAddressStr[], const char deviceTypeStr[], lh_error_code_t *errorCode)
virtual void openDevice(lh_device_id_t deviceID, lh_error_code_t *errorCode)
virtual void setMulticastMsgResponseReadRetry(size_t retryCount)
virtual LHLampAPI * Lamp()
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 LHGpioAPI * Gpio()
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 void getAPIRCNumber(uint32_t &candidate)
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 LHLedAPI * Led()
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 LHDeviceInformationAPI * DeviceInformation()
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 LHNonlinearityAPI * Nonlinearity()
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)
lh_trigger_mode_t
Definition lhdefs.h:83
uint32_t lh_microseconds_t
Definition lhdefs.h:52
uint32_t lh_milliseconds_t
Definition lhdefs.h:55
int32_t lh_error_code_t
Definition lhdefs.h:47
lh_enable_state_t
Definition lhdefs.h:68
uint32_t lh_pixel_intensity_t
Definition lhdefs.h:101
uint16_t lh_boxcar_width_t
Definition lhdefs.h:121
uint32_t lh_scan_averaging_t
Definition lhdefs.h:117
uint32_t lh_device_id_t
Definition lhdefs.h:43
This is the API for controlling the autonulling functionality of a device.
Definition LighthouseAPI.h:54
Definition lhdefs.h:88