sci-biology/micro-manager: udpate'

This commit is contained in:
Florian Tham
2017-03-14 23:02:24 +01:00
parent 919c8cf8ce
commit 6a244673b1
16 changed files with 6045 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,394 @@
///////////////////////////////////////////////////////////////////////////////
// FILE: Andor.h
// PROJECT: Micro-Manager
// SUBSYSTEM: DeviceAdapters
//-----------------------------------------------------------------------------
// DESCRIPTION: Andor camera module
//
// AUTHOR: Nenad Amodaj, nenad@amodaj.com, 06/30/2006
// COPYRIGHT: University of California, San Francisco, 2006
// 100X Imaging Inc, 2008
//
// LICENSE: This file is distributed under the BSD license.
// License text is included with the source distribution.
//
// This file is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//
// IN NO EVENT SHALL THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES.
//
// REVISIONS: May 21, 2007, Jizhen Zhao, Andor Technologies
// Temerature control and other additional related properties added,
// gain bug fixed, refernce counting fixed for shutter adapter.
//
// May 23 & 24, 2007, Daigang Wen, Andor Technology plc added/modified:
// Cooler is turned on at startup and turned off at shutdown
// Cooler control is changed to cooler mode control
// Pre-Amp-Gain property is added
// Temperature Setpoint property is added
// Temperature is resumed as readonly
// EMGainRangeMax and EMGainRangeMin are added
//
// FUTURE DEVELOPMENT: From September 1 2007, the development of this adaptor is taken over by Andor Technology plc. Daigang Wen (d.wen@andor.com) is the main contact. Changes made by him will not be labeled.
//
// CVS: $Id: Andor.h 10061 2012-10-09 15:38:57Z normanglasgow $
//
#ifndef _ANDOR_H_
#define _ANDOR_H_
#include "../../MMDevice/DeviceBase.h"
#include "../../MMDevice/MMDevice.h"
#include "../../MMDevice/ImgBuffer.h"
#include "../../MMDevice/DeviceUtils.h"
#include "../../MMDevice/DeviceThreads.h"
#include <string>
#include <sstream>
#include <map>
// error codes
#define ERR_BUFFER_ALLOCATION_FAILED 101
#define ERR_INCOMPLETE_SNAP_IMAGE_CYCLE 102
#define ERR_INVALID_ROI 103
#define ERR_INVALID_READOUT_MODE_SETUP 104
#define ERR_CAMERA_DOES_NOT_EXIST 105
#define ERR_BUSY_ACQUIRING 106
#define ERR_INVALID_PREAMPGAIN 107
#define ERR_INVALID_VSPEED 108
#define ERR_TRIGGER_NOT_SUPPORTED 109
#define ERR_OPEN_OR_CLOSE_SHUTTER_IN_ACQUISITION_NOT_ALLOWEDD 110
#define ERR_NO_AVAIL_AMPS 111
#define ERR_SOFTWARE_TRIGGER_IN_USE 112
class AcqSequenceThread;
//////////////////////////////////////////////////////////////////////////////
// Implementation of the MMDevice and MMCamera interfaces
//
class AndorCamera : public CCameraBase<AndorCamera>
{
public:
friend class AcqSequenceThread;
static AndorCamera* GetInstance();
~AndorCamera();
// MMDevice API
int Initialize();
int Shutdown();
void GetName(char* pszName) const;
bool Busy() {return false;}
// MMCamera API
int SnapImage();
const unsigned char* GetImageBuffer();
unsigned GetImageWidth() const {return img_.Width();}
unsigned GetImageHeight() const {return img_.Height();}
unsigned GetImageBytesPerPixel() const {return img_.Depth();}
long GetImageBufferSize() const {return img_.Width() * img_.Height() * GetImageBytesPerPixel();}
unsigned GetBitDepth() const;
int GetBinning() const;
int SetBinning(int binSize);
double GetExposure() const;
void SetExposure(double dExp);
int SetROI(unsigned uX, unsigned uY, unsigned uXSize, unsigned uYSize);
int GetROI(unsigned& uX, unsigned& uY, unsigned& uXSize, unsigned& uYSize);
int ClearROI();
int IsExposureSequenceable(bool& isSequenceable) const {isSequenceable = false; return DEVICE_OK;}
// high-speed interface
int PrepareSequenceAcqusition()
{
return DEVICE_OK;
}
int StartSequenceAcquisition(long numImages, double interval_ms, bool stopOnOverflow);
/**
* Continuous sequence acquisition.
* Default to sequence acquisition with a high number of images
*/
int StartSequenceAcquisition(double interval)
{
return StartSequenceAcquisition(LONG_MAX, interval, false);
}
int StopSequenceAcquisition(); // temporary=true
int StopSequenceAcquisition(bool temporary);
bool IsCapturing(){return sequenceRunning_;};
// action interface for the camera
int OnBinning(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnExposure(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnPixelType(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnGain(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnEMSwitch(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnReadoutMode(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnReadoutTime(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnOffset(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnTemperature(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnDriverDir(MM::PropertyBase* pProp, MM::ActionType eAct);
//int OnShutterMode(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnCooler(MM::PropertyBase* pProp, MM::ActionType eAct);// jizhen 05.11.2007
int OnFanMode(MM::PropertyBase* pProp, MM::ActionType eAct);// jizhen 05.16.2007
int OnTemperatureSetPoint(MM::PropertyBase* pProp, MM::ActionType eAct);// Daigang 23-May-2007
int OnEMGainRangeMax(MM::PropertyBase* pProp, MM::ActionType eAct);// Daigang 24-May-2007
int OnEMGainRangeMin(MM::PropertyBase* pProp, MM::ActionType eAct);// Daigang 24-May-2007
int OnPreAmpGain(MM::PropertyBase* pProp, MM::ActionType eAct);// Daigang 24-May-2007
int OnFrameTransfer(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnVSpeed(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnInternalShutter(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnOutputAmplifier(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnADChannel(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnCamera(MM::PropertyBase* pProp, MM::ActionType eAct);//for multiple camera support
int OnCameraName(MM::PropertyBase* pProp, MM::ActionType eAct);
int OniCamFeatures(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnTemperatureRangeMin(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnTemperatureRangeMax(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnVCVoltage(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnBaselineClamp(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnCropModeSwitch(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnCropModeWidth(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnCropModeHeight(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnActualIntervalMS(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnSelectTrigger(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnTimeOut(MM::PropertyBase* pProp, MM::ActionType eAct); // kdb July-30-2009
int OnCountConvert(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnCountConvertWavelength(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnSpuriousNoiseFilter(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnSpuriousNoiseFilterThreshold(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnSpuriousNoiseFilterDescription(MM::PropertyBase* pProp, MM::ActionType eAct);
int OnOptAcquireMode(MM::PropertyBase* pProp, MM::ActionType eAct);
void UpdateOAParams(const char* OAModeName);
int OnOADescription(MM::PropertyBase* pProp, MM::ActionType eAct);
// custom interface for the thread
int PushImage();
//static void ReleaseInstance(AndorCamera * AndorCamera);
int GetNumberOfWorkableCameras() const { return NumberOfWorkableCameras_; }
int GetMyCameraID() const { return myCameraID_; }
private:
AndorCamera();
int ResizeImageBuffer();
int StopCameraAcquisition();
void UpdateEMGainRange();
void CheckError(unsigned int errorVal);
bool IsThermoSteady();
void SetToIdle();
bool IsAcquiring();
void LogStatus();
int PrepareSnap();
unsigned int UpdateSnapTriggerMode();
bool EMSwitch_;
unsigned int ui_swVersion;
static AndorCamera* instance_;
static unsigned refCount_;
static bool softwareTriggerUsed_;
ImgBuffer img_;
bool initialized_;
bool snapInProgress_;
bool sequenceRunning_;
long imageCounter_;
MM::MMTime startTime_;
long imageTimeOut_ms_;
long sequenceLength_;
bool stopOnOverflow_;
double intervalMs_;
std::string countConvertMode_;
double countConvertWavelength_;
std::string spuriousNoiseFilter_;
double spuriousNoiseFilterThreshold_;
std::string spuriousNoiseFilterDescriptionStr_;
std::string optAcquireModeStr_;
std::string optAcquireDescriptionStr_;
long lSnapImageCnt_;
std::vector<std::string> PreAmpGains_;
long currentGain_;
bool cropModeSwitch_;
long currentCropWidth_;
long currentCropHeight_;
std::vector<std::string> VSpeeds_;
double currentExpMS_;
long ReadoutTime_, KeepCleanTime_;
long GetReadoutTime();
// kdb 2/27/2009
#ifdef WIN32
HMODULE hAndorDll;
typedef unsigned int (CALLBACK *FPGetReadOutTime)(float *_fReadoutTime);
typedef unsigned int (CALLBACK *FPGetKeepCleanTime)(float *_ftime);
#else
HDEVMODULE hAndorDll;
typedef unsigned int (*FPGetReadOutTime)(float *_fReadoutTime);
typedef unsigned int (*FPGetKeepCleanTime)(float *_ftime);
#endif
// end of kdb
FPGetReadOutTime fpGetReadOutTime;
//typedef unsigned int (CALLBACK *FPGetKeepCleanTime)(float *_ftime);
FPGetKeepCleanTime fpGetKeepCleanTime;
//typedef unsigned int (CALLBACK *FPSendSoftwareTrigger)();
//FPSendSoftwareTrigger fpSendSoftwareTrigger;
bool busy_;
struct ROI {
int x;
int y;
int xSize;
int ySize;
ROI() : x(0), y(0), xSize(0), ySize(0) {}
~ROI() {}
bool isEmpty() {return x==0 && y==0 && xSize==0 && ySize == 0;}
};
ROI roi_;
int binSize_;
double expMs_; //value used by camera
std::string driverDir_;
int fullFrameX_;
int fullFrameY_;
int tempFrameX_;
int tempFrameY_;
short* fullFrameBuffer_;
std::vector<std::string> readoutModes_;
int EmCCDGainLow_, EmCCDGainHigh_;
int minTemp_, maxTemp_;
//Daigang 24-may-2007
bool ThermoSteady_;
AcqSequenceThread* seqThread_;
bool bShutterIntegrated_;
int ADChannelIndex_, OutputAmplifierIndex_;
void UpdateHSSpeeds();
int UpdatePreampGains();
int HSSpeedIdx_;
bool bSoftwareTriggerSupported_;
int iCurrentTriggerMode_;
enum {
INTERNAL,
EXTERNAL,
SOFTWARE
};
at_32 myCameraID_;
at_32 NumberOfAvailableCameras_;
at_32 NumberOfWorkableCameras_;
std::vector<std::string> cameraName_;
std::vector<std::string> cameraSN_;
std::vector<int> cameraID_;
int GetListOfAvailableCameras();
std::string CameraName_;
std::string iCamFeatures_;
std::string TemperatureRangeMin_;
std::string TemperatureRangeMax_;
std::string PreAmpGain_;
std::string VSpeed_;
std::string TemperatureSetPoint_;
std::vector<std::string> VCVoltages_;
std::string VCVoltage_;
std::vector<std::string> BaselineClampValues_;
std::string BaselineClampValue_;
float ActualInterval_ms_;
std::string strCurrentTriggerMode_;
std::vector<std::string> vTriggerModes;
std::string strCurrentAmp;
std::vector<std::string> vAvailAmps;
std::map<std::string, int> mapAmps;
std::string strCurrentChannel;
std::vector<std::string> vChannels;
bool bFrameTransfer_;
std::string m_str_frameTransferProp;
std::string m_str_camType;
std::vector<std::string> vCameraType;
unsigned char* pImgBuffer_;
unsigned char* GetAcquiredImage();
std::string getCameraType();
unsigned int createGainProperty(AndorCapabilities * caps);
unsigned int createTriggerProperty(AndorCapabilities * caps);
unsigned int createIsolatedCropModeProperty(AndorCapabilities * caps);
bool mb_canUseFan;
bool mb_canSetTemp;
bool bEMGainSupported;
bool sequencePaused_;
};
/**
* Acquisition thread
*/
class AcqSequenceThread : public MMDeviceThreadBase
{
public:
AcqSequenceThread(AndorCamera* pCam) :
intervalMs_(100.0),
numImages_(1),
waitTime_(10),
busy_(false),
stop_(false)
{
camera_ = pCam;
};
~AcqSequenceThread() {}
int svc(void);
void SetInterval(double intervalMs) {intervalMs_ = intervalMs;}
void SetWaitTime (long waitTime) { waitTime_ = waitTime;}
void SetTimeOut (long imageTimeOut) { imageTimeOut_ = imageTimeOut;}
void SetLength(long images) {numImages_ = images;}
void Stop() {stop_ = true;}
void Start() {stop_ = false; activate();}
private:
AndorCamera* camera_;
double intervalMs_;
long numImages_;
long waitTime_;
long imageTimeOut_;
bool busy_;
bool stop_;
};
class DriverGuard
{
public:
DriverGuard(const AndorCamera * cam);
~DriverGuard();
};
#endif //_ANDOR_H_

View File

@@ -0,0 +1,20 @@
--- DeviceAdapters/configure.in.orig 2012-10-12 18:35:21.972213090 -0400
+++ DeviceAdapters/configure.in 2012-10-12 18:38:07.693141288 -0400
@@ -131,13 +131,13 @@
# Andor cameras on linux
AC_MSG_CHECKING(for Andor cameras)
-AM_CONDITIONAL([BUILD_ANDOR],[test -f "/usr/local/include/atmcdLXd.h"])
-if test -f "/usr/local/include/atmcdLXd.h" ; then
+AC_SEARCH_LIBS([SaveAsSif], [andor], ANDORFOUND=yes, AC_MSG_RESULT([not found]))
+AM_CONDITIONAL([BUILD_ANDOR], [test x$ANDORFOUND = xyes])
+if test x$ANDORFOUND = xyes ; then
AC_MSG_RESULT([found])
-else
- AC_MSG_RESULT([not found])
fi
+
# Andor laser combiner on linux
AC_MSG_CHECKING(for Andor laser combiner)
AM_CONDITIONAL([BUILD_ANDORLASERCOMBINER],[test -f "/usr/local/include/ALC_REV.h"])

View File

@@ -0,0 +1,11 @@
--- DeviceAdapters/SerialManager/SerialManager.cpp.orig 2012-12-10 17:58:08.166318377 -0500
+++ DeviceAdapters/SerialManager/SerialManager.cpp 2012-12-10 18:00:00.672911852 -0500
@@ -195,7 +195,7 @@
struct dirent *pent;
if (pdir) {
while (pent = readdir(pdir)) {
- if ( (strstr(pent->d_name, "ttyS") != 0) || (strstr(pent->d_name, "ttyUSB") != 0) ) {
+ if ( (strstr(pent->d_name, "ttyS") != 0) || (strstr(pent->d_name, "ttyUSB") != 0) || (strstr(pent->d_name, "ttyACM") != 0) ) {
std::string p = ("/dev/");
p.append(pent->d_name);
if (portAccessible(p.c_str()))

View File

@@ -0,0 +1,24 @@
--- MMCore/FastLogger.cpp.orig 2012-09-28 21:38:41.510071984 -0400
+++ MMCore/FastLogger.cpp 2012-09-28 21:41:08.738231368 -0400
@@ -39,6 +39,12 @@
#else
#endif
#include "boost/interprocess/detail/os_thread_functions.hpp"
+#include "boost/version.hpp"
+#if BOOST_VERSION >= 104800
+# define BOOST_IPC_DETAIL boost::interprocess::ipcdetail
+#else
+# define BOOST_IPC_DETAIL boost::interprocess::detail
+#endif
using namespace std;
const char* g_textLogIniFiled = "Logging initialization failed\n";
@@ -469,7 +475,7 @@
}
// display the process id
- boost::interprocess::detail::OS_process_id_t pidd = boost::interprocess::detail::get_current_process_id();
+ BOOST_IPC_DETAIL::OS_process_id_t pidd = BOOST_IPC_DETAIL::get_current_process_id();
std::ostringstream percentPReplacement;
percentPReplacement << pidd;

View File

@@ -0,0 +1,10 @@
--- a/buildscripts/buildprops.xml 2015-04-29 15:18:04.808204789 -0400
+++ b/buildscripts/buildprops.xml 2015-04-29 15:17:38.118204302 -0400
@@ -133,6 +133,7 @@
<sysproperty key="clojure.compile.path" value="@{destdir}"/>
<sysproperty key="java.library.path" value="${mm.build.java.library.path}"/>
<sysproperty key="java.awt.headless" value="true"/>
+ <sysproperty key="java.util.prefs.userRoot" value="@{destdir}"/>
<classpath>
<pathelement location="@{destdir}"/>
<pathelement location="@{srcdir}"/>

View File

@@ -0,0 +1,17 @@
--- buildscripts/buildprops.xml 2015-01-30 14:24:07.000000000 -0500
+++ buildscripts/buildprops.xml.new 2015-04-28 17:56:34.096801301 -0400
@@ -17,10 +17,12 @@
</classpath>
</taskdef>
+ <property name="mm.build.java.lib.junit" location="${mm.basedir}/dependencies/builddeps/junit-4.11.jar"/>
+ <property name="mm.build.java.lib.hamcrest-core" location="${mm.basedir}/dependencies/builddeps/hamcrest-core-1.3.jar"/>
<path id="mm.junit.classpath">
<!-- TODO Get this list from Ivy -->
- <pathelement location="${mm.basedir}/dependencies/builddeps/junit-4.11.jar"/>
- <pathelement location="${mm.basedir}/dependencies/builddeps/hamcrest-core-1.3.jar"/>
+ <pathelement location="${mm.build.java.lib.junit}"/>
+ <pathelement location="${mm.build.java.lib.hamcrest-core}"/>
</path>
<!-- Global definitions for building Micro-Manager -->

View File

@@ -0,0 +1,11 @@
--- Makefile.am 2015-04-29 16:49:53.848305346 -0400
+++ Makefile.am.new 2015-04-29 18:29:52.548414841 -0400
@@ -123,7 +123,7 @@
$(MMCOREPY_DIR) \
$(JAVA_APP_DIRS) \
DeviceAdapters \
- $(SYSTEMTEST_DIR)
+ $(SYSTEMTEST_DIR) \
bindist

View File

@@ -0,0 +1,10 @@
--- MMCorePy_wrap/setup.py.orig 2013-07-06 09:51:46.956669810 -0400
+++ MMCorePy_wrap/setup.py 2013-07-06 09:54:03.096967822 -0400
@@ -26,6 +26,7 @@
'../MMCore/MMCore.cpp',
'../MMCore/PluginManager.cpp'],
language = "c++",
+ libraries = ['z'],
extra_objects = [],
include_dirs = ["/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/numpy/core/include/numpy"]
)

View File

@@ -0,0 +1,40 @@
--- a/Makefile.am 2015-01-30 14:24:07.000000000 -0500
+++ b/Makefile.am 2015-03-27 12:30:07.113123642 -0400
@@ -22,9 +22,6 @@
MMCOREPY_DIR = MMCorePy_wrap
endif
-if BUILD_SECRETDEVICEADAPTERS
-SECRETDEVICEADAPTERS = SecretDeviceAdapters
-endif
if BUILD_JAVA_APP
@@ -126,7 +123,6 @@
$(MMCOREPY_DIR) \
$(JAVA_APP_DIRS) \
DeviceAdapters \
- $(SECRETDEVICEADAPTERS) \
$(SYSTEMTEST_DIR)
bindist
--- a/configure.ac 2015-01-30 14:24:07.000000000 -0500
+++ b/configure.ac 2015-03-27 12:30:19.193123863 -0400
@@ -370,16 +370,8 @@
## Subdirectory configuration
##
-AC_MSG_CHECKING([for proprietary device adapter source])
-AS_IF([test -f "$srcdir/SecretDeviceAdapters/configure"],
- [build_secretdeviceadapters=yes], [build_secretdeviceadapters=no])
-AM_CONDITIONAL([BUILD_SECRETDEVICEADAPTERS],
- [test "x$build_secretdeviceadapters" = xyes])
-
+build_secretdeviceadapters=no
AC_CONFIG_SUBDIRS([DeviceAdapters])
-AS_IF([test "x$build_secretdeviceadapters" = xyes], [
- AC_CONFIG_SUBDIRS([SecretDeviceAdapters])
-])
AC_CONFIG_SUBDIRS([DeviceKit])