Merge track:sources/git-damaris

This commit is contained in:
Markus Rosenstihl 2017-02-07 22:29:56 +01:00
commit 80e426bac5
15 changed files with 50 additions and 195 deletions

View File

@ -8,7 +8,10 @@ include(GNUInstallDirs)
# SET(CMAKE_INSTALL_PREFIX /usr/local CACHE PATH "Set install prefix" FORCE) # SET(CMAKE_INSTALL_PREFIX /usr/local CACHE PATH "Set install prefix" FORCE)
#ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) #ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshadow -Wall -O0 -g -DSPC_DEBUG=0") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wshadow -Wall -O0 -g")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -Wshadow -Wall -O0 -g")
#set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wshadow -Wall -O0 -g -DSP_DEBUG -DSPC_DEBUG")
set(CPACK_PACKAGING_INSTALL_PREFIX "/") set(CPACK_PACKAGING_INSTALL_PREFIX "/")
#set(CMAKE_INSTALL_PREFIX "/") #set(CMAKE_INSTALL_PREFIX "/")

3
clean.sh Normal file
View File

@ -0,0 +1,3 @@
#!/bin/bash
dpkg-buildpackage -rfakeroot -Tclean

View File

@ -1,52 +0,0 @@
override_dh_auto_configure dh_auto_configure
dh_auto_configure
dh_auto_build
dh_auto_test
dh_prep
dh_installdirs
dh_auto_install
override_dh_install dh_install
override_dh_install dh_installmodules
dh_install
dh_installdocs
dh_installchangelogs
dh_installexamples
dh_installman
dh_installcatalogs
dh_installcron
dh_installdebconf
dh_installemacsen
dh_installifupdown
dh_installinfo
dh_pysupport
dh_installinit
dh_installmenu
dh_installmime
dh_installmodules
dh_installlogcheck
dh_installlogrotate
dh_installpam
dh_installppp
dh_installudev
dh_installwm
dh_installgsettings
dh_bugfiles
dh_ucf
dh_lintian
dh_gconf
dh_icons
dh_perl
dh_usrlocal
dh_link
dh_installxfonts
dh_compress
dh_fixperms
dh_strip
dh_makeshlibs
dh_shlibdeps
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_builddeb

View File

@ -1,2 +0,0 @@
shlibs:Depends=libc6 (>= 2.14), libexpat1 (>= 2.0.1), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.12.0), libstdc++6 (>= 4.9), libxerces-c3.1
misc:Depends=

View File

@ -1,52 +0,0 @@
override_dh_auto_configure dh_auto_configure
dh_auto_configure
dh_auto_build
dh_auto_test
dh_prep
dh_installdirs
dh_auto_install
override_dh_install dh_install
override_dh_install dh_installmodules
dh_install
dh_installdocs
dh_installchangelogs
dh_installexamples
dh_installman
dh_installcatalogs
dh_installcron
dh_installdebconf
dh_installemacsen
dh_installifupdown
dh_installinfo
dh_pysupport
dh_installinit
dh_installmenu
dh_installmime
dh_installmodules
dh_installlogcheck
dh_installlogrotate
dh_installpam
dh_installppp
dh_installudev
dh_installwm
dh_installgsettings
dh_bugfiles
dh_ucf
dh_lintian
dh_gconf
dh_icons
dh_perl
dh_usrlocal
dh_link
dh_installxfonts
dh_compress
dh_fixperms
dh_strip
dh_makeshlibs
dh_shlibdeps
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dh_builddeb
dh_builddeb

View File

