OceanDirect  1.30.1-rc.4
OceanDirect C++/C API
SpectrometerFeatureAdapter.h
1 /*****************************************************
2  * @file SpectrometerFeatureAdapter.h
3  * @date February 2018
4  * @author Ocean Optics, Inc.
5  *
6  * This is a wrapper that allows
7  * access to OceanDirect OOISpectrometerFeature instances.
8  */
9  /************************************************************************
10  *
11  * OCEAN INSIGHT CONFIDENTIAL
12  * __________________
13  *
14  * [2018] - [2020] Ocean Insight Incorporated
15  * All Rights Reserved.
16  *
17  * NOTICE: All information contained herein is, and remains
18  * the property of Ocean Insight Incorporated and its suppliers,
19  * if any. The intellectual and technical concepts contained
20  * herein are proprietary to Ocean Insight Incorporated
21  * and its suppliers and may be covered by U.S. and Foreign Patents,
22  * patents in process, and are protected by trade secret or copyright law.
23  * Dissemination of this information or reproduction of this material
24  * is strictly forbidden unless prior written permission is obtained
25  * from Ocean Insight Incorporated.
26  *
27  **************************************************************************/
28 
29 #ifndef OCEANDIRECT_SPECTROMETER_FEATURE_ADAPTER_H
30 #define OCEANDIRECT_SPECTROMETER_FEATURE_ADAPTER_H
31 
32 #include "api/adapters/FeatureAdapterTemplate.h"
33 #include "common/public/SpectrumWithMetadata.h"
34 #include "common/buses/Bus.h"
35 #include "common/protocols/Protocol.h"
36 #include "vendors/OceanOptics/features/pixel/PixelFeatureInterface.h"
37 #include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeatureInterface.h"
38 
39 namespace oceandirect {
40  namespace api {
41 
42  class SpectrometerFeatureAdapter : public FeatureAdapterTemplate<OOISpectrometerFeatureInterface> {
43  public:
45  OOISpectrometerFeatureInterface *spec,
46  const FeatureFamily &f,
47  Protocol *p, Bus *b, unsigned short instanceIndex);
48  virtual ~SpectrometerFeatureAdapter();
49 
50  /* Spectrometer commands */
51  int getUnformattedSpectrum(int *errorCode, unsigned char *buffer, int bufferLength);
52  int getFormattedSpectrum(int *errorCode, double* buffer, int bufferLength);
53  int getFormattedSpectrumWithMetaData(int *error_code, SpectrumWithMetadata *buffer, int bufferLength);
54 
55  void setStoredDarkSpectrum(int* errorCode, double* darkSpectrum, int darkSpectrumLength);
56  int getStoredDarkSpectrum(int* errorCode, double* darkSpectrum, int darkSpectrumLength);
57  int getDarkCorrectedSpectrum(int* errorCode, double* darkSpectrum, int darkSpectrumLength,
58  double* darkCorrectedSpectrum, int darkCorrectedSpectrumLength);
59  int darkCorrectSpectrum(int* errorCode, double* illuminatedSpectrum, int illuminatedSpectrumLength,
60  double* darkCorrectedSpectrum, int darkCorrectedSpectrumLength);
61  int getDarkCorrectedSpectrum(int* errorCode, double* darkCorrectedSpectrum, int darkCorrectedSpectrumLength);
62  int darkCorrectSpectrum(int* errorCode, double* darkSpectrum, int darkSpectrumLength, double* illuminatedSpectrum,
63  int illuminatedSpectrumLength, double* darkCorrectedSpectrum, int darkCorrectedSpectrumLength);
64 
65  int getNonlinearityCorrectedSpectrum(int* errorCode, double* darkSpectrum, int darkSpectrumLength,
66  double* nonlinearityCoeffs, int nonlinearityCoeffsLength,
67  double* nonlinearityCorrectedSpectrum, int nonlinearityCorrectedSpectrumLength);
68  int nonlinearityCorrectSpectrum(int* errorCode, double* illuminatedSpectrum,
69  int illuminatedSpectrumLength, double* nonlinearityCoeffs, int nonlinearityCoeffsLength,
70  double* nonlinearityCorrectedSpectrum, int nonlinearityCorrectedSpectrumLength);
71  int getNonlinearityCorrectedSpectrum(int* errorCode, double* nonlinearityCoeffs, int nonlinearityCoeffsLength,
72  double* nonlinearityCorrectedSpectrum, int nonlinearityCorrectedSpectrumLength);
73  int nonlinearityCorrectSpectrum(int* errorCode, double* darkSpectrum, int darkSpectrumLength, double* illuminatedSpectrum,
74  int illuminatedSpectrumLength, double* nonlinearityCoeffs, int nonlinearityCoeffsLength, double* nonlinearityCorrectedSpectrum,
75  int nonlinearityCorrectedSpectrumLength);
76 
77  int getUnformattedSpectrumLength(int *errorCode);
78  int getFormattedSpectrumLength(int *errorCode);
79  void setTriggerMode(int *errorCode, int mode);
80  int getTriggerMode(int *errorCode);
81  unsigned long getAcquisitionDelayIncrementMicroseconds(int* errorCode);
82  unsigned long getAcquisitionDelayMaximumMicroseconds(int* errorCode);
83  unsigned long getAcquisitionDelayMinimumMicroseconds(int* errorCode);
84  unsigned long getAcquisitionDelayMicroseconds(int* errorCode);
85  void setAcquisitionDelayMicroseconds(int* errorCode, const unsigned long delay_usec);
86 
87 
88  int getWavelengths(int *errorCode, double *wavelengths, int length);
89  int getWavelengthCoefficients(int *errorCode, double *wavelengths, int length);
90  void setWavelengthCoefficients(int *errorCode, double *wavelengths, int length);
91  int getElectricDarkPixelCount(int *errorCode, PixelFeatureInterface *pixelFeatureInterface);
92  int getElectricDarkPixelIndices(int *errorCode, PixelFeatureInterface *pixelFeatureInterface, int *indices, int length);
93  void setIntegrationTimeMicros(int *errorCode, unsigned long integrationTimeMicros);
94  unsigned long getIntegrationTimeMicros(int *errorCode);
95  long getMinimumIntegrationTimeMicros(int *errorCode);
96  long getMinimumAveragingIntegrationTimeMicros(int* errorCode);
97  long getMaximumIntegrationTimeMicros(int *errorCode);
98  double getMaximumIntensity(int *errorCode);
99 
100  void setSpectraSummationCount(int* errorCode, std::uint32_t spectraCount);
101  int getSpectraSummationCount(int* errorCode);
102  };
103 
104  }
105 }
106 
107 #endif
Definition: FeatureAdapterTemplate.h:44
Definition: SpectrometerFeatureAdapter.h:42
This is an interface to Advance features of OceanDirect that allow access to less common controls....
Definition: AcquisitionDelayFeatureAdapter.h:35