1.air部署,细节待修改

This commit is contained in:
2022-04-15 13:51:42 +08:00
parent 3b74dfc608
commit 8c6be81f94
440 changed files with 7 additions and 883 deletions

View File

@ -0,0 +1,81 @@
/***************************************************//**
* @file AcquisitionDelayFeature.h
* @date November 2015
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 ACQUISITION_DELAY_FEATURE_H
#define ACQUISITION_DELAY_FEATURE_H
#include "common/features/FeatureImpl.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
#include "vendors/OceanOptics/features/acquisition_delay/AcquisitionDelayFeatureInterface.h"
namespace seabreeze {
class AcquisitionDelayFeature : public FeatureImpl,
public AcquisitionDelayFeatureInterface {
public:
AcquisitionDelayFeature(std::vector<ProtocolHelper *> helpers);
virtual ~AcquisitionDelayFeature();
virtual void setAcquisitionDelayMicroseconds(
const Protocol &protocol, const Bus &bus,
const unsigned long delayMicros)
throw (FeatureException);
virtual unsigned long getAcquisitionDelayMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
/* Methods that remain pure virtual since the protocol interface does
* not necessarily provide clean methods for these. A derived
* class will be necessary to specify the limits.
*/
virtual unsigned long getAcquisitionDelayIncrementMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException) = 0;
virtual unsigned long getAcquisitionDelayMaximumMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException) = 0;
virtual unsigned long getAcquisitionDelayMinimumMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException) = 0;
protected:
unsigned long lastAcquisitionDelayMicroseconds;
bool lastAcquisitionDelayValid;
};
} /* end namespace seabreeze */
#endif /* ACQUISITION_DELAY_FEATURE_H */

View File

@ -0,0 +1,67 @@
/***************************************************//**
* @file AcquisitionDelayFeatureInterface.h
* @date November 2015
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 SEABREEZE_ACQUISITION_DELAY_FEATURE_INTERFACE_H
#define SEABREEZE_ACQUISITION_DELAY_FEATURE_INTERFACE_H
#include "common/features/Feature.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class AcquisitionDelayFeatureInterface {
public:
virtual ~AcquisitionDelayFeatureInterface();
virtual unsigned long getAcquisitionDelayIncrementMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException) = 0;
virtual unsigned long getAcquisitionDelayMaximumMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException) = 0;
virtual unsigned long getAcquisitionDelayMinimumMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException) = 0;
virtual unsigned long getAcquisitionDelayMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException) = 0;
virtual void setAcquisitionDelayMicroseconds(
const Protocol &Protocol, const Bus &bus,
const unsigned long delayMicros)
throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline AcquisitionDelayFeatureInterface::~AcquisitionDelayFeatureInterface() {}
} /* end namespace */
#endif /* SEABREEZE_ACQUISITION_DELAY_FEATURE_INTERFACE_H */

View File

@ -0,0 +1,79 @@
/***************************************************//**
* @file AcquisitionDelayFeature_FPGA.h
* @date November 2015
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the acquisition
* delay feature that is controlled by the FPGA in many
* devices. This is likely to be derived from to
* override the device limits.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 ACQUISITION_DELAY_FEATURE_FPGA_H
#define ACQUISITION_DELAY_FEATURE_FPGA_H
#include "vendors/OceanOptics/features/acquisition_delay/AcquisitionDelayFeature.h"
#include <vector>
namespace seabreeze {
class AcquisitionDelayFeature_FPGA : public AcquisitionDelayFeature {
public:
AcquisitionDelayFeature_FPGA(std::vector<ProtocolHelper *> helpers);
virtual ~AcquisitionDelayFeature_FPGA();
/* Inherited from AcquisitionDelayFeature */
virtual void setAcquisitionDelayMicroseconds(
const Protocol &protocol, const Bus &bus,
const unsigned long delayMicros)
throw (FeatureException);
virtual unsigned long getAcquisitionDelayIncrementMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException);
virtual unsigned long getAcquisitionDelayMaximumMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException);
virtual unsigned long getAcquisitionDelayMinimumMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException);
protected:
virtual unsigned long countsToMicroseconds(unsigned long counts);
virtual unsigned long microsecondsToCounts(unsigned long microseconds);
unsigned char acquisitionDelayRegister;
unsigned long countsPerMicrosecond;
unsigned long minimumDelayCounts;
unsigned long maximumDelayCounts;
unsigned long incrementMicroseconds;
};
} /* end namespace seabreeze */
#endif /* ACQUISITION_DELAY_FEATURE_FPGA_H */

View File

@ -0,0 +1,60 @@
/***************************************************//**
* @file STSAcquisitionDelayFeature.h
* @date November 2015
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the acquisition
* delay feature in the STS.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 STSACQUISITIONDELAYFEATURE_H
#define STSACQUISITIONDELAYFEATURE_H
#include "vendors/OceanOptics/features/acquisition_delay/AcquisitionDelayFeature.h"
namespace seabreeze {
class STSAcquisitionDelayFeature : public AcquisitionDelayFeature {
public:
STSAcquisitionDelayFeature(std::vector<ProtocolHelper *> helpers);
virtual ~STSAcquisitionDelayFeature();
/* Inherited from AcquisitionDelayFeature */
virtual unsigned long getAcquisitionDelayIncrementMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException);
virtual unsigned long getAcquisitionDelayMaximumMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException);
virtual unsigned long getAcquisitionDelayMinimumMicroseconds(
const Protocol &protocol, const Bus &bus)
throw (FeatureException);
};
} /* end namespace seabreeze */
#endif /* STSACQUISITIONDELAYFEATURE_H */

View File

@ -0,0 +1,59 @@
/***************************************************//**
* @file ContinuousStrobeFeature.h
* @date October 2012
* @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 SEABREEZE_CONTINUOUS_STROBE_FEATURE_H
#define SEABREEZE_CONTINUOUS_STROBE_FEATURE_H
#include "common/features/FeatureImpl.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
#include "vendors/OceanOptics/features/continuous_strobe/ContinuousStrobeFeatureInterface.h"
namespace seabreeze {
class ContinuousStrobeFeature : public FeatureImpl,
public ContinuousStrobeFeatureInterface {
public:
ContinuousStrobeFeature(std::vector<ProtocolHelper *> helpers);
virtual ~ContinuousStrobeFeature();
virtual void setContinuousStrobePeriodMicroseconds(const Protocol &protocol,
const Bus &bus, unsigned short strobe_id, unsigned long period_usec)
throw (FeatureException);
virtual void setContinuousStrobeEnable(const Protocol &protocol,
const Bus &bus, unsigned short strobe_id, bool enable)
throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* SEABREEZE_CONTINUOUS_STROBE_FEATURE_H */

View File

@ -0,0 +1,55 @@
/***************************************************//**
* @file ContinuousStrobeFeatureInterface.h
* @date October 2012
* @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 SEABREEZE_CONTINUOUS_STROBE_FEATURE_INTERFACE_H
#define SEABREEZE_CONTINUOUS_STROBE_FEATURE_INTERFACE_H
#include "common/features/Feature.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class ContinuousStrobeFeatureInterface {
public:
virtual ~ContinuousStrobeFeatureInterface() = 0;
virtual void setContinuousStrobePeriodMicroseconds(const Protocol &protocol,
const Bus &bus, unsigned short strobe_id, unsigned long period_usec)
throw (FeatureException) = 0;
virtual void setContinuousStrobeEnable(const Protocol &protocol,
const Bus &bus, unsigned short strobe_id, bool enable)
throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline ContinuousStrobeFeatureInterface::~ContinuousStrobeFeatureInterface() {}
}
#endif

View File

@ -0,0 +1,59 @@
/***************************************************//**
* @file ContinuousStrobeFeature_FPGA.h
* @date February 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 SEABREEZE_CONTINUOUS_STROBE_FEATURE_FPGA_H
#define SEABREEZE_CONTINUOUS_STROBE_FEATURE_FPGA_H
#include "common/features/FeatureImpl.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
#include "vendors/OceanOptics/features/continuous_strobe/ContinuousStrobeFeatureInterface.h"
namespace seabreeze {
class ContinuousStrobeFeature_FPGA : public FeatureImpl,
public ContinuousStrobeFeatureInterface {
public:
ContinuousStrobeFeature_FPGA();
virtual ~ContinuousStrobeFeature_FPGA();
virtual void setContinuousStrobePeriodMicroseconds(const Protocol &protocol,
const Bus &bus, unsigned short strobe_id, unsigned long period_usec)
throw (FeatureException);
virtual void setContinuousStrobeEnable(const Protocol &protocol,
const Bus &bus, unsigned short strobe_id, bool enable)
throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* SEABREEZE_CONTINUOUS_STROBE_FEATURE_FPGA_H */