@ -1,31 +0,0 @@
# Automatically added by dh_installmodules
if [ "$1" = "configure" ]; then
if [ -e /boot/System.map-4.8.0-0.bpo.2-amd64 ]; then
depmod -a -F /boot/System.map-4.8.0-0.bpo.2-amd64 4.8.0-0.bpo.2-amd64 || true
fi
fi
# End automatically added section
# Automatically added by dh_installinit
if [ -x "/etc/init.d/damaris-modules" ]; then
update-rc.d damaris-modules defaults >/dev/null
invoke-rc.d damaris-modules start || exit $?
fi
# End automatically added section
# Automatically added by dh_installmodules
if [ "$1" = "configure" ]; then
if [ -e /boot/System.map-4.8.0-0.bpo.2-amd64 ]; then
depmod -a -F /boot/System.map-4.8.0-0.bpo.2-amd64 4.8.0-0.bpo.2-amd64 || true
fi
fi
# End automatically added section
# Automatically added by dh_installudev
if [ "$1" = configure ]; then
if [ -e "/etc/udev/rules.d/z60_damaris-modules.rules" ]; then
echo "Preserving user changes to /etc/udev/rules.d/60-damaris-modules.rules ..."
if [ -e "/etc/udev/rules.d/60-damaris-modules.rules" ]; then
mv -f "/etc/udev/rules.d/60-damaris-modules.rules" "/etc/udev/rules.d/60-damaris-modules.rules.dpkg-new"
fi
mv -f "/etc/udev/rules.d/z60_damaris-modules.rules" "/etc/udev/rules.d/60-damaris-modules.rules"
fi
fi
# End automatically added section

View File

@ -1,22 +0,0 @@
# Automatically added by dh_installmodules
if [ -e /boot/System.map-4.8.0-0.bpo.2-amd64 ]; then
depmod -a -F /boot/System.map-4.8.0-0.bpo.2-amd64 4.8.0-0.bpo.2-amd64 || true
fi
# End automatically added section
# Automatically added by dh_installinit
if [ "$1" = "purge" ] ; then
update-rc.d damaris-modules remove >/dev/null
fi
# In case this system is running systemd, we make systemd reload the unit files
# to pick up changes.
if [ -d /run/systemd/system ] ; then
systemctl --system daemon-reload >/dev/null || true
fi
# End automatically added section
# Automatically added by dh_installmodules
if [ -e /boot/System.map-4.8.0-0.bpo.2-amd64 ]; then
depmod -a -F /boot/System.map-4.8.0-0.bpo.2-amd64 4.8.0-0.bpo.2-amd64 || true
fi
# End automatically added section

View File

@ -1,11 +0,0 @@
# Automatically added by dh_installudev
if [ "$1" = install ] || [ "$1" = upgrade ]; then
if [ -e "/etc/udev/rules.d/z60_damaris-modules.rules" ]; then
if [ "`md5sum \"/etc/udev/rules.d/z60_damaris-modules.rules\" | sed -e \"s/ .*//\"`" = \
"`dpkg-query -W -f='${Conffiles}' damaris-modules | sed -n -e \"\\\\' /etc/udev/rules.d/z60_damaris-modules.rules '{s/ obsolete$//;s/.* //p}\"`" ]
then
rm -f "/etc/udev/rules.d/z60_damaris-modules.rules"
fi
fi
fi
# End automatically added section

View File

@ -1,5 +0,0 @@
# Automatically added by dh_installinit
if [ -x "/etc/init.d/damaris-modules" ]; then
invoke-rc.d damaris-modules stop || exit $?
fi
# End automatically added section

View File

@ -1 +0,0 @@
misc:Depends=

2
debian/files vendored
View File

@ -1,2 +0,0 @@
damaris-backends_0.16+nmu803_amd64.deb science optional
damaris-modules_0.16+nmu803_amd64.deb science optional

View File

@ -48,3 +48,8 @@ else()
endif() endif()
add_library(Spectrum_MI40xxSeries STATIC Spectrum-MI40xxSeries.cpp GatedData.cpp ${SPC_HEADERS}) add_library(Spectrum_MI40xxSeries STATIC Spectrum-MI40xxSeries.cpp GatedData.cpp ${SPC_HEADERS})
#add_executable(hw_test_ext hw_test_extclock.cpp GatedData.cpp)
#target_sources(hw_test_ext PRIVATE ${SPC_HEADERS})
#add_executable(hw_test_int hw_test_intclock.cpp GatedData.cpp)
#target_include_directories(hw_test_int ${SPC_HEADERS})

View File

