Provide a parameters and parameters/derived_parameters section as a one stop shop for all your instrument parameter needs.

r2625 | ffr | 2008-06-12 12:42:17 +1000 (Thu, 12 Jun 2008) | 2 lines
This commit is contained in:
Ferdi Franceschini
2008-06-12 12:42:17 +10:00
committed by Douglas Clowes
parent 3a40ea5693
commit 177d5f3ed6
3 changed files with 99 additions and 72 deletions

View File

@@ -32,6 +32,18 @@ set instrument_dictionary [subst {
datatype @none
property {data true control true nxsave false klass NXinstrument type instrument}
}
instrument/parameters {
privilege spy
sobj {@any parameter}
datatype @none
property {data false control true nxsave false klass @none type part}
}
instrument/parameters/derived_parameters {
privilege spy
sobj {@any derived_parameter}
datatype @none
property {data false control true nxsave false klass @none type part}
}
instrument/aperture {
privilege spy
sobj {@any aperture}

View File

@@ -11,7 +11,7 @@ set boolean {true false}
#}
# SICS OBJECTS MUST PROVIDE THE FOLLOWING INFORMATION
set sobj_klass_list {@none aperture attenuator collimator command crystal data detector entry environment experiment graphics instrument monitor monochromator plc sample scan sensor user}
set sobj_klass_list {@none aperture attenuator collimator command crystal data detector entry environment experiment graphics instrument monitor monochromator parameter derived_parameter plc sample scan sensor user}
set sobj_sicstype_list {environment_controller sicsvariable macro motor configurablevirtualmotor singlecounter histmem nxscript sicsdata scanobject}
# Different kinds of things are added to the hdb in different ways.
# command: This is something a client can run with hset /a/b/c start, it may have parameters and feedback.

View File

@@ -10,7 +10,7 @@ foreach {var nxname} {
BeamstopCoordScheme coordinate_scheme
CollCoordScheme coordinate_scheme
} {
::utility::mkVar $var text readonly $nxname true @none false true
::utility::mkVar $var text readonly $var true @none false true
$var Cartesian
$var lock
}
@@ -28,7 +28,7 @@ foreach {var nxname priv} {
SApShape shape readonly
BSShape shape user
} {
::utility::mkVar $var text $priv $nxname true @none true true
::utility::mkVar $var text $priv $var true @none true true
}
# The velocity selector position is used as the reference for other instrument
@@ -40,7 +40,7 @@ foreach {var nxname units} {
EndFacePosYmm y mm
RotApPosYmm y mm
} {
::utility::mkVar $var float readonly $nxname true @none true true
::utility::mkVar $var float readonly $var true @none true true
if {$units != 1} {
sicslist setatt $var units $units
}
@@ -53,6 +53,7 @@ foreach {var nxname units priv} {
LambdaResFWHM% wavelength_spread 1 user
VSdeg twist degrees user
VSrpm rotation_speed rpm user
AttFactor attenuation_factor 1 user
AttRotDeg AttRotDeg degrees readonly
PleXmm x mm user
RotApXmm x mm user
@@ -77,7 +78,7 @@ foreach {var nxname units priv} {
BSXmm x mm user
BSZmm z mm user
} {
::utility::mkVar $var float $priv $nxname true @none true true
::utility::mkVar $var float $priv $var true @none true true
if {$units != 1} {
sicslist setatt $var units $units
}
@@ -114,7 +115,7 @@ foreach {pname motor hdbname units} {
return [sicsmsgfmt [SplitReply [$motor]]]
}]
sicslist setatt $pname units $units
sicslist setatt $pname long_name $hdbname
sicslist setatt $pname long_name $pname
}
################################################################################
@@ -202,74 +203,88 @@ RotApPosYmm 675
################################################################################
# Check Config
namespace eval parameters {
set paramlist {
AttRotDeg
BS1
BS2
BS3
BS4
BS5
BSPosXmm
BSPosZmm
BSShape
BSXmm
BSZmm
C1
C2
C3
C4
C5
C6
C7
C8
C9
DetPosXmm
DetPosYmm
DetPosYmm
DetPosYOffsetmm
EApPosYmm
EApShape
EApXmm
EApYmm
EApZmm
EndFacePosYmm
LambdaA
LambdaResFWHM%
Pent
Plexmm
RotApDeg
RotApShape
RotApXmm
RotApZmm
SampleAttributes
SampleComments
SampleName
SampleNum
SamplePosXmm
SamplePosYmm
SamplePosYmm
SamplePosZmm
SampleRotDeg
SampleTiltXDeg
SampleTiltYDeg
SampleTitle
SApPosXmm
SApPosYmm
SApPosYmm
SApPosZmm
SApShape
SApXmm
SApZmm
VSdeg
VSrpm
}
foreach p $paramlist {
if [::utility::obj_exists $p] {
sicslist setatt $p klass parameter
}
}
set derived_paramlist {
AttFactor
L1mm
L2mm
}
foreach p $derived_paramlist {
if [::utility::obj_exists $p] {
sicslist setatt $p klass derived_parameter
}
}
}
##
# @brief List undefined parameters
proc missingparams {} {
set paramlist {
AttFactor
AttRotDeg
BS1
BS2
BS3
BS4
BS5
BSPosXmm
BSPosZmm
BSShape
BSXmm
BSZmm
C1
C2
C3
C4
C5
C6
C7
C8
C9
DetPosXmm
DetPosYmm
DetPosYmm
DetPosYOffsetmm
EApPosYmm
EApShape
EApXmm
EApYmm
EApZmm
EndFacePosYmm
L1mm
L2mm
LambdaA
LambdaResFWHM%
Pent
Plexmm
RotApDeg
RotApShape
RotApXmm
RotApZmm
SampleAttributes
SampleComments
SampleName
SampleNum
SamplePosXmm
SamplePosYmm
SamplePosYmm
SamplePosZmm
SampleRotDeg
SampleTiltXDeg
SampleTiltYDeg
SampleTitle
SApPosXmm
SApPosYmm
SApPosYmm
SApPosZmm
SApShape
SApXmm
SApZmm
VSdeg
VSrpm
}
proc ::parameters::missingparams {} {
variable paramlist
set num 0
foreach param $paramlist {
if {[sicslist match $param] == " "} {