View File

@ -0,0 +1,80 @@
/***************************************************//**
* @file DataBufferFeature.h
* @date October 2015
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 DATABUFFERFEATUREBASE_H
#define DATABUFFERFEATUREBASE_H
#include <vector>
#include "vendors/OceanOptics/features/data_buffer/DataBufferFeatureInterface.h"
#include "common/features/FeatureImpl.h"
namespace seabreeze {
class DataBufferFeatureBase : public FeatureImpl, public DataBufferFeatureInterface {
public:
DataBufferFeatureBase();
virtual ~DataBufferFeatureBase();
virtual DataBufferCount_t getNumberOfBuffers();
virtual void clearBuffer(const Protocol &protocol, const Bus &bus,
const DataBufferIndex_t bufferIndex)
throw (FeatureException);
virtual DataBufferElementCount_t getNumberOfElements(
const Protocol &protocol, const Bus &bus,
const DataBufferIndex_t bufferIndex)
throw (FeatureException);
virtual DataBufferElementCount_t getBufferCapacity(
const Protocol &protocol,
const Bus &bus, const DataBufferIndex_t bufferIndex)
throw (FeatureException);
virtual DataBufferElementCount_t getBufferCapacityMinimum(
const Protocol &protocol, const Bus &bus,
const DataBufferIndex_t bufferIndex)
throw (FeatureException);
virtual DataBufferElementCount_t getBufferCapacityMaximum(
const Protocol &protocol, const Bus &bus,
const DataBufferIndex_t bufferIndex)
throw (FeatureException);
virtual void setBufferCapacity(const Protocol &protocol, const Bus &bus,
const DataBufferIndex_t bufferIndex,
const DataBufferElementCount_t bufferSize)
throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
protected:
DataBufferIndex_t numberOfBuffers;
};
} /* end namespace */
#endif /* DATABUFFERFEATUREBASE_H */

View File

@ -0,0 +1,75 @@
/***************************************************//**
* @file DataBufferFeatureInterface.h
* @date October 2015
* @author Ocean Optics, Inc.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 DATABUFFERFEATUREINTERFACE_H
#define DATABUFFERFEATUREINTERFACE_H
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
typedef unsigned char DataBufferIndex_t;
typedef DataBufferIndex_t DataBufferCount_t;
typedef unsigned long DataBufferElementCount_t;
class DataBufferFeatureInterface {
public:
virtual ~DataBufferFeatureInterface() = 0;
virtual DataBufferCount_t getNumberOfBuffers() = 0;
virtual void clearBuffer(const Protocol &protocol, const Bus &bus,
const DataBufferIndex_t bufferIndex) throw (FeatureException) = 0;
virtual DataBufferElementCount_t getBufferCapacity(const Protocol &protocol,
const Bus &bus, const DataBufferIndex_t bufferIndex)
throw (FeatureException) = 0;
virtual DataBufferElementCount_t getBufferCapacityMaximum(
const Protocol &protocol, const Bus &bus,
const DataBufferIndex_t bufferIndex) throw (FeatureException) = 0;
virtual DataBufferElementCount_t getBufferCapacityMinimum(
const Protocol &protocol, const Bus &bus,
const DataBufferIndex_t bufferIndex) throw (FeatureException) = 0;
virtual DataBufferElementCount_t getNumberOfElements(
const Protocol &protocol, const Bus &bus,
const DataBufferIndex_t bufferIndex) throw (FeatureException) = 0;
virtual void setBufferCapacity(const Protocol &protocol, const Bus &bus,
const DataBufferIndex_t bufferIndex,
const DataBufferElementCount_t bufferSize)
throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline DataBufferFeatureInterface::~DataBufferFeatureInterface() {}
} /* end namespace */
#endif /* DATABUFFERFEATUREINTERFACE_H */

View File

@ -0,0 +1,49 @@
/***************************************************//**
* @file QEProDataBufferFeature.h
* @date October 2015
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the spectral
* data buffer in the QE-PRO.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 QEPRODATABUFFERFEATURE_H
#define QEPRODATABUFFERFEATURE_H
#include "vendors/OceanOptics/features/data_buffer/DataBufferFeatureBase.h"
namespace seabreeze {
class QEProDataBufferFeature : public DataBufferFeatureBase {
public:
QEProDataBufferFeature();
virtual ~QEProDataBufferFeature();
};
} /* end namespace */
#endif /* QEPRODATABUFFERFEATURE_H */

View File

@ -0,0 +1,62 @@
/***************************************************//**
* @file EEPROMSlotFeature.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 EEPROMSLOTFEATURE_H
#define EEPROMSLOTFEATURE_H
#include "vendors/OceanOptics/features/eeprom_slots/EEPROMSlotFeatureBase.h"
#include "vendors/OceanOptics/features/eeprom_slots/EEPROMSlotFeatureInterface.h"
#include <vector>
namespace seabreeze {
class EEPROMSlotFeature : public EEPROMSlotFeatureBase, public EEPROMSlotFeatureInterface {
public:
EEPROMSlotFeature(unsigned int numberOfSlots);
virtual ~EEPROMSlotFeature();
virtual std::vector< std::vector<byte> * > *readAllEEPROMSlots(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Overriding this to change its visibility */
virtual std::vector<byte> *readEEPROMSlot(const Protocol &protocol,
const Bus &bus, unsigned int slot) throw (FeatureException, IllegalArgumentException);
virtual int writeEEPROMSlot(const Protocol &protocol,
const Bus &bus, unsigned int slot, const std::vector<byte> &data)
throw (FeatureException, IllegalArgumentException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
private:
unsigned int numberOfSlots;
};
}
#endif /* EEPROMSLOTFEATURE_H */

View File

@ -0,0 +1,75 @@
/***************************************************//**
* @file EEPROMSlotFeatureBase.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 EEPROMSLOTFEATUREBASE_H
#define EEPROMSLOTFEATUREBASE_H
#include "common/features/FeatureImpl.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/SeaBreeze.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/NumberFormatException.h"
#include "common/exceptions/IllegalArgumentException.h"
#include <vector>
namespace seabreeze {
class EEPROMSlotFeatureBase : public FeatureImpl {
/* Keeping most of this class protected to force use of the derived
* classes, e.g. EEPROMSlotFeature, which can provide better control
* over which slots are accessed.
*/
protected:
EEPROMSlotFeatureBase();
virtual ~EEPROMSlotFeatureBase();
virtual std::vector<byte> *readEEPROMSlot(const Protocol &protocol,
const Bus &bus, unsigned int slot) throw (FeatureException, IllegalArgumentException);
virtual int writeEEPROMSlot(const Protocol &protocol,
const Bus &bus, unsigned int slot, const std::vector<byte> &data)
throw (FeatureException, IllegalArgumentException);
/* This is a utility function that reads out the given EEPROM slot and
* parses it into a double value. If for some reason the parse fails,
* this will throw a NumberFormatException.
*/
double readDouble(const Protocol &protocol, const Bus &bus,
unsigned int slot) throw (FeatureException, NumberFormatException);
/* As with readDouble(), this will read a slot and parse into an integer */
long readLong(const Protocol &protocol, const Bus &bus,
unsigned int slot) throw (FeatureException, NumberFormatException);
};
}
#endif /* EEPROMSLOTFEATUREBASE_H */

