Fixing GPS tubeheater #1

Merged
soederqvist_a merged 3 commits from try-fixing-tubeheater into main 2026-10-29 16:46:42 +01:00
8 changed files with 237 additions and 231 deletions

No files matched your search

+3 -3
View File
@@ -1,3 +1,3 @@
[submodule "lan_gpib_vxi11"]
path = lan_gpib_vxi11
url = git@gitea.psi.ch:lin-midas-drivers/lan_gpib_vxi11.git
[submodule "midas_lan_gpib"]
path = midas_lan_gpib
url = git@gitea.psi.ch:lin-midas-drivers/midas_lan_gpib.git
+219 -216
View File
@@ -12,7 +12,7 @@ add_compile_options(
)
option(
BUILD_FRONTENDS
BUILD_FRONTEND
"If ON, build the default frontend executable"
OFF
)
@@ -20,29 +20,10 @@ option(
set(CMAKE_PREFIX_PATH "$ENV{MIDASSYS}")
find_package(Midas REQUIRED)
set(
DRIVERS
$ENV{MIDASSYS}/drivers/class/generic.cxx
)
set(SYS_LIBS
pthread
util
rt
dl
)
set(MIDAS_LIBS
midas::mfe
midas::midas
midas::mscb
)
set(LIBS ${SYS_LIBS} ${MIDAS_LIBS})
#guard against multiple include
if(NOT TARGET lan_gpib_vxi11_linux_64bit)
add_subdirectory(lan_gpib_vxi11)
if(NOT TARGET midas_lan_gpib)
add_subdirectory(midas_lan_gpib)
endif()
################################################################################
@@ -50,37 +31,35 @@ endif()
################################################################################
function(add_keysight_library name)
set(SOURCES
device/keysight_e3610xa.cxx
${DRIVERS}
)
list(FIND ARGN VXI11_SUPPORT HAS_VXI11)
if(NOT HAS_VXI11 EQUAL -1)
list(APPEND SOURCES bus/midas_vxi11.cxx)
endif()
add_library(${name}
${SOURCES}
device/keysight_e3610xa.cxx
)
if(NOT HAS_VXI11 EQUAL -1)
target_link_libraries(${name} PUBLIC lan_gpib_vxi11_linux_64bit)
message(STATUS "All arguments: ${ARGN}")
if(VXI11_SUPPORT IN_LIST ARGN)
target_link_libraries(${name} PUBLIC midas_lan_gpib)
endif()
target_compile_definitions(${name} PRIVATE ${ARGN})
# Check remaining arguments for compile definitions
foreach(arg IN LISTS ARGN)
target_compile_definitions(${name} PRIVATE ${arg})
endforeach()
target_link_libraries(${name}
PUBLIC
${LIBS}
${TIRPC_LIBRARIES}
pthread
util
rt
dl
midas::mfe
midas::midas
midas::mscb
)
target_include_directories(${name}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/device>
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE
$ENV{MIDASSYS}/drivers
)
endfunction()
@@ -88,203 +67,227 @@ add_keysight_library(keysight_e3610xa)
add_keysight_library(keysight_e3610xa_flow FLOW_SUPPORT)
add_keysight_library(keysight_e3610xa_volt VOLT_SUPPORT)
add_keysight_library(keysight_e3610xa_amp AMPERE_SUPPORT)
add_keysight_library(keysight_e3610xa_voltamp VOLTAMPERE_SUPPORT)
add_keysight_library(keysight_e3610xa_vxi11 VXI11_SUPPORT)
add_keysight_library(keysight_e3610xa_voltamp VOLTAMPERE_SUPPORT E3610XA_OUTPUT_CHAN VXI11_SUPPORT)
################################################################################
## Test Frontends
## Default Frontends
################################################################################
if(${BUILD_FRONTENDS})
set(_DEFAULT_KEYSIGHT_E3610XA_FRONTEND_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE INTERNAL "")
# ============================================================================
# Frontend keysight_e3610xa_heflowks0_fe
add_executable(
keysight_e3610xa_heflowks0_fe
frontend/keysight_e3610xa_heflowks0_scfe.cxx
)
set_property(
TARGET
keysight_e3610xa_heflowks0_fe
PROPERTY
CXX_STANDARD 11
)
target_include_directories(
keysight_e3610xa_heflowks0_fe
PRIVATE
$ENV{MIDASSYS}/drivers
)
target_link_libraries(
keysight_e3610xa_heflowks0_fe
keysight_e3610xa
keysight_e3610xa_flow
)
# ============================================================================
# Frontend keysight_e3610xa_ksamp0_fe
add_executable(
keysight_e3610xa_ksamp0_fe
frontend/keysight_e3610xa_ksamp0_scfe.cxx
)
set_property(
TARGET
keysight_e3610xa_ksamp0_fe
PROPERTY
CXX_STANDARD 11
)
target_include_directories(
keysight_e3610xa_ksamp0_fe
PRIVATE
$ENV{MIDASSYS}/drivers
)
target_link_libraries(
keysight_e3610xa_ksamp0_fe
keysight_e3610xa
keysight_e3610xa_amp
keysight_e3610xa_vxi11
)
# ============================================================================
# Frontend keysight_e3610xa_ksva0_fe
add_executable(
keysight_e3610xa_ksva0_fe
frontend/keysight_e3610xa_ksva0_scfe.cxx
)
set_property(
TARGET
keysight_e3610xa_ksva0_fe
PROPERTY
CXX_STANDARD 11
)
target_include_directories(
keysight_e3610xa_ksva0_fe
PRIVATE
$ENV{MIDASSYS}/drivers
)
target_link_libraries(
keysight_e3610xa_ksva0_fe
keysight_e3610xa
keysight_e3610xa_voltamp
)
# ============================================================================
# Frontend keysight_e3610xa_ksva1_fe
add_executable(
keysight_e3610xa_ksva1_fe
frontend/keysight_e3610xa_ksva1_scfe.cxx
)
set_property(
TARGET
keysight_e3610xa_ksva1_fe
PROPERTY
CXX_STANDARD 11
)
target_include_directories(
keysight_e3610xa_ksva1_fe
PRIVATE
$ENV{MIDASSYS}/drivers
)
target_link_libraries(
keysight_e3610xa_ksva1_fe
keysight_e3610xa
keysight_e3610xa_vxi11
)
# ============================================================================
# Frontend keysight_e3610xa_ksvolt0_fe
add_executable(
keysight_e3610xa_ksvolt0_fe
frontend/keysight_e3610xa_ksvolt0_scfe.cxx
)
set_property(
TARGET
keysight_e3610xa_ksvolt0_fe
PROPERTY
CXX_STANDARD 11
)
target_include_directories(
keysight_e3610xa_ksvolt0_fe
PRIVATE
$ENV{MIDASSYS}/drivers
)
target_link_libraries(
keysight_e3610xa_ksvolt0_fe
keysight_e3610xa
keysight_e3610xa_volt
)
# ============================================================================
# Frontend keysight_e3610xa_ksvolt1_fe
add_executable(
keysight_e3610xa_ksvolt1_fe
frontend/keysight_e3610xa_ksvolt1_scfe.cxx
)
set_property(
TARGET
keysight_e3610xa_ksvolt1_fe
PROPERTY
CXX_STANDARD 11
)
target_include_directories(
keysight_e3610xa_ksvolt1_fe
PRIVATE
$ENV{MIDASSYS}/drivers
)
target_link_libraries(
keysight_e3610xa_ksvolt1_fe
keysight_e3610xa
keysight_e3610xa_vxi11
)
## The frontends below, if used anywhere, should be turned into functions
#
#if(${BUILD_FRONTEND})
#
# # ============================================================================
# # Frontend keysight_e3610xa_heflowks0_fe
#
# add_executable(
# keysight_e3610xa_heflowks0_fe
# frontend/keysight_e3610xa_heflowks0_scfe.cxx
# $ENV{MIDASSYS}/drivers/class/generic.cxx
# )
#
# set_property(
# TARGET
# keysight_e3610xa_heflowks0_fe
# PROPERTY
# CXX_STANDARD 11
# )
#
# target_include_directories(
# keysight_e3610xa_heflowks0_fe
# PRIVATE
# $ENV{MIDASSYS}/drivers
# )
#
# target_link_libraries(
# keysight_e3610xa_heflowks0_fe
# keysight_e3610xa
# keysight_e3610xa_flow
# )
#
# # ============================================================================
# # Frontend keysight_e3610xa_ksamp0_fe
#
# add_executable(
# keysight_e3610xa_ksamp0_fe
# frontend/keysight_e3610xa_ksamp0_scfe.cxx
# $ENV{MIDASSYS}/drivers/class/generic.cxx
# )
#
# set_property(
# TARGET
# keysight_e3610xa_ksamp0_fe
# PROPERTY
# CXX_STANDARD 11
# )
#
# target_include_directories(
# keysight_e3610xa_ksamp0_fe
# PRIVATE
# $ENV{MIDASSYS}/drivers
# )
#
# target_link_libraries(
# keysight_e3610xa_ksamp0_fe
# keysight_e3610xa
# keysight_e3610xa_amp
# )
#
# # ============================================================================
# # Frontend keysight_e3610xa_ksva0_fe
#
# add_executable(
# keysight_e3610xa_ksva0_fe
# frontend/keysight_e3610xa_ksva0_scfe.cxx
# $ENV{MIDASSYS}/drivers/class/generic.cxx
# )
#
# set_property(
# TARGET
# keysight_e3610xa_ksva0_fe
# PROPERTY
# CXX_STANDARD 11
# )
#
# target_include_directories(
# keysight_e3610xa_ksva0_fe
# PRIVATE
# $ENV{MIDASSYS}/drivers
# )
#
# target_link_libraries(
# keysight_e3610xa_ksva0_fe
# keysight_e3610xa
# keysight_e3610xa_voltamp
# )
#
# # ============================================================================
# # Frontend keysight_e3610xa_ksva1_fe
#
# add_executable(
# keysight_e3610xa_ksva1_fe
# frontend/keysight_e3610xa_ksva1_scfe.cxx
# $ENV{MIDASSYS}/drivers/class/generic.cxx
# )
#
# set_property(
# TARGET
# keysight_e3610xa_ksva1_fe
# PROPERTY
# CXX_STANDARD 11
# )
#
# target_include_directories(
# keysight_e3610xa_ksva1_fe
# PRIVATE
# $ENV{MIDASSYS}/drivers
# )
#
# target_link_libraries(
# keysight_e3610xa_ksva1_fe
# keysight_e3610xa
# )
#
# # ============================================================================
# # Frontend keysight_e3610xa_ksvolt0_fe
#
# add_executable(
# keysight_e3610xa_ksvolt0_fe
# frontend/keysight_e3610xa_ksvolt0_scfe.cxx
# $ENV{MIDASSYS}/drivers/class/generic.cxx
# )
#
# set_property(
# TARGET
# keysight_e3610xa_ksvolt0_fe
# PROPERTY
# CXX_STANDARD 11
# )
#
# target_include_directories(
# keysight_e3610xa_ksvolt0_fe
# PRIVATE
# $ENV{MIDASSYS}/drivers
# )
#
# target_link_libraries(
# keysight_e3610xa_ksvolt0_fe
# keysight_e3610xa
# keysight_e3610xa_volt
# )
#
# # ============================================================================
# # Frontend keysight_e3610xa_ksvolt1_fe
#
# add_executable(
# keysight_e3610xa_ksvolt1_fe
# frontend/keysight_e3610xa_ksvolt1_scfe.cxx
# $ENV{MIDASSYS}/drivers/class/generic.cxx
# )
#
# set_property(
# TARGET
# keysight_e3610xa_ksvolt1_fe
# PROPERTY
# CXX_STANDARD 11
# )
#
# target_include_directories(
# keysight_e3610xa_ksvolt1_fe
# PRIVATE
# $ENV{MIDASSYS}/drivers
# )
#
# target_link_libraries(
# keysight_e3610xa_ksvolt1_fe
# keysight_e3610xa
# )
#
#
#endif()
function(default_keysight_e3610xa_tubeheater_frontend F_TARGET F_NAME F_EVENT_ID NUM_CH)
# ============================================================================
# Frontend tubeheater_e3610xa_scfe
add_executable(
tubeheater_e3610xa_scfe
frontend/keysight_e3610xa_tubehks_scfe.cxx
${F_TARGET}
${_DEFAULT_KEYSIGHT_E3610XA_FRONTEND_DIR}/frontend/keysight_e3610xa_tubehks_scfe.cxx
${_DEFAULT_KEYSIGHT_E3610XA_FRONTEND_DIR}/bus/midas_vxi11.cxx
$ENV{MIDASSYS}/drivers/class/generic.cxx
)
target_compile_definitions(${F_TARGET} PRIVATE FRONTEND_NAME="${F_NAME}")
target_compile_definitions(${F_TARGET} PRIVATE FRONTEND_ID=${F_EVENT_ID})
target_compile_definitions(${F_TARGET} PRIVATE FRONTEND_CHANNELS=${NUM_CH})
set_property(
TARGET
tubeheater_e3610xa_scfe
${F_TARGET}
PROPERTY
CXX_STANDARD 11
)
target_include_directories(
tubeheater_e3610xa_scfe
${F_TARGET}
PRIVATE
$ENV{MIDASSYS}/drivers
${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(
tubeheater_e3610xa_scfe
keysight_e3610xa
keysight_e3610xa_vxi11
${F_TARGET}
keysight_e3610xa_voltamp
midas_lan_gpib
)
endif()
target_compile_definitions(${F_TARGET} PRIVATE VXI11_SUPPORT)
install(
TARGETS
${F_TARGET}
RUNTIME DESTINATION bin
)
endfunction()
+3 -2
View File
@@ -30,6 +30,7 @@ The following flags / parametrizations are available:
- `VOLT_SUPPORT`: Use the device in "Voltage mode" mode
- `VOLTAMPERE_SUPPORT`: Use the device in "Voltage / ampere mode" mode
- `AMPERE_SUPPORT`: Use the device in "Ampere mode" mode
- `VXI11_SUPPORT`: Use VXI11, e.g. the tubeheater GPS only supports this
Only one of these configurations can be activated at anytime (if more than one
flag is defined, the first one in the list above is used and the rest is
@@ -69,7 +70,7 @@ The commands below build a couple of different frontends which use the
aforementioned "mode" flags.
```bash
cmake -S "$(pwd)" -B <build-directory> -DBUILD_FRONTENDS=ON
cmake -S "$(pwd)" -B <build-directory>
cmake --build <build-directory> --clean-first -- -j8
```
@@ -403,4 +404,4 @@ $(BIN_DIR)/KEYSIGHT_E3610XA_tubehkslan.o: $(E3610XA_DIR)/KEYSIGHT_E3610XA_tubehk
$(BIN_DIR)/KEYSIGHT_E3610XA_tubehks_scfe: $(E3610XAkstubehlan_OBJS) $(MAKEFILE)
$(CC) $(CFLAGS) $(OSFLAGS) -o $@ $(E3610XAkstubehlan_OBJS) $(OFORTC) $(LIB) $(LIBS) -lm $(TIRPC_LIB)
```
```
+4 -3
View File
@@ -740,6 +740,7 @@ INT midas_vxi11(INT cmd, ...)
HNDLE hkey;
INT status, size, size1, timeout, waitms, flag, *pstb;
void *info;
void **pinfo;
char *str, *str1, *pattern;
va_start(argptr, cmd);
@@ -752,8 +753,8 @@ INT midas_vxi11(INT cmd, ...)
switch (cmd) {
case CMD_INIT:
hkey = va_arg(argptr, HNDLE);
info = va_arg(argptr, void *);
status = midas_vxi11_init(hkey, &info);
pinfo = va_arg(argptr, void **);
status = midas_vxi11_init(hkey, pinfo);
break;
case CMD_EXIT:
@@ -867,4 +868,4 @@ INT midas_vxi11(INT cmd, ...)
va_end(argptr);
return status;
}
}
+3 -2
View File
@@ -3184,6 +3184,7 @@ INT keysight_e3610xa(INT cmd, ...)
DWORD flags;
float value, *pvalue;
void *info, *bd;
void **pinfo;
KEYSIGHT_E3610XA_INFO *infos;
char *name;
@@ -3193,11 +3194,11 @@ INT keysight_e3610xa(INT cmd, ...)
switch (cmd) {
case CMD_INIT:
hKey = va_arg(argptr, HNDLE);
info = va_arg(argptr, void *);
pinfo = va_arg(argptr, void **);
channel = va_arg(argptr, INT);
flags = va_arg(argptr, DWORD);
bd = va_arg(argptr, void *);
status = keysight_e3610xa_init(hKey, &info, channel, (INT(*)(INT, ...)) bd);
status = keysight_e3610xa_init(hKey, pinfo, channel, (INT(*)(INT, ...)) bd);
break;
case CMD_EXIT:
+4 -4
View File
@@ -23,7 +23,7 @@
/*-- Globals -------------------------------------------------------*/
/* The frontend name (client name) as seen by other MIDAS clients */
char *frontend_name = "TubeHeater";
char *frontend_name = FRONTEND_NAME;
/* The frontend file name, don't change it */
char *frontend_file_name = __FILE__;
@@ -61,7 +61,7 @@ BOOL equipment_common_overwrite = FALSE;
DEVICE_DRIVER keysight_driver[] = {
/* initial demand value taken from instrument */
#ifdef VXI11_SUPPORT
{ "KEYSIGHT_E3610XA", keysight_e3610xa, 3, midas_vxi11, DF_PRIO_DEVICE},
{ "KEYSIGHT_E3610XA", keysight_e3610xa, FRONTEND_CHANNELS, midas_vxi11, DF_PRIO_DEVICE},
#else
#endif
{ "" }
@@ -70,8 +70,8 @@ DEVICE_DRIVER keysight_driver[] = {
EQUIPMENT equipment[] = {
{ "TubeHeater", /* equipment name */
{186, 0, /* event ID, trigger mask */
{ FRONTEND_NAME, /* equipment name */
{FRONTEND_ID, 0, /* event ID, trigger mask */
"SYSTEM", /* event buffer */
EQ_SLOW, /* equipment type */
0, /* event source */
Submodule lan_gpib_vxi11 deleted from 04a5865598.
+1
Submodule midas_lan_gpib added at f00a681652.