主采集逻辑修改中,添加了部分写文件实现

This commit is contained in:
2021-12-02 18:07:29 +08:00
parent 95da780693
commit efbcde38d7
403 changed files with 26857 additions and 77 deletions

View File

@ -0,0 +1,52 @@
/***************************************************//**
* @file ApexSpectrometerFeature.h
* @date January 2013
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef APEXSPECTROMETERFEATURE_H
#define APEXSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/GainAdjustedSpectrometerFeature.h"
namespace seabreeze {
class ApexSpectrometerFeature : public GainAdjustedSpectrometerFeature {
public:
ApexSpectrometerFeature(
ProgrammableSaturationFeature *saturationFeature);
virtual ~ApexSpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* APEXSPECTROMETERFEATURE_H */

View File

@ -0,0 +1,56 @@
/***************************************************//**
* @file BlazeSpectrometerFeature.h
* @date February 2016
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2016, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef BLAZESPECTROMETERFEATURE_H
#define BLAZESPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/GainAdjustedSpectrometerFeature.h"
namespace seabreeze {
class BlazeSpectrometerFeature : public GainAdjustedSpectrometerFeature {
public:
BlazeSpectrometerFeature(
ProgrammableSaturationFeature *saturationFeature);
virtual ~BlazeSpectrometerFeature();
/* The Blaze gets wavelengths a bit differently */
virtual std::vector<double> *getWavelengths(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* BLAZESPECTROMETERFEATURE_H */

View File

@ -0,0 +1,53 @@
/***************************************************//**
* @file FlameNIRSpectrometerFeature.h
* @date Apr 2016
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2016, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef FLAMENIRSPECTROMETERFEATURE_H
#define FLAMENIRSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/GainAdjustedSpectrometerFeature.h"
namespace seabreeze {
class FlameNIRSpectrometerFeature
: public GainAdjustedSpectrometerFeature {
public:
FlameNIRSpectrometerFeature(
ProgrammableSaturationFeature *saturationFeature);
virtual ~FlameNIRSpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif

View File

@ -0,0 +1,56 @@
/***************************************************//**
* @file GainAdjustedSpectrometerFeature.h
* @date July 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef GAINADJUSTEDSPECTROMETERFEATURE_H
#define GAINADJUSTEDSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeature.h"
#include "vendors/OceanOptics/features/spectrometer/ProgrammableSaturationFeature.h"
namespace seabreeze {
class GainAdjustedSpectrometerFeature : public OOISpectrometerFeature {
public:
GainAdjustedSpectrometerFeature(
ProgrammableSaturationFeature *saturationFeature);
virtual ~GainAdjustedSpectrometerFeature();
virtual unsigned int getSaturationLevel();
/* Inherited from Feature */
virtual bool initialize(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
protected:
ProgrammableSaturationFeature *saturation;
};
}
#endif /* GAINADJUSTEDSPECTROMETERFEATURE_H */

View File

@ -0,0 +1,51 @@
/***************************************************//**
* @file HR2000PlusSpectrometerFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef HR2000PLUSSPECTROMETERFEATURE_H
#define HR2000PLUSSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeature.h"
namespace seabreeze {
class HR2000PlusSpectrometerFeature : public OOISpectrometerFeature {
public:
HR2000PlusSpectrometerFeature();
virtual ~HR2000PlusSpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* HR2000PLUSSPECTROMETERFEATURE_H */

View File

@ -0,0 +1,51 @@
/***************************************************//**
* @file HR2000SpectrometerFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef HR2000SPECTROMETERFEATURE_H
#define HR2000SPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeature.h"
namespace seabreeze {
class HR2000SpectrometerFeature : public OOISpectrometerFeature {
public:
HR2000SpectrometerFeature();
virtual ~HR2000SpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* HR2000SPECTROMETERFEATURE_H */

View File

@ -0,0 +1,51 @@
/***************************************************//**
* @file HR4000SpectrometerFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef HR4000SPECTROMETERFEATURE_H
#define HR4000SPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeature.h"
namespace seabreeze {
class HR4000SpectrometerFeature : public OOISpectrometerFeature {
public:
HR4000SpectrometerFeature();
virtual ~HR4000SpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* HR4000SPECTROMETERFEATURE_H */