View File

@ -0,0 +1,60 @@
/***************************************************//**
* @file EEPROMSlotFeature.h
* @date February 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 EEPROMSLOTFEATUREINTERFACE_H
#define EEPROMSLOTFEATUREINTERFACE_H
#include <vector>
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/IllegalArgumentException.h"
namespace seabreeze {
class EEPROMSlotFeatureInterface {
public:
virtual ~EEPROMSlotFeatureInterface() = 0;
virtual std::vector< std::vector<byte> * > *readAllEEPROMSlots(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual std::vector<byte> *readEEPROMSlot(const Protocol &protocol,
const Bus &bus, unsigned int slot) throw (FeatureException, IllegalArgumentException) = 0;
virtual int writeEEPROMSlot(const Protocol &protocol,
const Bus &bus, unsigned int slot, const std::vector<byte> &data)
throw (FeatureException, IllegalArgumentException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline EEPROMSlotFeatureInterface::~EEPROMSlotFeatureInterface() {}
}
#endif /* EEPROMSLOTFEATUREINTERFACE_H */

View File

@ -0,0 +1,55 @@
/***************************************************//**
* @file NonlinearityEEPROMSlotFeature.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 NONLINEARITYEEPROMSLOTFEATURE_H
#define NONLINEARITYEEPROMSLOTFEATURE_H
#include "vendors/OceanOptics/features/eeprom_slots/EEPROMSlotFeatureBase.h"
#include "vendors/OceanOptics/features/nonlinearity/NonlinearityCoeffsFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include <vector>
namespace seabreeze {
class NonlinearityEEPROMSlotFeature
: public NonlinearityCoeffsFeatureInterface, public EEPROMSlotFeatureBase {
public:
NonlinearityEEPROMSlotFeature();
virtual ~NonlinearityEEPROMSlotFeature();
std::vector<double> *readNonlinearityCoefficients(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* NONLINEARITYEEPROMSLOTFEATURE_H */

View File

@ -0,0 +1,59 @@
/***************************************************//**
* @file SaturationEEPROMSlotFeature_EEPROM.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 SATURATIONEEPROMSLOTFEATURE_EEPROM_H
#define SATURATIONEEPROMSLOTFEATURE_EEPROM_H
#include "vendors/OceanOptics/features/eeprom_slots/SaturationEEPROMSlotFeatureBase.h"
namespace seabreeze {
/* This class is intended for most devices that store their saturation level
* in EEPROM in the so-called "autonulling" configuration. Note that the
* NIRQuest, MayaPro, Apex and some others do not do things quite the same
* way, so they should not use this class.
*/
class SaturationEEPROMSlotFeature
: public SaturationEEPROMSlotFeatureBase {
public:
SaturationEEPROMSlotFeature(int slot);
virtual ~SaturationEEPROMSlotFeature();
protected:
/* Inherited from SaturationEEPROMSlotFeatureBase */
virtual unsigned int getSaturation(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
private:
int autonullingSlot;
};
} /* end namespace seabreeze */
#endif /* SATURATIONEEPROMSLOTFEATURE_EEPROM_H */

View File

@ -0,0 +1,67 @@
/***************************************************//**
* @file SaturationEEPROMSlotFeatureBase.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 SATURATIONEEPROMSLOTFEATUREBASE_H
#define SATURATIONEEPROMSLOTFEATUREBASE_H
#include "vendors/OceanOptics/features/spectrometer/ProgrammableSaturationFeatureBase.h"
#include "vendors/OceanOptics/features/eeprom_slots/EEPROMSlotFeatureBase.h"
namespace seabreeze {
class SaturationEEPROMSlotFeatureBase
: public EEPROMSlotFeatureBase, public ProgrammableSaturationFeatureBase {
public:
SaturationEEPROMSlotFeatureBase();
virtual ~SaturationEEPROMSlotFeatureBase();
/* Inherited from ProgrammableSaturationFeature */
virtual unsigned int getSaturation() throw (FeatureException);
/* Inherited 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 /* SATURATIONEEPROMSLOTFEATUREBASE_H */

View File

@ -0,0 +1,57 @@
/***************************************************//**
* @file SaturationEEPROMSlotFeature_MayaPro.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 SATURATIONEEPROMSLOTFEATURE_MAYAPRO_H
#define SATURATIONEEPROMSLOTFEATURE_MAYAPRO_H
#include "vendors/OceanOptics/features/eeprom_slots/SaturationEEPROMSlotFeatureBase.h"
#include <vector>
namespace seabreeze {
/* This class is intended specifically for getting the saturation level
* from a MayaPro or devices that are closely related to it.
*/
class SaturationEEPROMSlotFeature_MayaPro
: public SaturationEEPROMSlotFeatureBase {
public:
SaturationEEPROMSlotFeature_MayaPro(int slot);
virtual ~SaturationEEPROMSlotFeature_MayaPro();
protected:
/* Inherited from SaturationEEPROMSlotFeatureBase */
virtual unsigned int getSaturation(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
private:
int saturationSlot;
};
} /* end namespace seabreeze */
#endif /* SATURATIONEEPROMSLOTFEATURE_MAYAPRO_H */

View File

@ -0,0 +1,57 @@
/***************************************************//**
* @file SaturationEEPROMSlotFeature_NIRQuest.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 SATURATIONEEPROMSLOTFEATURE_NIRQUEST_H
#define SATURATIONEEPROMSLOTFEATURE_NIRQUEST_H
#include "vendors/OceanOptics/features/eeprom_slots/SaturationEEPROMSlotFeatureBase.h"
#include <vector>
namespace seabreeze {
/* This class is intended specifically for getting the saturation level
* from a NIRQuest256/512. No other devices should use this class.
*/
class SaturationEEPROMSlotFeature_NIRQuest
: public SaturationEEPROMSlotFeatureBase {
public:
SaturationEEPROMSlotFeature_NIRQuest(int slot);
virtual ~SaturationEEPROMSlotFeature_NIRQuest();
protected:
/* Inherited from SaturationEEPROMSlotFeatureBase */
virtual unsigned int getSaturation(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
private:
int saturationSlot;
};
} /* end namespace seabreeze */
#endif /* SATURATIONEEPROMSLOTFEATURE_NIRQUEST_H */

View File

@ -0,0 +1,55 @@
/***************************************************//**
* @file SerialNumberEEPROMSlotFeature.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 SERIALNUMBEREEPROMSLOTFEATURE_H
#define SERIALNUMBEREEPROMSLOTFEATURE_H
#include "vendors/OceanOptics/features/eeprom_slots/EEPROMSlotFeatureBase.h"
#include "vendors/OceanOptics/features/serial_number/SerialNumberFeatureInterface.h"
#include <string>
namespace seabreeze {
class SerialNumberEEPROMSlotFeature
: public EEPROMSlotFeatureBase, public SerialNumberFeatureInterface {
public:
SerialNumberEEPROMSlotFeature();
virtual ~SerialNumberEEPROMSlotFeature();
std::string *readSerialNumber(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
unsigned char readSerialNumberMaximumLength(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* SERIALNUMBEREEPROMSLOTFEATURE_H */

View File