@ -5,6 +5,7 @@ AR=ar
SPC_HEADERS = include/spcerr.h include/regs.h include/dlltyp.h include/spcioctl.inc SPC_HEADERS = include/spcerr.h include/regs.h include/dlltyp.h include/spcioctl.inc
SPC_ZIP = ../Spectrum-M2i40xxSeries/drv_spcm_linux_drv_v214b5633.zip SPC_ZIP = ../Spectrum-M2i40xxSeries/drv_spcm_linux_drv_v214b5633.zip
#SPC_ZIP = ../Spectrum-MI40xxSeries/drv_header_v402b6844.zip
all: clean $(SPC_HEADERS) patch Spectrum-MI40xxSeries.a hw_test_int hw_test_ext all: clean $(SPC_HEADERS) patch Spectrum-MI40xxSeries.a hw_test_int hw_test_ext

View File

@ -142,7 +142,7 @@ if (name == NULL) { FreeLibrary(spectrum_driver_dll); \
/* print lines with useful information: */ /* print lines with useful information: */
fprintf(stderr, "Spectrum MI40xx series board with %d byte memory\n", memory_size); fprintf(stderr, "Spectrum MI40xx series board with %d byte memory\n", memory_size);
fprintf(stderr, fprintf(stderr,
" impedance set to %g Ohm\n expecting trigger on id=%d ttls=0x%lx\n external clock frequency set to %g Hz\n", " impedance set to %g Ohm\n expecting trigger on id=%d ttl=0x%lx\n external clock frequency is %f Hz\n",
impedance, impedance,
t_line.id, t_line.id,
t_line.ttls.to_ulong(), t_line.ttls.to_ulong(),
@ -178,12 +178,13 @@ void SpectrumMI40xxSeries::collect_config_recursive(state_sequent& exp, Spectrum
settings.data_structure=where_to_append; settings.data_structure=where_to_append;
collect_config_recursive(*a_sequence, settings); collect_config_recursive(*a_sequence, settings);
settings.data_structure=tmp_structure; settings.data_structure=tmp_structure;
//} /* end working on sequence */ } /* end working on sequence */
//else { else {
// found a state, not a sequence // found a state, not a sequence
settings.timeout+=a_state->length; settings.timeout+=a_state->length;
#if SPC_DEBUG #if SPC_DEBUG
fprintf(stderr,"SETTINGS %e %e\n",settings.timeout,a_state->length); fprintf(stderr,"SETTINGS %e %e\n",settings.timeout, a_state->length);
#endif #endif
// collect analogin sections in state // collect analogin sections in state
std::list<analogin*> inputs; std::list<analogin*> inputs;
@ -533,6 +534,7 @@ void SpectrumMI40xxSeries::set_daq(state & exp) {
/* nothing to do! */ /* nothing to do! */
if (sampleno==0) { if (sampleno==0) {
fprintf(stderr, "oops, no sample number\n");
delete conf; delete conf;
effective_settings=NULL; effective_settings=NULL;
return; return;

View File

@ -36,6 +36,7 @@ class general_hardware: public hardware
PTS* my_pts; PTS* my_pts;
SpinCorePulseBlaster24Bit* my_pulseblaster; SpinCorePulseBlaster24Bit* my_pulseblaster;
SpectrumMI40xxSeries* my_adc; SpectrumMI40xxSeries* my_adc;
bool with_sync;
public: public:
general_hardware() general_hardware()
@ -91,6 +92,7 @@ public:
USRCONF = 1; USRCONF = 1;
if (!(SYSCONF | USRCONF)) if (!(SYSCONF | USRCONF))
throw(core_exception("configuration failed!\n")); throw(core_exception("configuration failed!\n"));
printf("done!\n"); printf("done!\n");
/* configure ADC card */ /* configure ADC card */
ttlout trigger; ttlout trigger;
@ -98,8 +100,7 @@ public:
if (error) if (error)
g_error(error->message); g_error(error->message);
error = NULL; error = NULL;
//g_error(error->message); trigger.ttls = (channel_array) (1 << g_key_file_get_integer(cfg_file, "ADC", "trigger_line", &error));
trigger.ttls = 1 << g_key_file_get_integer(cfg_file, "ADC", "trigger_line", &error);
if (error) if (error)
g_error(error->message); g_error(error->message);
error = NULL; error = NULL;
@ -112,7 +113,7 @@ public:
g_error(error->message); g_error(error->message);
error = NULL; error = NULL;
my_adc = new SpectrumMI40xxSeries(trigger, impedance, ext_reference_clock); my_adc = new SpectrumMI40xxSeries(trigger, (float) impedance, ext_reference_clock);
/* configure PulseBlaster */ /* configure PulseBlaster */
int pb_id = g_key_file_get_integer(cfg_file, "PB", "id", &error); int pb_id = g_key_file_get_integer(cfg_file, "PB", "id", &error);
@ -128,11 +129,15 @@ public:
g_error(error->message); g_error(error->message);
error = NULL; error = NULL;
int pb_sync = 0; int pb_sync = 0;
if (pb_sync_bit != 128) if (pb_sync_bit != 128) {
pb_sync = 1 << pb_sync_bit; pb_sync = 1 << pb_sync_bit;
with_sync = 1;
my_pulseblaster = new SpinCorePulseBlaster24Bit(pb_id, pb_refclock, pb_sync); my_pulseblaster = new SpinCorePulseBlaster24Bit(pb_id, pb_refclock, pb_sync);
}
else {
with_sync = 0;
my_pulseblaster = new SpinCorePulseBlaster24Bit(pb_id, pb_refclock,0);
}
/* configure PTS */ /* configure PTS */
int pts_id = g_key_file_get_integer(cfg_file, "PTS", "id", &error); int pts_id = g_key_file_get_integer(cfg_file, "PTS", "id", &error);
if (error) if (error)
@ -140,7 +145,7 @@ public:
error = NULL; error = NULL;
my_pts = new PTS_latched(pts_id); my_pts = new PTS_latched(pts_id);
// PTS 500 has 0.36 or 0.72 above 200MHz ; PTS 310 has 0.225 degrees/step // PTS 500 has 0.36 or 0.72 above 200MHz ; PTS 310 has 0.225 degrees/step
my_pts->phase_step = g_key_file_get_double(cfg_file, "PTS", "phase_stepsize", &error); my_pts->phase_step = (float) g_key_file_get_double(cfg_file, "PTS", "phase_stepsize", &error);
if (error) if (error)
g_error(error->message); g_error(error->message);
error = NULL; error = NULL;
@ -158,22 +163,36 @@ public:
{ {
state* work_copy = exp.copy_flat(); state* work_copy = exp.copy_flat();
if (work_copy == NULL) if (work_copy == NULL)
return new error_result(1, "could create work copy of experiment sequence"); return new error_result(1, "could not create work copy of experiment sequence");
try try
{ {
if (the_fg != NULL) if (the_fg != NULL)
the_fg->set_frequency(*work_copy); the_fg->set_frequency(*work_copy);
if (the_adc != NULL) if (the_adc != NULL)
the_adc->set_daq(*work_copy); the_adc->set_daq(*work_copy);
else
throw ADC_exception("the_adc == NULL\n");
// the pulse generator is necessary // the pulse generator is necessary
if (with_sync) {
my_pulseblaster->run_pulse_program_w_sync(*work_copy, my_adc->get_sample_clock_frequency()); my_pulseblaster->run_pulse_program_w_sync(*work_copy, my_adc->get_sample_clock_frequency());
}
else {
//experiment_prepare_dacs(work_copy);
//experiment_run_pulse_program(work_copy);
the_pg->run_pulse_program(*work_copy);
}
// wait for pulse generator // wait for pulse generator
the_pg->wait_till_end(); the_pg->wait_till_end();
// after that, the result must be available // after that, the result must be available
if (the_adc != NULL) if (the_adc != NULL) {
r = the_adc->get_samples(); r = the_adc->get_samples();
else }
else {
r = new adc_result(1, 0, NULL); r = new adc_result(1, 0, NULL);
throw ADC_exception("ADC result not available");
}
} }
catch (const RecoverableException &e) catch (const RecoverableException &e)
{ {