View File

@ -0,0 +1,52 @@
/***************************************************//**
* @file JazSpectrometerFeature.h
* @date November 2011
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef JAZSPECTROMETERFEATURE_H
#define JAZSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/GainAdjustedSpectrometerFeature.h"
namespace seabreeze {
class JazSpectrometerFeature
: public GainAdjustedSpectrometerFeature {
public:
JazSpectrometerFeature(ProgrammableSaturationFeature *saturationFeature);
virtual ~JazSpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* JAZSPECTROMETERFEATURE_H */

View File

@ -0,0 +1,53 @@
/***************************************************//**
* @file Maya2000ProSpectrometerFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef MAYA2000PROSPECTROMETERFEATURE_H
#define MAYA2000PROSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/GainAdjustedSpectrometerFeature.h"
namespace seabreeze {
class Maya2000ProSpectrometerFeature
: public GainAdjustedSpectrometerFeature {
public:
Maya2000ProSpectrometerFeature(
ProgrammableSaturationFeature *saturationFeature);
virtual ~Maya2000ProSpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* MAYA2000PROSPECTROMETERFEATURE_H */

View File

@ -0,0 +1,51 @@
/***************************************************//**
* @file Maya2000SpectrometerFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef MAYA2000SPECTROMETERFEATURE_H
#define MAYA2000SPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeature.h"
namespace seabreeze {
class Maya2000SpectrometerFeature : public OOISpectrometerFeature {
public:
Maya2000SpectrometerFeature();
virtual ~Maya2000SpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* MAYA2000SPECTROMETERFEATURE_H */

View File

@ -0,0 +1,52 @@
/***************************************************//**
* @file MayaLSLSpectrometerFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef MAYALSLSPECTROMETERFEATURE_H
#define MAYALSLSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/GainAdjustedSpectrometerFeature.h"
namespace seabreeze {
class MayaLSLSpectrometerFeature : public GainAdjustedSpectrometerFeature {
public:
MayaLSLSpectrometerFeature(
ProgrammableSaturationFeature *saturationFeature);
virtual ~MayaLSLSpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* MAYALSLSPECTROMETERFEATURE_H */

View File

@ -0,0 +1,46 @@
/***************************************************//**
* @file NIRQuest256SpectrometerFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef NIRQUEST256SPECTROMETERFEATURE_H
#define NIRQUEST256SPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/NIRQuestSpectrometerFeature.h"
namespace seabreeze {
class NIRQuest256SpectrometerFeature : public NIRQuestSpectrometerFeature {
public:
NIRQuest256SpectrometerFeature(
ProgrammableSaturationFeature *saturationFeature);
virtual ~NIRQuest256SpectrometerFeature();
};
}
#endif /* NIRQUEST256SPECTROMETERFEATURE_H */

View File

@ -0,0 +1,46 @@
/***************************************************//**
* @file NIRQuest512SpectrometerFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef NIRQUEST512SPECTROMETERFEATURE_H
#define NIRQUEST512SPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/NIRQuestSpectrometerFeature.h"
namespace seabreeze {
class NIRQuest512SpectrometerFeature : public NIRQuestSpectrometerFeature {
public:
NIRQuest512SpectrometerFeature(
ProgrammableSaturationFeature *saturationFeature);
virtual ~NIRQuest512SpectrometerFeature();
};
}
#endif /* NIRQUEST512SPECTROMETERFEATURE_H */

View File

@ -0,0 +1,54 @@
/***************************************************//**
* @file NIRQuestSpectrometerFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef NIRQUESTSPECTROMETERFEATURE_H
#define NIRQUESTSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/GainAdjustedSpectrometerFeature.h"
namespace seabreeze {
class NIRQuestSpectrometerFeature : public GainAdjustedSpectrometerFeature {
public:
NIRQuestSpectrometerFeature(
ProgrammableSaturationFeature *saturationFeature);
virtual ~NIRQuestSpectrometerFeature();
protected:
void setupExchanges(int readoutLength);
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* NIRQUESTSPECTROMETERFEATURE_H */

View File