@ -0,0 +1,55 @@
/***************************************************//**
* @file StrayLightEEPROMSlotFeature.h
* @date February 2012
* @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 STRAYLIGHTEEPROMSLOTFEATURE_H
#define STRAYLIGHTEEPROMSLOTFEATURE_H
#include "vendors/OceanOptics/features/eeprom_slots/EEPROMSlotFeatureBase.h"
#include "vendors/OceanOptics/features/stray_light/StrayLightCoeffsFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include <vector>
namespace seabreeze {
class StrayLightEEPROMSlotFeature
: public StrayLightCoeffsFeatureInterface, public EEPROMSlotFeatureBase {
public:
StrayLightEEPROMSlotFeature();
virtual ~StrayLightEEPROMSlotFeature();
std::vector<double> *readStrayLightCoefficients(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* STRAYLIGHTEEPROMSLOTFEATURE_H */

View File

@ -0,0 +1,61 @@
/***************************************************//**
* @file WavelengthEEPROMSlotFeature.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 WAVELENGTHEEPROMSLOTFEATURE_H
#define WAVELENGTHEEPROMSLOTFEATURE_H
#include "vendors/OceanOptics/features/eeprom_slots/EEPROMSlotFeatureBase.h"
#include "vendors/OceanOptics/features/wavecal/WaveCalFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include <vector>
namespace seabreeze {
class WavelengthEEPROMSlotFeature
: public WaveCalFeatureInterface, public EEPROMSlotFeatureBase {
public:
WavelengthEEPROMSlotFeature(unsigned int numberOfPixels);
virtual ~WavelengthEEPROMSlotFeature();
std::vector<double> *readWavelengths(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
protected:
virtual std::vector<double> *computeWavelengths(
double polynomial[], int length);
unsigned int numberOfPixels;
};
}
#endif /* WAVELENGTHEEPROMSLOTFEATURE_H */

View File

@ -0,0 +1,54 @@
/***************************************************//**
* @file WavelengthEEPROMSlotFeature_QE65000.h
* @date March 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 WAVELENGTHEEPROMSLOTFEATUREQE65000_H
#define WAVELENGTHEEPROMSLOTFEATUREQE65000_H
#include "vendors/OceanOptics/features/eeprom_slots/WavelengthEEPROMSlotFeature.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include <vector>
namespace seabreeze {
class WavelengthEEPROMSlotFeature_QE65000
: public WavelengthEEPROMSlotFeature {
public:
WavelengthEEPROMSlotFeature_QE65000(unsigned int numberOfPixels);
virtual ~WavelengthEEPROMSlotFeature_QE65000();
protected:
/* Overriding from WavelengthEEPROMSlotFeature */
virtual std::vector<double> *computeWavelengths(double polynomial[],
int length);
};
}
#endif /* WAVELENGTHEEPROMSLOTFEATUREQE65000_H */

View File

@ -0,0 +1,57 @@
/***************************************************//**
* @file FPGARegisterFeature.h
* @date October 2012
* @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 SEABREEZE_FPGA_REGISTER_FEATURE_H
#define SEABREEZE_FPGA_REGISTER_FEATURE_H
#include "common/features/FeatureImpl.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
#include "vendors/OceanOptics/features/fpga_register/FPGARegisterFeatureInterface.h"
namespace seabreeze {
class FPGARegisterFeature : public FeatureImpl, public FPGARegisterFeatureInterface {
public:
FPGARegisterFeature();
virtual ~FPGARegisterFeature();
virtual unsigned int readRegister(const Bus &bus, byte address)
throw (FeatureException);
virtual void writeRegister(const Bus &bus, byte address, unsigned int value)
throw (FeatureException);
virtual unsigned char getMajorVersion(const Bus &bus)
throw (FeatureException);
virtual FeatureFamily getFeatureFamily();
};
}
#endif

View File

@ -0,0 +1,53 @@
/***************************************************//**
* @file FPGARegisterFeatureInterface.h
* @date October 2012
* @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 SEABREEZE_FPGA_REGISTER_FEATURE_INTERFACE_H
#define SEABREEZE_FPGA_REGISTER_FEATURE_INTERFACE_H
#include "common/features/Feature.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class FPGARegisterFeatureInterface {
public:
virtual ~FPGARegisterFeatureInterface() = 0;
virtual unsigned int readRegister(const Bus &bus, byte address)
throw (FeatureException) = 0;
virtual void writeRegister(const Bus &bus, byte address, unsigned int value)
throw (FeatureException) = 0;
virtual unsigned char getMajorVersion(const Bus &bus)
throw (FeatureException) = 0;
};
inline FPGARegisterFeatureInterface::~FPGARegisterFeatureInterface() {}
}
#endif

View File

@ -0,0 +1,71 @@
/***************************************************//**
* @file IrradCalFeature.h
* @date March 2010
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the
* irradiance calibration storage available on some
* devices (such as the USB2000+).
*
* 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 IRRADCALFEATURE_H
#define IRRADCALFEATURE_H
#include "common/buses/Bus.h"
#include "common/protocols/Protocol.h"
#include "common/features/FeatureImpl.h"
#include "common/exceptions/FeatureException.h"
#include "common/FloatVector.h"
#include "vendors/OceanOptics/features/irradcal/IrradCalFeatureInterface.h"
namespace seabreeze {
class IrradCalFeature : public FeatureImpl, public IrradCalFeatureInterface {
public:
IrradCalFeature(std::vector<ProtocolHelper *> helpers, int numPixels);
virtual ~IrradCalFeature();
virtual std::vector<float> *readIrradCalibration(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual int writeIrradCalibration(const Protocol &protocol,
const Bus &bus, const std::vector<float> &values) throw (FeatureException);
int getNumberOfPixels();
virtual int hasCollectionArea(const Protocol &protocol,
const Bus &bus);
virtual double readCollectionArea(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual void writeCollectionArea(const Protocol &protocol,
const Bus &bus, double area) throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
private:
int numberOfPixels;
};
}
#endif /* IRRADCALFEATURE_H */

View File

@ -0,0 +1,62 @@
/***************************************************//**
* @file IrradCalFeatureInterface.h
* @date February 2011
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the
* irradiance calibration storage available on some
* devices (such as the USB2000+).
*
* 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 IRRADCALFEATUREINTERFACE_H
#define IRRADCALFEATUREINTERFACE_H
#include "common/buses/Bus.h"
#include "common/protocols/Protocol.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class IrradCalFeatureInterface {
public:
virtual ~IrradCalFeatureInterface() = 0;
virtual std::vector<float> *readIrradCalibration(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual int writeIrradCalibration(const Protocol &protocol,
const Bus &bus, const std::vector<float> &values) throw (FeatureException) = 0;
virtual int hasCollectionArea(const Protocol &protocol,
const Bus &bus) = 0;
virtual double readCollectionArea(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual void writeCollectionArea(const Protocol &protocol,
const Bus &bus, double area) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline IrradCalFeatureInterface::~IrradCalFeatureInterface() {}
}
#endif /* IRRADCALFEATUREINTERFACE_H */

View File

@ -0,0 +1,76 @@
/***************************************************//**
* @file LightSourceFeatureBase.h
* @date April 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 LIGHTSOURCEFEATUREBASE_H
#define LIGHTSOURCEFEATUREBASE_H
#include "common/features/FeatureImpl.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
#include "vendors/OceanOptics/features/light_source/LightSourceFeatureInterface.h"
namespace seabreeze {
class LightSourceFeatureBase : public FeatureImpl,
public LightSourceFeatureInterface {
public:
LightSourceFeatureBase(std::vector<ProtocolHelper *> helpers, int lampModuleIndex);
virtual ~LightSourceFeatureBase();
/* Enable controls */
virtual bool hasLightSourceEnable(const Protocol &protocol,
const Bus &bus, int lightSourceIndex) throw (FeatureException);
virtual bool isLightSourceEnabled(const Protocol &protocol,
const Bus &bus, int lightSourceIndex) throw (FeatureException);
virtual void setLightSourceEnable(const Protocol &protocol,
const Bus &bus, int lightSourceIndex, bool enable) throw (FeatureException);
/* Intensity controls */
virtual bool hasVariableIntensity(const Protocol &protocol,
const Bus &bus, int lightSourceIndex) throw (FeatureException);
virtual double getLightSourceIntensity(const Protocol &protocol,
const Bus &bus, int lightSourceIndex) throw (FeatureException);
virtual void setLightSourceIntensity(const Protocol &protocol,
const Bus &bus, int lightSourceIndex, double intensity) throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
protected:
int moduleIndex;
};
}
#endif /* LIGHTSOURCEFEATUREBASE_H */

