...
 
Commits (54)
......@@ -125,11 +125,14 @@ mod_version_data = {
'basler': 'camera/basler/VERSION',
'prosilica': 'camera/prosilica/VERSION',
'andor': 'camera/andor/VERSION',
'andor3': 'camera/andor3/VERSION',
'perkinelmer': 'camera/perkinelmer/VERSION',
'xpad': 'camera/xpad/VERSION',
'pco': 'camera/pco/VERSION',
'ueye': 'camera/ueye/VERSION',
'simulator': 'camera/simulator/VERSION',
'roperscientific': 'camera/roperscientific/VERSION',
'rayonixhs': 'camera/rayonixhs/VERSION',
'taco/camera/frelon': 'applications/taco/VERSION',
'tango/common': 'applications/tango/VERSION',
'tango/camera/maxipix': 'applications/tango/camera/Maxipix_VERSION',
......@@ -138,11 +141,15 @@ mod_version_data = {
'tango/camera/basler': 'applications/tango/camera/Basler_VERSION',
'tango/camera/prosilica': 'applications/tango/camera/Prosilica_VERSION',
'tango/camera/andor': 'applications/tango/camera/Andor_VERSION',
'tango/camera/andor3': 'applications/tango/camera/Andor3_VERSION',
'tango/camera/perkinelmer': 'applications/tango/camera/PerkinElmer_VERSION',
'tango/camera/xpad': 'applications/tango/camera/Xpad_VERSION',
'tango/camera/pco': 'applications/tango/camera/Pco_VERSION',
'tango/camera/ueye': 'applications/tango/camera/Ueye_VERSION',
'tango/camera/simulator': 'applications/tango/camera/Simulator_VERSION',
'tango/camera/andor3': 'applications/tango/camera/Andor3_VERSION',
'tango/camera/rayonixhs': 'applications/tango/camera/RayonixHs_VERSION',
'tango/camera/roperscientific': 'applications/tango/camera/RoperScientific_VERSION',
}
windows_plugins = ['pco', 'perkinelmer']
......
Subproject commit 53d9079fde9fac634e5c24bcd7bbf5028bdf95b0
Subproject commit 519ea7a708695550499930fbc4fa53a1b93d493c
Subproject commit b28cd1fbda950919f519963665392298ddbf5ac5
Subproject commit 043fbb3c61f832c05327fe3e247041b28796445e
Subproject commit 8789c8f229dc95c3be02b7845e347566f3756120
Subproject commit 9c52e749543d6355bcd674fa381a0e037dde74c5
Subproject commit 60a9fe929a931ab8a035eeeab67639728114f0e5
Subproject commit 40aaba2d2005ccc99f62ea6645a97d94a86c5fdd
Subproject commit 7b5f79acc437f05e5c2aa48fb41931630944d097
Subproject commit e822196af09e6d5667d4a110ba97582f6db40627
Subproject commit e05bde7dbb401285f0a8a39c265878a0360d9fed
Subproject commit 53bb07ca9f009f9c39b7bd4e47f8d4c0e5ea03eb
Subproject commit 03be3bbad8e9191eced8e1a4429f3bb83d4aff2c
Subproject commit b3e02ca4707e45de9fd19c7530497234b9cf070d
Subproject commit 24c5591982cbbc3b6930001dceaea32547539531
Subproject commit ee418814a33cc279dc7d91dab2a0898b7b42e8ac
Subproject commit 8443e82f432b5d4bf1e59b9e6a29388b6b5681d4
Subproject commit 4482e20806f9df0c1940d56afb14d6a4b8bd13f7
Subproject commit 4e2d914d90900433d9abe2398017094b678045da
Subproject commit 39be733d9e93f5bcd5b8e898f7a311e99e110cb2
Subproject commit 5fa801d2c5ab9caac25517926f040c6264834851
Subproject commit 71555458bbf3dfc809b0ddc898a5f272c2a3283a
Subproject commit bd71489e7b3aa8e96ec1ed57e79b7b4f9392da63
Subproject commit 9500b169579b0344c8e9c6d2e368f98fef967d4c
Subproject commit 9ae3a002dccfbdf4065c99a9c3f016822992a633
Subproject commit f7472dab046b5d2fcf0ea48b12fed7c3d0d98edd
......@@ -30,7 +30,9 @@ COMPILE_PILATUS=0
COMPILE_BASLER=0
COMPILE_PROSILICA=0
COMPILE_ROPERSCIENTIFIC=0
COMPILE_MERLIN=0
COMPILE_MYTHEN=0
COMPILE_MYTHEN3=0
COMPILE_ADSC=0
COMPILE_UEYE=0
COMPILE_XH=0
......@@ -61,7 +63,8 @@ LINK_STRICT_VERSION=0
export COMPILE_CORE COMPILE_SPS_IMAGE COMPILE_SIMULATOR \
COMPILE_ESPIA COMPILE_FRELON COMPILE_MAXIPIX COMPILE_PILATUS \
COMPILE_BASLER COMPILE_PROSILICA COMPILE_ROPERSCIENTIFIC COMPILE_ADSC \
COMPILE_MYTHEN COMPILE_UEYE COMPILE_XH COMPILE_XSPRESS3 COMPILE_ULTRA COMPILE_XPAD COMPILE_PERKINELMER \
COMPILE_UEYE COMPILE_XH COMPILE_XSPRESS3 COMPILE_ULTRA COMPILE_XPAD COMPILE_PERKINELMER \
COMPILE_MERLIN COMPILE_MYTHEN COMPILE_MYTHEN3 \
COMPILE_ANDOR COMPILE_ANDOR3 COMPILE_PHOTONICSCIENCE COMPILE_PCO COMPILE_MARCCD COMPILE_DEXELA\
COMPILE_POINTGREY COMPILE_IMXPAD COMPILE_RAYONIXHS COMPILE_AVIEX COMPILE_META COMPILE_CBF_SAVING COMPILE_NXS_SAVING \
COMPILE_FITS_SAVING COMPILE_EDFGZ_SAVING COMPILE_TIFF_SAVING COMPILE_HDF5_SAVING COMPILE_CONFIG\
......
......@@ -281,7 +281,7 @@ namespace lima
#ifdef WITH_SPS_IMAGE
bool m_display_active_flag;
#endif
ImageStatusThread *m_img_status_thread;
std::list<ImageStatusThread*>* m_img_status_thread_list;
SoftOpErrorHandler* m_soft_op_error_handler;
_ReconstructionChangeCallback* m_reconstruction_cbk;
......
......@@ -24,7 +24,7 @@
#include "lima/CtBuffer.h"
#include "processlib/SinkTask.h"
#ifndef __unix
#include "SinkTaskMgr.i"
#include "processlib/SinkTaskMgr.i"
#endif
using namespace lima;
/****************************************************************************
......
......@@ -22,6 +22,8 @@
#include "lima/CtAcquisition.h"
#include "math.h"
#include <algorithm>
using std::max;
#define CHECK_EXPOTIME(val) \
if (val < m_valid_ranges.min_exp_time) \
......@@ -142,7 +144,6 @@ CtAcquisition::CtAcquisition(HwInterface *hw) :
CtAcquisition::~CtAcquisition()
{
DEB_DESTRUCTOR();
m_hw_sync->unregisterValidRangesCallback(m_valid_ranges_cb);
delete m_valid_ranges_cb;
}
......@@ -175,7 +176,7 @@ void CtAcquisition::reset()
DEB_MEMBER_FUNCT();
m_inpars.reset();
m_inpars.latencyTime = m_valid_ranges.min_lat_time;
m_inpars.latencyTime = 0;
m_applied_once= false;
//Check auto exposure capability
......@@ -249,6 +250,8 @@ void CtAcquisition::_hwRead()
m_hw_sync->getTrigMode(m_hwpars.triggerMode);
m_hw_sync->getExpTime(m_hwpars.acqExpoTime);
m_hw_sync->getLatTime(m_hwpars.latencyTime);
if (m_hwpars.latencyTime <= m_valid_ranges.min_lat_time)
m_hwpars.latencyTime = 0;
m_hw_sync->getNbFrames(m_hwpars.acqNbFrames);
switch (m_hwpars.acqMode) {
......@@ -276,7 +279,8 @@ void CtAcquisition::_apply()
m_hw_sync->setAcqMode(m_inpars.acqMode);
if (m_changes.triggerMode) m_hw_sync->setTrigMode(m_inpars.triggerMode);
if (m_changes.latencyTime) m_hw_sync->setLatTime(m_inpars.latencyTime);
double lat_time = max(m_inpars.latencyTime, m_valid_ranges.min_lat_time);
if (m_changes.latencyTime) m_hw_sync->setLatTime(lat_time);
if(m_changes.acqMode || m_changes.acqNbFrames)
{
......@@ -638,8 +642,8 @@ void CtAcquisition::setLatencyTime(double lat_time)
DEB_MEMBER_FUNCT();
DEB_PARAM() << DEB_VAR1(lat_time);
if (lat_time < m_valid_ranges.min_lat_time)
lat_time = m_valid_ranges.min_lat_time;
if (lat_time <= m_valid_ranges.min_lat_time)
lat_time = 0;
if (lat_time > m_valid_ranges.max_lat_time)
THROW_CTL_ERROR(InvalidValue)
<< "Specified latency time " << DEB_VAR1(lat_time) << " too long: "
......@@ -651,7 +655,7 @@ void CtAcquisition::getLatencyTime(double& time) const
{
DEB_MEMBER_FUNCT();
time= m_inpars.latencyTime;
time= max(m_inpars.latencyTime, m_valid_ranges.min_lat_time);
DEB_RETURN() << DEB_VAR1(time);
}
......
......@@ -184,12 +184,7 @@ CtControl::ImageStatusThread::ImageStatusThread(Cond& cond,
: m_cond(cond), m_cb(cb)
{
DEB_CONSTRUCTOR();
AutoMutex lock(m_cond.mutex());
start();
// wait thread is ready
m_cond.wait();
}
CtControl::ImageStatusThread::~ImageStatusThread()
......@@ -256,9 +251,6 @@ void CtControl::ImageStatusThread::threadFunction()
AutoMutex lock(m_cond.mutex());
// notify we're ready
m_cond.signal();
while (true) {
while (m_event_list.empty())
m_cond.wait();
......@@ -299,7 +291,7 @@ CtControl::CtControl(HwInterface *hw) :
m_images_buffer_size(16),
m_policy(All), m_ready(false),
m_autosave(false), m_running(false),
m_img_status_thread(NULL),
m_img_status_thread_list(new std::list<ImageStatusThread*>),
m_reconstruction_cbk(NULL)
{
DEB_CONSTRUCTOR();
......@@ -368,9 +360,14 @@ CtControl::~CtControl()
PoolThreadMgr& pool_thread_mgr = PoolThreadMgr::get();
pool_thread_mgr.wait();
if (m_img_status_thread)
unregisterImageStatusCallback(*m_img_status_thread->cb());
for(std::list<ImageStatusThread*>::iterator i = m_img_status_thread_list->begin();
i != m_img_status_thread_list->end();++i)
{
(*i)->cb()->setImageStatusCallbackGen(NULL);
delete *i;
}
delete m_img_status_thread_list;
if(m_reconstruction_cbk)
{
HwReconstructionCtrlObj* reconstruction_obj;
......@@ -392,6 +389,7 @@ CtControl::~CtControl()
delete m_ct_shutter;
delete m_ct_accumulation;
delete m_ct_video;
delete m_ct_event;
delete m_op_int;
delete m_op_ext;
......@@ -648,9 +646,12 @@ void CtControl::_calcAcqStatus()
DEB_TRACE() << DEB_VAR1(m_status);
}
if (m_img_status_thread && (m_status.AcquisitionStatus != AcqRunning)) {
if (!m_img_status_thread_list->empty() &&
(m_status.AcquisitionStatus != AcqRunning)) {
aLock.unlock();
m_img_status_thread->imageStatusChanged(m_status.ImageCounters, 1);
for(std::list<ImageStatusThread*>::iterator i = m_img_status_thread_list->begin();
i != m_img_status_thread_list->end();++i)
(*i)->imageStatusChanged(m_status.ImageCounters, 1);
return;
}
}
......@@ -875,8 +876,9 @@ void CtControl::resetStatus(bool only_acq_status)
m_status.AcquisitionStatus = AcqReady;
} else {
m_status.reset();
if (m_img_status_thread)
m_img_status_thread->imageStatusChanged(m_status.ImageCounters, 1);
for(std::list<ImageStatusThread*>::iterator i = m_img_status_thread_list->begin();
i != m_img_status_thread_list->end();++i)
(*i)->imageStatusChanged(m_status.ImageCounters, 1);
}
}
......@@ -914,8 +916,9 @@ bool CtControl::newFrameReady(Data& fdata)
if (!internal_stage)
newBaseImageReady(fdata);
if (m_img_status_thread)
m_img_status_thread->imageStatusChanged(m_status.ImageCounters);
for(std::list<ImageStatusThread*>::iterator i = m_img_status_thread_list->begin();
i != m_img_status_thread_list->end();++i)
(*i)->imageStatusChanged(m_status.ImageCounters);
_calcAcqStatus();
}
......@@ -963,8 +966,9 @@ void CtControl::newBaseImageReady(Data &aData)
m_ct_video->frameReady(aData);
if(m_img_status_thread)
m_img_status_thread->imageStatusChanged(m_status.ImageCounters);
for(std::list<ImageStatusThread*>::iterator i = m_img_status_thread_list->begin();
i != m_img_status_thread_list->end();++i)
(*i)->imageStatusChanged(m_status.ImageCounters);
_calcAcqStatus();
}
......@@ -1005,8 +1009,9 @@ void CtControl::newImageReady(Data &aData)
if(m_autosave)
newFrameToSave(aData);
if (m_img_status_thread)
m_img_status_thread->imageStatusChanged(m_status.ImageCounters);
for(std::list<ImageStatusThread*>::iterator i = m_img_status_thread_list->begin();
i != m_img_status_thread_list->end();++i)
(*i)->imageStatusChanged(m_status.ImageCounters);
_calcAcqStatus();
}
......@@ -1038,8 +1043,9 @@ void CtControl::newImageSaved(Data&)
}
aLock.unlock();
if (m_img_status_thread)
m_img_status_thread->imageStatusChanged(m_status.ImageCounters);
for(std::list<ImageStatusThread*>::iterator i = m_img_status_thread_list->begin();
i != m_img_status_thread_list->end();++i)
(*i)->imageStatusChanged(m_status.ImageCounters);
_calcAcqStatus();
}
......@@ -1053,29 +1059,52 @@ void CtControl::newFrameToSave(Data& fdata)
m_ct_saving->frameReady(fdata);
}
/** registerImageStatusCallback is not thread safe!!!
*/
void CtControl::registerImageStatusCallback(ImageStatusCallback& cb)
{
DEB_MEMBER_FUNCT();
DEB_PARAM() << DEB_VAR2(&cb, m_img_status_thread);
DEB_PARAM() << DEB_VAR1(&cb);
if (m_img_status_thread)
THROW_CTL_ERROR(InvalidValue) << "ImageStatusCallback already registered";
Status aStatus;
getStatus(aStatus);
if(aStatus.AcquisitionStatus == AcqRunning)
THROW_CTL_ERROR(Error) << "Can't register callback if acquisition is running";
ImageStatusThread *thread = new ImageStatusThread(m_cond, &cb);
AutoMutex aLock(m_cond.mutex());
cb.setImageStatusCallbackGen(this);
m_img_status_thread = new ImageStatusThread(m_cond, &cb);
m_img_status_thread_list->push_back(thread);
}
/** unregisterImageStatusCallback is not thread safe!!!
*/
void CtControl::unregisterImageStatusCallback(ImageStatusCallback& cb)
{
DEB_MEMBER_FUNCT();
DEB_PARAM() << DEB_VAR2(&cb, m_img_status_thread);
DEB_PARAM() << DEB_VAR1(&cb);
if (!m_img_status_thread || (m_img_status_thread->cb() != &cb))
THROW_CTL_ERROR(InvalidValue) << "ImageStatusCallback not registered";
Status aStatus;
getStatus(aStatus);
if(aStatus.AcquisitionStatus != AcqReady)
THROW_CTL_ERROR(Error) << "Can't unregister callback if acquisition is not idle";
AutoMutex aLock(m_cond.mutex());
bool found = false;
for(std::list<ImageStatusThread*>::iterator i = m_img_status_thread_list->begin();
i != m_img_status_thread_list->end();++i)
{
if((*i)->cb() == &cb)
{
found = true;
delete *i;
m_img_status_thread_list->erase(i);
cb.setImageStatusCallbackGen(NULL);
break;
}
}
delete m_img_status_thread;
m_img_status_thread = NULL;
cb.setImageStatusCallbackGen(NULL);
if (!found)
THROW_CTL_ERROR(InvalidValue) << "ImageStatusCallback not registered";
}
/** @brief this methode check if an overrun
......
......@@ -47,7 +47,7 @@ DataType get_h5_type(unsigned long long) {return PredType(PredType::NATIVE_UINT6
DataType get_h5_type(long long) {return PredType(PredType::NATIVE_INT64);}
DataType get_h5_type(float) {return PredType(PredType::NATIVE_FLOAT);}
DataType get_h5_type(double) {return PredType(PredType::NATIVE_DOUBLE);}
DataType get_h5_type(std::string& s) {return StrType(H5T_C_S1, s.size());}
DataType get_h5_type(std::string& s) {return StrType(H5T_C_S1, s.size()? s.size():1);}
DataType get_h5_type(bool) {return PredType(PredType::NATIVE_UINT8);}
template <class T>
......@@ -391,13 +391,13 @@ void SaveContainerHdf5::_close() {
}
m_already_opened = false;
m_format_written = false;
delete m_image_dataspace;
delete m_image_dataset;
delete m_measurement_detector;
delete m_measurement_detector_parameters;
delete m_instrument_detector;
delete m_entry;
delete m_file;
delete m_image_dataspace; m_image_dataspace = NULL;
delete m_image_dataset; m_image_dataset = NULL;
delete m_measurement_detector; m_measurement_detector = NULL;
delete m_instrument_detector; m_instrument_detector = NULL;
delete m_measurement_detector_parameters; m_measurement_detector_parameters = NULL;
delete m_entry; m_entry = NULL;
delete m_file; m_file = NULL;
DEB_TRACE() << "Close current file";
// increase the entry number for the next acquisition if MultiSet mode
m_entry_index++;
......@@ -465,7 +465,8 @@ void SaveContainerHdf5::_writeFile(Data &aData, CtSaving::HeaderMap &aHeader, Ct
write_h5_dataset(*m_measurement_detector_parameters,key.c_str(),value);
}
}
delete m_measurement_detector_parameters;m_measurement_detector_parameters = NULL;
// create the image data structure in the file
hsize_t data_dims[3], max_dims[3];
data_dims[1] = aData.dimensions[1];
......@@ -506,6 +507,7 @@ void SaveContainerHdf5::_writeFile(Data &aData, CtSaving::HeaderMap &aHeader, Ct
m_image_dataset->extend(data_dims);
m_image_dataspace->close();
delete m_image_dataset;
m_image_dataspace = new DataSpace(m_image_dataset->getSpace());
m_prev_images_written = allocated_dims[0];
m_dataset_extended = true;
......@@ -521,8 +523,8 @@ void SaveContainerHdf5::_writeFile(Data &aData, CtSaving::HeaderMap &aHeader, Ct
hsize_t count[] = { 1, aData.dimensions[1], aData.dimensions[0] };
m_image_dataspace->selectHyperslab(H5S_SELECT_SET, count, start);
m_image_dataset->write((u_int8_t*) aData.data(), data_type, slabspace, *m_image_dataspace);
// catch failure caused by the DataSet operations
// catch failure caused by the DataSet operations
} catch (DataSetIException& error) {
THROW_CTL_ERROR(Error) << "DataSet not created successfully " << error.getCDetailMsg();
error.printError();
......
......@@ -591,6 +591,12 @@ bool CtVideo::checkAutoGainMode(AutoGainMode mode) const
void CtVideo::getAutoGainModeList(AutoGainModeList& modes) const
{
DEB_MEMBER_FUNCT();
if(!m_has_video)
{
modes.push_back(OFF);
return;
}
int nb_modes = 0;
if(m_video->checkAutoGainMode(HwVideoCtrlObj::OFF))
modes.push_back(OFF),++nb_modes;
......
......@@ -67,15 +67,17 @@ public:
double min_lat_time, max_lat_time;
};
class ValidRangesCallback
class LIMACORE_API ValidRangesCallback
{
DEB_CLASS(DebModHardware,"HwSyncCtrlObj::ValidRangesCallback");
friend class HwSyncCtrlObj;
public:
virtual ~ValidRangesCallback() {};
ValidRangesCallback();
virtual ~ValidRangesCallback();
protected:
virtual void validRangesChanged(const HwSyncCtrlObj::ValidRangesType&) = 0;
private:
friend class HwSyncCtrlObj;
HwSyncCtrlObj* m_hw_sync;
};
HwSyncCtrlObj();
......
......@@ -54,6 +54,7 @@ sipRes = tmpString.c_str();
class ValidRangesCallback
{
public:
ValidRangesCallback();
virtual ~ValidRangesCallback();
protected:
virtual void validRangesChanged(const HwSyncCtrlObj::ValidRangesType&) = 0;
......
......@@ -24,16 +24,29 @@
using namespace lima;
HwSyncCtrlObj::ValidRangesCallback::ValidRangesCallback()
: m_hw_sync(NULL)
{
}
HwSyncCtrlObj::ValidRangesCallback::~ValidRangesCallback()
{
if (m_hw_sync)
m_hw_sync->unregisterValidRangesCallback(this);
}
HwSyncCtrlObj::HwSyncCtrlObj()
: m_acq_mode(Single),
m_valid_ranges_cb(NULL)
{
DEB_CONSTRUCTOR();
DEB_CONSTRUCTOR();
}
HwSyncCtrlObj::~HwSyncCtrlObj()
{
DEB_DESTRUCTOR();
DEB_DESTRUCTOR();
if (m_valid_ranges_cb)
unregisterValidRangesCallback(m_valid_ranges_cb);
}
bool HwSyncCtrlObj::checkAutoExposureMode(AutoExposureMode mode) const
......@@ -92,6 +105,7 @@ void HwSyncCtrlObj::registerValidRangesCallback(ValidRangesCallback *cb)
throw LIMA_CTL_EXC(InvalidValue,"ValidRangesCallback already registered");
}
cb->m_hw_sync = this;
m_valid_ranges_cb = cb;
}
......@@ -107,6 +121,7 @@ void HwSyncCtrlObj::unregisterValidRangesCallback(ValidRangesCallback *cb)
}
m_valid_ranges_cb = NULL;
cb->m_hw_sync = NULL;
}
std::ostream& lima::operator<<(std::ostream& os,const HwSyncCtrlObj::ValidRangesType &range)
......
......@@ -42,8 +42,10 @@ modules = [('core', ['common', 'hardware', 'control']),
('prosilica', [os.path.join('camera','prosilica')]),
('ueye', [os.path.join('camera','ueye')]),
('roperscientific', [os.path.join('camera','roperscientific')]),
('adsc', [os.path.join('camera','adsc')]),
('adsc', [os.path.join('camera','adsc')]),
('merlin', [os.path.join('camera','merlin')]),
('mythen', [os.path.join('camera','mythen')]),
('mythen3', [os.path.join('camera','mythen3')]),
('perkinelmer', [os.path.join('camera','perkinelmer')]),
('andor', [os.path.join('camera','andor')]),
('andor3', [os.path.join('camera','andor3')]),
......@@ -180,7 +182,8 @@ def main():
elif(modName == 'xpad'):
extraIncludes += ['../../third-party/yat/include','/home/xpix_user/PCI_VALIDATED/trunk/sw/xpci_lib']
elif(modName == 'xspress3'):
extraIncludes += ['../../third-party/hdf5/include']
extraIncludes += ['../../third-party/hdf5/c++/src']
extra_cxxflags += ['-DSIPCOMPILATION']
elif(modName == 'pco'):
extraIncludes += ['R:/bliss/projects/LIMA/package/WIN32/PCO/sdkPco/include']
elif(modName == 'marccd'):
......@@ -194,6 +197,8 @@ def main():
elif(modName == 'aviex'):
extra_cxxflags += ['-DOS_UNIX']
extraIncludes += findModuleIncludes(modName)
if (modName == 'roperscientific'):
extraIncludes.remove('../../camera/roperscientific/sdk/msvc/include')
sipFile = open(sipFileName,"a")
sipFile.write('\n')
......
Subproject commit 70f9a88b7f90b49fb37a686c594538158b7d4ab7
Subproject commit 4d2617af3b25b5033fe0ce807d36ef34f28f8681
......@@ -19,6 +19,12 @@ if platform.machine() == 'AMD64':
('camera/dexela/src/DexelaConfig.cfg','Lima'),
('camera/dexela/build/msvc/9.0/LibDexela/x64/Release/liblimadexela.dll','Lima'),
('sip/dexela/limadexela.pyd','Lima')],
'pco' : [('camera/pco/python/Pco.py','Lima'),
('camera/pco/build/msvc/9.0/liblimapco/x64/Release/liblimapco.dll','Lima'),
('camera/pco/sdkPco/bin64/SC2_Cam.dll','Lima'),
('camera/pco/sdkPco/bin64/sc2_cl_me4.dll','Lima'),
('applications/tango/python/camera/Pco.py','camera'),
('sip/pco/limapco.pyd','Lima')],
}
else:
module2Installfiles = {
......@@ -34,7 +40,7 @@ else:
('camera/pco/build/msvc/9.0/liblimapco/Release/liblimapco.dll','Lima'),
('camera/pco/sdkPco/bin/SC2_Cam.dll','Lima'),
('camera/pco/sdkPco/bin/sc2_cl_me4.dll','Lima'),
('applications/tango/camera/Pco.py','camera'),
('applications/tango/python/camera/Pco.py','camera'),
('sip/pco/limapco.pyd','Lima')],
'perkinelmer' : [('camera/perkinelmer/python/PerkinElmer.py','Lima'),
('camera/perkinelmer/build/msvc/9.0/LibPerkinElmer/Release/liblimaperkinelmer.dll','Lima'),
......@@ -52,14 +58,14 @@ else:
}
#Add Src
module2Installfiles.update({
'tango-core' : [('applications/tango/LimaCCDs.py',''),
('applications/tango/AttrHelper.py',''),
('applications/tango/EnvHelper.py',''),
('applications/tango/camera/__init__.py','camera'),
('applications/tango/plugins','')],
'tango-simulator' : [('applications/tango/camera/Simulator.py','camera')],
'tango-perkinelmer' : [('applications/tango/camera/PerkinElmer.py','camera')],
'tango-dexela' : [('applications/tango/camera/Dexela.py','camera')],
'tango-core' : [('applications/tango/python/LimaCCDs.py',''),
('applications/tango/python/AttrHelper.py',''),
('applications/tango/python/EnvHelper.py',''),
('applications/tango/python/camera/__init__.py','camera'),
('applications/tango/python/plugins','')],
'tango-simulator' : [('applications/tango/python/camera/Simulator.py','camera')],
'tango-perkinelmer' : [('applications/tango/python/camera/PerkinElmer.py','camera')],
'tango-dexela' : [('applications/tango/python/camera/Dexela.py','camera')],
}
)
......@@ -75,7 +81,10 @@ def copyModule(filesList,baseDestPath) :
base,srcDir = os.path.split(src)
dst = os.path.join(dst,srcDir)
if os.access(dst,os.F_OK) :
shutil.rmtree(dst)
if os.path.isdir(dst):
shutil.rmtree(dst)
else:
os.unlink(dst)
shutil.copytree(src,dst)
print 'Copytree',src,dst
elif not os.access(src,os.F_OK) :
......