@ -0,0 +1,111 @@
/***************************************************//**
* @file OOISpectrometerFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef OOISPECTROMETERFEATURE_H
#define OOISPECTROMETERFEATURE_H
#include <vector>
#include "common/features/FeatureImpl.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/IllegalArgumentException.h"
#include "vendors/OceanOptics/features/spectrometer/SpectrometerTriggerMode.h"
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeatureInterface.h"
namespace seabreeze {
class OOISpectrometerFeature : public FeatureImpl,
public OOISpectrometerFeatureInterface {
public:
OOISpectrometerFeature();
virtual ~OOISpectrometerFeature();
/* Request and read out a spectrum formatted into intensity (A/D counts) */
virtual std::vector<double> *getSpectrum(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Request and read out the raw spectrum data stream */
virtual std::vector<byte> *getUnformattedSpectrum(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Request and read out the wavelengths in nanometers as a vector of doubles */
virtual std::vector<double> *getWavelengths(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Read the raw spectrum data stream. No request is made first. */
virtual std::vector<byte> *readUnformattedSpectrum(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Set the integration time of the spectrometer */
virtual void setIntegrationTimeMicros(const Protocol &protocol,
const Bus &bus, unsigned long time_usec)
throw (FeatureException, IllegalArgumentException);
/* Request that the spectrometer make a spectrum available for
* reading (e.g. with readUnformattedSpectrum())
*/
virtual void writeRequestSpectrum(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Setting the external trigger mode for the spectrometer */
virtual void setTriggerMode(const Protocol &protocol,
const Bus &bus, SpectrometerTriggerMode &mode) throw (FeatureException);
virtual std::vector<SpectrometerTriggerMode *> getTriggerModes() const;
virtual std::vector<int> getElectricDarkPixelIndices() const;
virtual long getIntegrationTimeMinimum() const;
virtual long getIntegrationTimeMaximum() const;
virtual long getIntegrationTimeIncrement() const;
virtual int getNumberOfPixels() const;
virtual int getMaximumIntensity() const;
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
protected:
/* Detector details */
int numberOfPixels;
int maxIntensity;
/* Integration time parameters (measured in microseconds) */
long integrationTimeMinimum;
long integrationTimeMaximum;
long integrationTimeBase;
long integrationTimeIncrement;
std::vector<SpectrometerTriggerMode *> triggerModes;
std::vector<int> electricDarkPixelIndices;
};
}
#endif /* OOISPECTROMETERFEATURE_H */

View File

@ -0,0 +1,95 @@
/***************************************************//**
* @file OOISpectrometerFeatureInterface.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef OOISPECTROMETERFEATUREINTERFACE_H
#define OOISPECTROMETERFEATUREINTERFACE_H
#include <vector>
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/IllegalArgumentException.h"
#include "vendors/OceanOptics/features/spectrometer/SpectrometerTriggerMode.h"
namespace seabreeze {
class OOISpectrometerFeatureInterface {
public:
virtual ~OOISpectrometerFeatureInterface() = 0;
/* Request and read out a spectrum formatted into intensity (A/D counts) */
virtual std::vector<double> *getSpectrum(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
/* Request and read out the raw spectrum data stream */
virtual std::vector<byte> *getUnformattedSpectrum(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
/* Request and read out the wavelengths in nanometers as a vector of doubles */
virtual std::vector<double> *getWavelengths(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
/* Read the raw spectrum data stream. No request is made first. */
virtual std::vector<byte> *readUnformattedSpectrum(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
/* Set the integration time of the spectrometer */
virtual void setIntegrationTimeMicros(const Protocol &protocol,
const Bus &bus, unsigned long time_usec)
throw (FeatureException, IllegalArgumentException) = 0;
/* Request that the spectrometer make a spectrum available for
* reading (e.g. with readUnformattedSpectrum())
*/
virtual void writeRequestSpectrum(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
/* Setting the external trigger mode for the spectrometer */
virtual void setTriggerMode(const Protocol &protocol,
const Bus &bus, SpectrometerTriggerMode &mode) throw (FeatureException) = 0;
virtual std::vector<SpectrometerTriggerMode *> getTriggerModes() const = 0;
virtual std::vector<int> getElectricDarkPixelIndices() const = 0;
virtual long getIntegrationTimeMinimum() const = 0;
virtual long getIntegrationTimeMaximum() const = 0;
virtual long getIntegrationTimeIncrement() const = 0;
virtual int getNumberOfPixels() const = 0;
virtual int getMaximumIntensity() const = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline OOISpectrometerFeatureInterface::~OOISpectrometerFeatureInterface() {}
}
#endif /* OOISPECTROMETERFEATUREINTERFACE_H */

View File

@ -0,0 +1,60 @@
/***************************************************//**
* @file ProgrammableSaturationFeature.h
* @date March 2016
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2016, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef PROGRAMMABLESATURATIONFEATURE_H
#define PROGRAMMABLESATURATIONFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/ProgrammableSaturationFeatureInterface.h"
#include "common/features/Feature.h"
#include <vector>
namespace seabreeze {
/* ProgrammableSaturationFeature might be implemented by extending another
* Feature, so this needs to use virtual inheritance to solve the
* diamond problem.
*/
class ProgrammableSaturationFeature : public virtual Feature,
public ProgrammableSaturationFeatureInterface {
public:
ProgrammableSaturationFeature();
virtual ~ProgrammableSaturationFeature();
virtual unsigned int getSaturation() throw (FeatureException) = 0;
/* Overriding from Feature */
virtual bool initialize(const Protocol &protocol, const Bus &bus)
throw (FeatureException) = 0;
virtual FeatureFamily getFeatureFamily() = 0;
};
} /* end namespace seabreeze */
#endif /* PROGRAMMABLESATURATIONFEATURE_H */

View File

@ -0,0 +1,66 @@
/***************************************************//**
* @file ProgrammableSaturationFeatureBase.h
* @date March 2016
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2016, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef PROGRAMMABLESATURATIONFEATUREBASE_H
#define PROGRAMMABLESATURATIONFEATUREBASE_H
#include "vendors/OceanOptics/features/spectrometer/ProgrammableSaturationFeature.h"
namespace seabreeze {
class ProgrammableSaturationFeatureBase
: public ProgrammableSaturationFeature {
public:
ProgrammableSaturationFeatureBase();
virtual ~ProgrammableSaturationFeatureBase();
/* Inherited from ProgrammableSaturationFeature */
virtual unsigned int getSaturation() throw (FeatureException);
/* Overriding from Feature */
virtual bool initialize(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
virtual FeatureFamily getFeatureFamily();
protected:
/* Derived classes must implement this in whatever way is appropriate
* to get the saturation level for the device.
*/
virtual unsigned int getSaturation(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
private:
unsigned int saturation;
bool valid;
};
} /* end namespace seabreeze */
#endif /* PROGRAMMABLESATURATIONFEATUREBASE_H */

View File

@ -0,0 +1,61 @@
/***************************************************//**
* @file ProgrammableSaturationFeatureImpl.h
* @date March 2016
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2016, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef PROGRAMMABLESATURATIONFEATUREIMPL_H
#define PROGRAMMABLESATURATIONFEATUREIMPL_H
#include "vendors/OceanOptics/features/spectrometer/ProgrammableSaturationFeatureBase.h"
#include "common/features/FeatureImpl.h"
#include "common/protocols/ProtocolHelper.h"
#include <vector>
namespace seabreeze {
/* This class is intended for devices that have a clean protocol
* interface for reading out the saturation level directly.
*/
class ProgrammableSaturationFeatureImpl
: public ProgrammableSaturationFeatureBase, FeatureImpl {
public:
ProgrammableSaturationFeatureImpl(std::vector<ProtocolHelper *> helpers);
virtual ~ProgrammableSaturationFeatureImpl();
virtual bool initialize(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
virtual FeatureFamily getFeatureFamily();
protected:
/* Inherited from ProgrammableSaturationFeatureBase */
virtual unsigned int getSaturation(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
};
} /* end namespace seabreeze */
#endif /* PROGRAMMABLESATURATIONFEATUREIMPL_H */

View File

@ -0,0 +1,53 @@
/***************************************************//**
* @file ProgrammableSaturationFeatureInterface.h
* @date March 2016
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2016, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef PROGRAMMABLESATURATIONFEATUREINTERFACE_H
#define PROGRAMMABLESATURATIONFEATUREINTERFACE_H
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class ProgrammableSaturationFeatureInterface {
public:
virtual ~ProgrammableSaturationFeatureInterface() = 0;
/*
* Get the detector saturation level from the device.
*/
virtual unsigned int getSaturation() throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline ProgrammableSaturationFeatureInterface::~ProgrammableSaturationFeatureInterface() {}
} /* end namespace seabreeze */
#endif /* PROGRAMMABLESATURATIONFEATUREINTERFACE_H */

View File

@ -0,0 +1,57 @@
/***************************************************//**
* @file QE65000SpectrometerFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef QE65000SPECTROMETERFEATURE_H
#define QE65000SPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeature.h"
namespace seabreeze {
class QE65000SpectrometerFeature : public OOISpectrometerFeature {
public:
QE65000SpectrometerFeature();
virtual ~QE65000SpectrometerFeature();
/* Overridden from OOISpectrometerFeature because the QE65000
* wavelength calibration is done differently than in most others
*/
virtual std::vector<double> *getWavelengths(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* QE65000SPECTROMETERFEATURE_H */

View File

@ -0,0 +1,55 @@
/***************************************************//**
* @file QEProSpectrometerFeature.h
* @date June 2013
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef QEPROSPECTROMETERFEATURE_H
#define QEPROSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeature.h"
namespace seabreeze {
class QEProSpectrometerFeature : public OOISpectrometerFeature {
public:
QEProSpectrometerFeature();
virtual ~QEProSpectrometerFeature();
/* The QE-PRO gets wavelengths a bit differently */
virtual std::vector<double> *getWavelengths(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* QEPROSPECTROMETERFEATURE_H */

View File

@ -0,0 +1,74 @@
/***************************************************//**
* @file STSSpectrometerFeature.h
* @date May 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef STSSPECTROMETERFEATURE_H
#define STSSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/temperature/TemperatureFeature.h"
#include "vendors/OceanOptics/protocols/obp/impls/OBPTemperatureProtocol.h"
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeature.h"
#define STS_TEMPERATURE_DETECTOR_INDEX 0
#define STS_TEMPERATURE_RESERVED_INDEX 1
#define STS_TEMPERATURE_CPU_INDEX 2
namespace seabreeze {
namespace oceanBinaryProtocol {
class OBPReadRawSpectrumExchange;
class OBPReadSpectrumExchange;
}
class STSSpectrometerFeature : public OOISpectrometerFeature {
public:
STSSpectrometerFeature();
virtual ~STSSpectrometerFeature();
void setPixelBinningFactor(unsigned char binningFactor);
/* The STS gets wavelengths a bit differently */
virtual std::vector<double> *getWavelengths(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
private:
oceanBinaryProtocol::OBPReadRawSpectrumExchange *unformattedSpectrum;
oceanBinaryProtocol::OBPReadSpectrumExchange *formattedSpectrum;
unsigned char binningFactor;
static const unsigned int unbinnedNumberOfPixels = 1024;
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* STSSPECTROMETERFEATURE_H */

View File

@ -0,0 +1,62 @@
/***************************************************//**
* @file SparkSpectrometerFeature.h
* @date May 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef SPARKSPECTROMETERFEATURE_H
#define SPARKSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/temperature/TemperatureFeature.h"
#include "vendors/OceanOptics/protocols/obp/impls/OBPTemperatureProtocol.h"
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeature.h"
#define SPARK_TEMPERATURE_DETECTOR_INDEX 0
#define SPARK_TEMPERATURE_RESERVED_INDEX 1
#define SPARK_TEMPERATURE_CPU_INDEX 2
namespace seabreeze {
class SparkSpectrometerFeature : public OOISpectrometerFeature {
public:
SparkSpectrometerFeature();
virtual ~SparkSpectrometerFeature();
/* The Spark gets wavelengths a bit differently */
virtual std::vector<double> *getWavelengths(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* SPARKSPECTROMETERFEATURE_H */

View File

@ -0,0 +1,70 @@
/***************************************************//**
* @file SpectrometerTriggerMode.h
* @date August 2009
* @author Ocean Optics, Inc.
*
* This file describes the different kinds of trigger modes
* that spectrometers may support.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef SPECTROMETER_TRIGGER_MODE_H
#define SPECTROMETER_TRIGGER_MODE_H
#define SPECTROMETER_TRIGGER_MODE_NORMAL 0x00
#define SPECTROMETER_TRIGGER_MODE_SOFTWARE 0x01
#define SPECTROMETER_TRIGGER_MODE_LEVEL 0x01
#define SPECTROMETER_TRIGGER_MODE_SYNCHRONIZATION 0x02
#define SPECTROMETER_TRIGGER_MODE_HARDWARE 0x03
#define SPECTROMETER_TRIGGER_MODE_EDGE 0x03
#define SPECTROMETER_TRIGGER_MODE_SINGLE_SHOT 0x04
#define SPECTROMETER_TRIGGER_MODE_SELF_NORMAL 0x80
#define SPECTROMETER_TRIGGER_MODE_SELF_SOFTWARE 0x81
#define SPECTROMETER_TRIGGER_MODE_SELF_SYNCHRONIZATION 0x82
#define SPECTROMETER_TRIGGER_MODE_SELF_HARDWARE 0x83
#define SPECTROMETER_TRIGGER_MODE_OBP_NORMAL 0x00
#define SPECTROMETER_TRIGGER_MODE_OBP_EXTERNAL 0x01
#define SPECTROMETER_TRIGGER_MODE_OBP_INTERNAL 0x02
namespace seabreeze {
class SpectrometerTriggerMode {
public:
SpectrometerTriggerMode(int mode);
virtual ~SpectrometerTriggerMode();
int getTriggerMode();
/* Overriding equality operator so that modes can be compared. */
bool operator==(const SpectrometerTriggerMode &that);
private:
int triggerMode;
};
}
#endif /* SPECTROMETER_TRIGGER_MODE_H */

View File

@ -0,0 +1,53 @@
/***************************************************//**
* @file USB2000PlusSpectrometerFeature.h
* @date May 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef USB2000PLUSSPECTROMETERFEATURE_H
#define USB2000PLUSSPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/GainAdjustedSpectrometerFeature.h"
namespace seabreeze {
class USB2000PlusSpectrometerFeature
: public GainAdjustedSpectrometerFeature {
public:
USB2000PlusSpectrometerFeature(
ProgrammableSaturationFeature *saturationFeature);
virtual ~USB2000PlusSpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* USB2000PLUSSPECTROMETERFEATURE_H */

View File

@ -0,0 +1,51 @@
/***************************************************//**
* @file USB2000SpectrometerFeature.h
* @date May 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef USB2000SPECTROMETERFEATURE_H
#define USB2000SPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeature.h"
namespace seabreeze {
class USB2000SpectrometerFeature : public OOISpectrometerFeature {
public:
USB2000SpectrometerFeature();
virtual ~USB2000SpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* USB2000SPECTROMETERFEATURE_H */

View File

@ -0,0 +1,52 @@
/***************************************************//**
* @file USB4000SpectrometerFeature.h
* @date May 2009
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef USB4000SPECTROMETERFEATURE_H
#define USB4000SPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/GainAdjustedSpectrometerFeature.h"
namespace seabreeze {
class USB4000SpectrometerFeature : public GainAdjustedSpectrometerFeature {
public:
USB4000SpectrometerFeature(
ProgrammableSaturationFeature *saturationFeature);
virtual ~USB4000SpectrometerFeature();
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* USB4000SPECTROMETERFEATURE_H */

View File

@ -0,0 +1,55 @@
/***************************************************//**
* @file VentanaSpectrometerFeature.h
* @date January 2013
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2014, Ocean Optics Inc
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject
* to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*******************************************************/
#ifndef VENTANASPECTROMETERFEATURE_H
#define VENTANASPECTROMETERFEATURE_H
#include "vendors/OceanOptics/features/spectrometer/OOISpectrometerFeature.h"
namespace seabreeze {
class VentanaSpectrometerFeature : public OOISpectrometerFeature {
public:
VentanaSpectrometerFeature();
virtual ~VentanaSpectrometerFeature();
/* The Ventana gets wavelengths a bit differently */
virtual std::vector<double> *getWavelengths(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
private:
static const long INTEGRATION_TIME_MINIMUM;
static const long INTEGRATION_TIME_MAXIMUM;
static const long INTEGRATION_TIME_INCREMENT;
static const long INTEGRATION_TIME_BASE;
};
}
#endif /* VENTANASPECTROMETERFEATURE_H */