View File

@ -0,0 +1,57 @@
/***************************************************//**
* @file LightSourceFeatureImpl.h
* @date April 2013
* @author Ocean Optics, Inc.
*
* This is a trivial implementation of LightSourceFeatureInterface
* that can manage a single module with one or more light sources
* (e.g. light bulbs, lasers, LEDs).
*
* 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 LIGHTSOURCEFEATUREIMPL_H
#define LIGHTSOURCEFEATUREIMPL_H
#include "vendors/OceanOptics/features/light_source/LightSourceFeatureBase.h"
namespace seabreeze {
class LightSourceFeatureImpl : public LightSourceFeatureBase {
public:
LightSourceFeatureImpl(std::vector<ProtocolHelper *> helpers,
int lampModuleIndex, int lightSources);
virtual ~LightSourceFeatureImpl();
/* Override from LightSourceFeatureBase */
virtual int getLightSourceCount(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
protected:
int lightSourceCount;
};
}
#endif /* LIGHTSOURCEFEATUREIMPL_H */

View File

@ -0,0 +1,72 @@
/***************************************************//**
* @file LightSourceFeatureInterface.h
* @date April 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 LIGHTSOURCEFEATUREINTERFACE_H
#define LIGHTSOURCEFEATUREINTERFACE_H
#include "common/features/Feature.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class LightSourceFeatureInterface {
public:
virtual ~LightSourceFeatureInterface() = 0;
virtual int getLightSourceCount(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual bool hasLightSourceEnable(const Protocol &protocol,
const Bus &bus, int lightSourceIndex) throw (FeatureException) = 0;
virtual bool isLightSourceEnabled(const Protocol &protocol,
const Bus &bus, int lightSourceIndex) throw (FeatureException) = 0;
virtual void setLightSourceEnable(const Protocol &protocol,
const Bus &bus, int lightSourceIndex, bool enable) throw (FeatureException) = 0;
virtual bool hasVariableIntensity(const Protocol &protocol,
const Bus &bus, int lightSourceIndex) throw (FeatureException) = 0;
virtual double getLightSourceIntensity(const Protocol &protocol,
const Bus &bus, int lightSourceIndex) throw (FeatureException) = 0;
virtual void setLightSourceIntensity(const Protocol &protocol,
const Bus &bus, int lightSourceIndex, double intensity) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline LightSourceFeatureInterface::~LightSourceFeatureInterface() {}
}
#endif /* LIGHTSOURCEFEATUREINTERFACE_H */

View File

@ -0,0 +1,55 @@
/***************************************************//**
* @file StrobeLampFeature.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 STROBELAMPFEATURE_H
#define STROBELAMPFEATURE_H
#include "common/features/FeatureImpl.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
#include "vendors/OceanOptics/features/light_source/StrobeLampFeatureInterface.h"
namespace seabreeze {
class StrobeLampFeature : public FeatureImpl, public StrobeLampFeatureInterface {
public:
StrobeLampFeature(std::vector<ProtocolHelper *> helpers);
virtual ~StrobeLampFeature();
virtual void setStrobeLampEnable(const Protocol &protocol,
const Bus &bus, bool enable) throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* STROBELAMPFEATURE_H */

View File

@ -0,0 +1,51 @@
/***************************************************//**
* @file StrobeLampFeatureInterface.h
* @date February 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 STROBELAMPFEATUREINTERFACE_H
#define STROBELAMPFEATUREINTERFACE_H
#include "common/features/Feature.h"
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class StrobeLampFeatureInterface {
public:
virtual ~StrobeLampFeatureInterface() = 0;
virtual void setStrobeLampEnable(const Protocol &protocol,
const Bus &bus, bool enable) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline StrobeLampFeatureInterface::~StrobeLampFeatureInterface() {}
}
#endif /* STROBELAMPFEATUREINTERFACE_H */

View File

@ -0,0 +1,49 @@
/***************************************************//**
* @file VentanaLightSourceFeature.h
* @date April 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 VENTANALIGHTSOURCEFEATURE_H
#define VENTANALIGHTSOURCEFEATURE_H
#include "vendors/OceanOptics/features/light_source/LightSourceFeatureImpl.h"
namespace seabreeze {
class VentanaLightSourceFeature : public LightSourceFeatureImpl {
public:
VentanaLightSourceFeature(std::vector<ProtocolHelper *> helpers);
virtual ~VentanaLightSourceFeature();
/* Overriding from Feature */
virtual bool initialize(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
};
}
#endif /* VENTANALIGHTSOURCEFEATURE_H */

View File

@ -0,0 +1,57 @@
/***************************************************//**
* @file NonlinearityCoeffsFeature.h
* @date February 2012
* @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 NONLINEARITYCOEFFSFEATURE_H
#define NONLINEARITYCOEFFSFEATURE_H
#include <vector>
#include "vendors/OceanOptics/features/nonlinearity/NonlinearityCoeffsFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/features/FeatureImpl.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class NonlinearityCoeffsFeature : public FeatureImpl,
public NonlinearityCoeffsFeatureInterface {
public:
NonlinearityCoeffsFeature(std::vector<ProtocolHelper *> helpers);
virtual ~NonlinearityCoeffsFeature();
virtual std::vector<double> *readNonlinearityCoefficients(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* NONLINEARITYCOEFFSFEATURE_H */

View File

@ -0,0 +1,50 @@
/***************************************************//**
* @file NonlinearityCoeffsFeatureInterface.h
* @date February 2012
* @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 NONLINEARITYCOEFFSFEATUREINTERFACE_H
#define NONLINEARITYCOEFFSFEATUREINTERFACE_H
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class NonlinearityCoeffsFeatureInterface {
public:
virtual ~NonlinearityCoeffsFeatureInterface() = 0;
virtual std::vector<double> *readNonlinearityCoefficients(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline NonlinearityCoeffsFeatureInterface::~NonlinearityCoeffsFeatureInterface() {}
}
#endif /* NONLINEARITYCOEFFSFEATUREINTERFACE_H */

View File

@ -0,0 +1,70 @@
/***************************************************//**
* @file OpticalBenchFeature.h
* @date January 2015
* @author Kirk Clendinning, Heliospecgtra
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, Ocean Optics Inc, Heliospectra AB
*
* 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 OPTICALBENCHEFEATURE_H
#define OPTICALBENCHEFEATURE_H
#include <vector>
#include "vendors/OceanOptics/features/optical_bench/OpticalBenchFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/features/FeatureImpl.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class OpticalBenchFeature
: public FeatureImpl, public OpticalBenchFeatureInterface {
public:
OpticalBenchFeature(std::vector<ProtocolHelper *> helpers);
virtual ~OpticalBenchFeature();
virtual unsigned short int readOpticalBenchFiberDiameterMicrons(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual unsigned short int readOpticalBenchSlitWidthMicrons(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual std::string *readOpticalBenchID(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual std::string *readOpticalBenchSerialNumber(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual std::string *readOpticalBenchCoating(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual std::string *readOpticalBenchFilter(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual std::string *readOpticalBenchGrating(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* OPTICALBENCHEFEATURE_H */

View File

@ -0,0 +1,62 @@
/***************************************************//**
* @file OpticalBenchFeatureInterface.h
* @date January 2015
* @author Ocean Optics, Inc., Kirk Clendinning, Heliospectra
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 OPTICALBENCHFEATUREINTERFACE_H
#define OPTICALBENCHFEATUREINTERFACE_H
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class OpticalBenchFeatureInterface {
public:
virtual ~OpticalBenchFeatureInterface() = 0;
virtual unsigned short int readOpticalBenchFiberDiameterMicrons(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual unsigned short int readOpticalBenchSlitWidthMicrons(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual std::string *readOpticalBenchID(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual std::string *readOpticalBenchSerialNumber(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual std::string *readOpticalBenchCoating(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual std::string *readOpticalBenchFilter(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual std::string *readOpticalBenchGrating(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline OpticalBenchFeatureInterface::~OpticalBenchFeatureInterface() {}
}
#endif /* OPTICALBENCHFEATUREINTERFACE_H */

View File

@ -0,0 +1,61 @@
/***************************************************//**
* @file PixelBinningFeatureInterface.h
* @date October 2015
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the thermo-
* electric cooler (TEC) feature.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 PIXELBINNINGFEATUREINTERFACE_H
#define PIXELBINNINGFEATUREINTERFACE_H
#include "common/buses/Bus.h"
#include "common/protocols/Protocol.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/IllegalArgumentException.h"
namespace seabreeze {
class PixelBinningFeatureInterface {
public:
virtual ~PixelBinningFeatureInterface() = 0;
virtual void setPixelBinningFactor(const Protocol &protocol,
const Bus &bus, const unsigned char binningFactor) throw (FeatureException) = 0;
virtual unsigned char getPixelBinningFactor(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual void setDefaultPixelBinningFactor(const Protocol &protocol,
const Bus &bus, const unsigned char binningFactor) throw (FeatureException) = 0;
virtual void setDefaultPixelBinningFactor(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual unsigned char getDefaultPixelBinningFactor(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual unsigned char getMaxPixelBinningFactor(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
};
}
#endif /* PIXELBINNINGFEATUREINTERFACE_H */

View File

@ -0,0 +1,89 @@
/***************************************************//**
* @file STSPixelBinningFeature.h
* @date October 2015
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the thermo-
* electric unit for devices with a clean
* protocol implementation. This is an abstract base
* class but it does much of the work needed for most
* implementations that can delegate almost everything
* to the protocol layer.
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 STSPIXELBINNINGFEATURE_H
#define STSPIXELBINNINGFEATURE_H
#include "common/buses/Bus.h"
#include "common/protocols/Protocol.h"
#include "common/protocols/ProtocolHelper.h"
#include "common/features/FeatureImpl.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/IllegalArgumentException.h"
#include "vendors/OceanOptics/features/pixel_binning/PixelBinningFeatureInterface.h"
namespace seabreeze {
class STSSpectrometerFeature;
class STSPixelBinningFeature : public FeatureImpl,
public PixelBinningFeatureInterface {
public:
STSPixelBinningFeature(std::vector<ProtocolHelper *> helpers,
STSSpectrometerFeature *spectroFeature);
virtual ~STSPixelBinningFeature();
virtual void setPixelBinningFactor(const Protocol &protocol,
const Bus &bus, const unsigned char binningFactor)
throw (FeatureException);
virtual unsigned char getPixelBinningFactor(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual void setDefaultPixelBinningFactor(const Protocol &protocol,
const Bus &bus, const unsigned char binningFactor)
throw (FeatureException);
virtual void setDefaultPixelBinningFactor(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual unsigned char getDefaultPixelBinningFactor(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual unsigned char getMaxPixelBinningFactor(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Inherited from Feature */
/* This is still abstract in case the device needs to do anything
* special with regards to defaults when it is initialized.
*/
virtual bool initialize(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
virtual FeatureFamily getFeatureFamily();
protected:
STSSpectrometerFeature *spectrometerFeature;
};
}
#endif /* STSPIXELBINNINGFEATURE_H */

View File

@ -0,0 +1,55 @@
/***************************************************//**
* @file RawUSBBusAccessFeature.h
* @date October 2012
* @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 SEABREEZE_RAW_USB_BUS_ACCESS_FEATURE_H
#define SEABREEZE_RAW_USB_BUS_ACCESS_FEATURE_H
#include "common/features/FeatureImpl.h"
#include "common/exceptions/FeatureException.h"
#include "vendors/OceanOptics/features/raw_bus_access/RawUSBBusAccessFeatureInterface.h"
#include "common/buses/usb/USBInterface.h"
namespace seabreeze {
class RawUSBBusAccessFeature : public FeatureImpl,
public RawUSBBusAccessFeatureInterface {
public:
RawUSBBusAccessFeature();
virtual ~RawUSBBusAccessFeature();
virtual std::vector<byte> readUSB(const USBInterface *bus, int endpoint,
unsigned int length) throw (FeatureException);
virtual int writeUSB(const USBInterface *bus, int endpoint,
const std::vector<byte> &data) throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif

View File

@ -0,0 +1,52 @@
/***************************************************//**
* @file RawUSBBusAccessFeatureInterface.h
* @date October 2012
* @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 SEABREEZE_RAW_USB_BUS_ACCESS_FEATURE_INTERFACE_H
#define SEABREEZE_RAW_USB_BUS_ACCESS_FEATURE_INTERFACE_H
#include "common/features/Feature.h"
#include "common/exceptions/FeatureException.h"
#include "common/buses/usb/USBInterface.h"
namespace seabreeze {
class RawUSBBusAccessFeatureInterface {
public:
virtual ~RawUSBBusAccessFeatureInterface() = 0;
virtual std::vector<byte> readUSB(const USBInterface *bus, int endpoint,
unsigned int length ) throw (FeatureException) = 0;
virtual int writeUSB(const USBInterface *bus, int endpoint,
const std::vector<byte> &data) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline RawUSBBusAccessFeatureInterface::~RawUSBBusAccessFeatureInterface() {}
}
#endif

View File

@ -0,0 +1,59 @@
/***************************************************//**
* @file RevisionFeature.h
* @date January 2015
* @author Kirk Clendinning, Heliospectra
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, Ocean Optics Inc, Heliospectra AB
*
* 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 REVISIONFEATURE_H
#define REVISIONFEATURE_H
#include <vector>
#include "vendors/OceanOptics/features/revision/RevisionFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/features/FeatureImpl.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class RevisionFeature
: public FeatureImpl, public RevisionFeatureInterface {
public:
RevisionFeature(std::vector<ProtocolHelper *> helpers);
virtual ~RevisionFeature();
virtual unsigned char readHardwareRevision(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual unsigned short int readFirmwareRevision(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* REVISIONFEATURE_H */

View File

@ -0,0 +1,52 @@
/***************************************************//**
* @file RevisionFeatureInterface.h
* @date January 2015
* @author Ocean Optics, Inc., Kirk Clendinning, Heliospectra
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 REVISIONFEATUREINTERFACE_H
#define REVISIONFEATUREINTERFACE_H
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class RevisionFeatureInterface {
public:
virtual ~RevisionFeatureInterface() = 0;
virtual unsigned char readHardwareRevision(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual unsigned short int readFirmwareRevision(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline RevisionFeatureInterface::~RevisionFeatureInterface() {}
}
#endif /* REVISIONFEATUREINTERFACE_H */

View File

@ -0,0 +1,58 @@
/***************************************************//**
* @file SerialNumberFeature.h
* @date February 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 SERIALNUMBERFEATURE_H
#define SERIALNUMBERFEATURE_H
#include <vector>
#include "vendors/OceanOptics/features/serial_number/SerialNumberFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/features/FeatureImpl.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class SerialNumberFeature : public FeatureImpl, public SerialNumberFeatureInterface {
public:
SerialNumberFeature(std::vector<ProtocolHelper *> helpers);
virtual ~SerialNumberFeature();
virtual std::string *readSerialNumber(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual unsigned char readSerialNumberMaximumLength(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* SERIALNUMBERFEATURE_H */

View File

@ -0,0 +1,53 @@
/***************************************************//**
* @file SerialNumberFeatureInterface.h
* @date February 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 SERIALNUMBERFEATUREINTERFACE_H
#define SERIALNUMBERFEATUREINTERFACE_H
#include <string>
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class SerialNumberFeatureInterface {
public:
virtual ~SerialNumberFeatureInterface() = 0;
virtual unsigned char readSerialNumberMaximumLength(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual std::string *readSerialNumber(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline SerialNumberFeatureInterface::~SerialNumberFeatureInterface() {}
}
#endif /* SERIALNUMBERFEATUREINTERFACE_H */

View File

@ -0,0 +1,56 @@
/***************************************************//**
* @file ShutterFeature.h
* @date February 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 SHUTTERFEATURE_H
#define SHUTTERFEATURE_H
#include <vector>
#include "vendors/OceanOptics/features/shutter/ShutterFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/features/FeatureImpl.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class ShutterFeature : public FeatureImpl, public ShutterFeatureInterface {
public:
ShutterFeature(std::vector<ProtocolHelper *> helpers);
virtual ~ShutterFeature();
virtual void setShutterOpen(const Protocol &protocol,
const Bus &bus, bool opened) throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* SHUTTERFEATURE_H */

View File

@ -0,0 +1,50 @@
/***************************************************//**
* @file ShutterFeatureInterface.h
* @date February 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 SHUTTERFEATUREINTERFACE_H
#define SHUTTERFEATUREINTERFACE_H
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class ShutterFeatureInterface {
public:
virtual ~ShutterFeatureInterface() = 0;
virtual void setShutterOpen(const Protocol &protocol,
const Bus &bus, bool opened) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline ShutterFeatureInterface::~ShutterFeatureInterface() {}
}
#endif /* SHUTTERFEATUREINTERFACE_H */

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 */

View File

@ -0,0 +1,68 @@
/***************************************************//**
* @file SpectrumProcessingFeature.h
* @date February 2015
* @author Kirk Clendinning, Heliospectra
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 SPECTRUMPROCESSINGFEATURE_H
#define SPECTRUMPROCESSINGFEATURE_H
#include <vector>
#include "vendors/OceanOptics/features/spectrum_processing/SpectrumProcessingFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/features/FeatureImpl.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/IllegalArgumentException.h"
namespace seabreeze {
class SpectrumProcessingFeature
: public FeatureImpl, public SpectrumProcessingFeatureInterface {
public:
SpectrumProcessingFeature(std::vector<ProtocolHelper *> helpers);
virtual ~SpectrumProcessingFeature();
virtual unsigned char readSpectrumProcessingBoxcarWidth(
const Protocol &protocol, const Bus &bus)
throw (FeatureException);
virtual unsigned short int readSpectrumProcessingScansToAverage(
const Protocol &protocol, const Bus &bus)
throw (FeatureException);
virtual void writeSpectrumProcessingBoxcarWidth(const Protocol &protocol,
const Bus &bus, unsigned char boxcarWidth)
throw (FeatureException, IllegalArgumentException);
virtual void writeSpectrumProcessingScansToAverage(const Protocol &protocol,
const Bus &bus, unsigned short int scansToAverage)
throw (FeatureException, IllegalArgumentException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* SPECTRUMPROCESSINGFEATURE_H */

View File

@ -0,0 +1,59 @@
/***************************************************//**
* @file SpectrumProcessingFeatureInterface.h
* @date February 2015
* @author Ocean Optics, Inc., Kirk Clendinning, Heliospectra
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 SPECTRUMPROCESSINGFEATUREINTERFACE_H
#define SPECTRUMPROCESSINGFEATUREINTERFACE_H
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/IllegalArgumentException.h"
namespace seabreeze {
class SpectrumProcessingFeatureInterface {
public:
virtual ~SpectrumProcessingFeatureInterface() = 0;
virtual unsigned char readSpectrumProcessingBoxcarWidth(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual unsigned short int readSpectrumProcessingScansToAverage(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual void writeSpectrumProcessingBoxcarWidth(const Protocol &protocol,
const Bus &bus, unsigned char boxcarWidth)
throw (FeatureException, IllegalArgumentException) = 0;
virtual void writeSpectrumProcessingScansToAverage(const Protocol &protocol,
const Bus &bus, unsigned short int scansToAverage)
throw (FeatureException, IllegalArgumentException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline SpectrumProcessingFeatureInterface::~SpectrumProcessingFeatureInterface() {}
}
#endif /* SPECTRUMPROCESSINGFEATUREINTERFACE_H */

View File

@ -0,0 +1,57 @@
/***************************************************//**
* @file StrayLightCoeffsFeature.h
* @date February 2012
* @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 STRAYLIGHTCOEFFSFEATURE_H
#define STRAYLIGHTCOEFFSFEATURE_H
#include <vector>
#include "vendors/OceanOptics/features/stray_light/StrayLightCoeffsFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/features/FeatureImpl.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class StrayLightCoeffsFeature
: public FeatureImpl, public StrayLightCoeffsFeatureInterface {
public:
StrayLightCoeffsFeature(std::vector<ProtocolHelper *> helpers);
virtual ~StrayLightCoeffsFeature();
virtual std::vector<double> *readStrayLightCoefficients(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* STRAYLIGHTCOEFFSFEATURE_H */

View File

@ -0,0 +1,50 @@
/***************************************************//**
* @file StrayLightCoeffsFeatureInterface.h
* @date February 2012
* @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 STRAYLIGHTCOEFFSFEATUREINTERFACE_H
#define STRAYLIGHTCOEFFSFEATUREINTERFACE_H
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class StrayLightCoeffsFeatureInterface {
public:
virtual ~StrayLightCoeffsFeatureInterface() = 0;
virtual std::vector<double> *readStrayLightCoefficients(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline StrayLightCoeffsFeatureInterface::~StrayLightCoeffsFeatureInterface() {}
}
#endif /* STRAYLIGHTCOEFFSFEATUREINTERFACE_H */

View File

@ -0,0 +1,65 @@
/***************************************************//**
* @file TemperatureFeature.h
* @date January 2015
* @author Kirk Clendinning, Heliospectra
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, Ocean Optics Inc, Heliospectra AB
*
* 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 TEMPERATUREFEATURE_H
#define TEMPERATUREFEATURE_H
#include <vector>
#include "vendors/OceanOptics/features/temperature/TemperatureFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/features/FeatureImpl.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class TemperatureFeature
: public FeatureImpl, public TemperatureFeatureInterface {
public:
TemperatureFeature(std::vector<ProtocolHelper *> helpers);
virtual ~TemperatureFeature();
virtual unsigned char readTemperatureCount(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual double readTemperature(const Protocol &protocol,
const Bus &bus, int index) throw (FeatureException);
virtual std::vector<double> *readAllTemperatures(
const Protocol &protocol, const Bus &bus)
throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* TEMPERATUREFEATURE_H */

View File

@ -0,0 +1,54 @@
/***************************************************//**
* @file TemperatureFeatureInterface.h
* @date January 2015
* @author Ocean Optics, Inc., Kirk Clendinning, Heliospectra
*
* LICENSE:
*
* SeaBreeze Copyright (C) 2015, 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 TEMPERATUREFEATUREINTERFACE_H
#define TEMPERATUREFEATUREINTERFACE_H
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class TemperatureFeatureInterface {
public:
virtual ~TemperatureFeatureInterface() = 0;
virtual unsigned char readTemperatureCount(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual double readTemperature(const Protocol &protocol,
const Bus &bus, int index) throw (FeatureException) = 0;
virtual std::vector<double> *readAllTemperatures(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline TemperatureFeatureInterface::~TemperatureFeatureInterface() {}
}
#endif /* TEMPERATUREFEATUREINTERFACE_H */

View File

@ -0,0 +1,55 @@
/***************************************************//**
* @file QEProThermoElectricFeature.h
* @date September 2013
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the thermo-
* electric unit (TEC) on the QE-PRO.
*
* 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 QEPROTHERMOELECTRICFEATURE_H
#define QEPROTHERMOELECTRICFEATURE_H
#include "vendors/OceanOptics/features/thermoelectric/ThermoElectricFeatureBase.h"
namespace seabreeze {
class QEProThermoElectricFeature : public ThermoElectricFeatureBase {
public:
QEProThermoElectricFeature();
virtual ~QEProThermoElectricFeature();
/* Inherited from ThermoElectricFeatureBase where they are pure virtual */
virtual double getDefaultSetPointCelsius(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual bool getDefaultThermoElectricEnable(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Override from Feature */
virtual bool initialize(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
};
}
#endif /* QEPROTHERMOELECTRICFEATURE_H */

View File

@ -0,0 +1,84 @@
/***************************************************//**
* @file ThermoElectricFeatureBase.h
* @date March 2013
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the thermo-
* electric unit for devices with a clean
* protocol implementation. This is an abstract base
* class but it does much of the work needed for most
* implementations that can delegate almost everything
* to the protocol layer.
*
* 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 THERMOELECTRICFEATUREBASE_H
#define THERMOELECTRICFEATUREBASE_H
#include "common/buses/Bus.h"
#include "common/protocols/Protocol.h"
#include "common/protocols/ProtocolHelper.h"
#include "common/features/FeatureImpl.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/IllegalArgumentException.h"
#include "vendors/OceanOptics/features/thermoelectric/ThermoElectricFeatureInterface.h"
namespace seabreeze {
class ThermoElectricFeatureBase : public FeatureImpl,
public ThermoElectricFeatureInterface {
public:
ThermoElectricFeatureBase();
virtual ~ThermoElectricFeatureBase();
virtual void setThermoElectricEnable(const Protocol &protocol,
const Bus &bus, bool enable) throw (FeatureException);
virtual double getTemperatureCelsius(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual void setTemperatureSetPointCelsius(const Protocol &protocol,
const Bus &bus, double degreesC)
throw (FeatureException, IllegalArgumentException);
/* These remain abstract because the limits of any given device will
* depend on its implementation. They will either need to be hardcoded
* into the implementation or be queried from the device.
*/
virtual double getDefaultSetPointCelsius(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual bool getDefaultThermoElectricEnable(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
/* Inherited from Feature */
/* This is still abstract in case the device needs to do anything
* special with regards to defaults when it is initialized.
*/
virtual bool initialize(const Protocol &protocol, const Bus &bus)
throw (FeatureException) = 0;
virtual FeatureFamily getFeatureFamily();
};
}
#endif /* THERMOELECTRICFEATUREBASE_H */

View File

@ -0,0 +1,64 @@
/***************************************************//**
* @file ThermoElectricFeatureInterface.h
* @date February 2011
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the thermo-
* electric cooler (TEC) feature.
*
* 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 THERMOELECTRICFEATUREINTERFACE_H
#define THERMOELECTRICFEATUREINTERFACE_H
#include "common/buses/Bus.h"
#include "common/protocols/Protocol.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/IllegalArgumentException.h"
namespace seabreeze {
class ThermoElectricFeatureInterface {
public:
virtual ~ThermoElectricFeatureInterface() = 0;
virtual void setThermoElectricEnable(const Protocol &protocol,
const Bus &bus, bool enable) throw (FeatureException) = 0;
virtual double getTemperatureCelsius(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual void setTemperatureSetPointCelsius(const Protocol &protocol,
const Bus &bus, double degreesC)
throw (FeatureException, IllegalArgumentException) = 0;
virtual double getDefaultSetPointCelsius(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
virtual bool getDefaultThermoElectricEnable(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline ThermoElectricFeatureInterface::~ThermoElectricFeatureInterface() {}
}
#endif /* THERMOELECTRICFEATUREINTERFACE_H */

View File

@ -0,0 +1,68 @@
/***************************************************//**
* @file ThermoElectricQEFeature.h
* @date February 2009
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the thermo-
* electric cooler (TEC) on the QE65000 and similar
* spectrometers (including the NIRQuest).
*
* 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 THERMOELECTRICQEFEATURE_H
#define THERMOELECTRICQEFEATURE_H
#include "common/buses/Bus.h"
#include "common/protocols/Protocol.h"
#include "common/features/Feature.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/IllegalArgumentException.h"
#include "vendors/OceanOptics/features/thermoelectric/ThermoElectricFeatureBase.h"
namespace seabreeze {
class ThermoElectricQEFeature : public ThermoElectricFeatureBase {
public:
ThermoElectricQEFeature();
virtual ~ThermoElectricQEFeature();
/* Inherited from ThermoElectricFeatureBase where they are pure virtual */
double getDefaultSetPointCelsius(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
bool getDefaultThermoElectricEnable(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Override from Feature */
virtual bool initialize(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
private:
std::vector<byte> *readTECDefaults(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
};
}
#endif /* THERMOELECTRICQEFEATURE_H */

View File

@ -0,0 +1,63 @@
/***************************************************//**
* @file VentanaThermoElectricFeature.h
* @date March 2013
* @author Ocean Optics, Inc.
*
* This feature provides an interface to the thermo-
* electric unit (TEC) on the Ventana.
*
* 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 VENTANATHERMOELECTRICFEATURE_H
#define VENTANATHERMOELECTRICFEATURE_H
#include "common/buses/Bus.h"
#include "common/protocols/Protocol.h"
#include "common/features/Feature.h"
#include "common/exceptions/FeatureException.h"
#include "common/exceptions/IllegalArgumentException.h"
#include "vendors/OceanOptics/features/thermoelectric/ThermoElectricFeatureBase.h"
namespace seabreeze {
class VentanaThermoElectricFeature : public ThermoElectricFeatureBase {
public:
VentanaThermoElectricFeature();
virtual ~VentanaThermoElectricFeature();
/* Inherited from ThermoElectricFeatureBase where they are pure virtual */
virtual double getDefaultSetPointCelsius(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
virtual bool getDefaultThermoElectricEnable(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Override from Feature, used to detect whether capability is present */
virtual bool initialize(const Protocol &protocol, const Bus &bus)
throw (FeatureException);
};
}
#endif /* VENTANATHERMOELECTRICFEATURE_H */

View File

@ -0,0 +1,59 @@
/***************************************************//**
* @file WaveCalFeature.h
* @date February 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 WAVECALFEATURE_H
#define WAVECALFEATURE_H
#include "vendors/OceanOptics/features/wavecal/WaveCalFeatureInterface.h"
#include "common/protocols/Protocol.h"
#include "common/features/FeatureImpl.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class WaveCalFeature : public FeatureImpl, public WaveCalFeatureInterface {
public:
WaveCalFeature(std::vector<ProtocolHelper *> helpers,
unsigned int numberOfPixels);
virtual ~WaveCalFeature();
virtual std::vector<double> *readWavelengths(const Protocol &protocol,
const Bus &bus) throw (FeatureException);
/* Overriding from Feature */
virtual FeatureFamily getFeatureFamily();
protected:
unsigned int numberOfPixels;
};
}
#endif /* WAVECALFEATURE_H */

View File

@ -0,0 +1,50 @@
/***************************************************//**
* @file WaveCalFeatureInterface.h
* @date February 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 WAVECALFEATUREINTERFACE_H
#define WAVECALFEATUREINTERFACE_H
#include "common/protocols/Protocol.h"
#include "common/buses/Bus.h"
#include "common/exceptions/FeatureException.h"
namespace seabreeze {
class WaveCalFeatureInterface {
public:
virtual ~WaveCalFeatureInterface() = 0;
virtual std::vector<double> *readWavelengths(const Protocol &protocol,
const Bus &bus) throw (FeatureException) = 0;
};
/* Default implementation for (otherwise) pure virtual destructor */
inline WaveCalFeatureInterface::~WaveCalFeatureInterface() {}
}
#endif /* WAVECALFEATUREINTERFACE_H */