diff --git a/site_ansto/instrument/config/hipadaba/hipadaba_configuration_common.tcl b/site_ansto/instrument/config/hipadaba/hipadaba_configuration_common.tcl index c3da97f2..1dc8700b 100644 --- a/site_ansto/instrument/config/hipadaba/hipadaba_configuration_common.tcl +++ b/site_ansto/instrument/config/hipadaba/hipadaba_configuration_common.tcl @@ -5,6 +5,7 @@ # subtree/group_path policy: data=parent control=parent nxsave=parent klass=parent # type=macro & klass=command -> kind=command # type=macro & klass!=command -> kind=script +# kind=script must have access property (read_only, read_write) and dtype and dlen source $cfPath(hipadaba)/instdict_specification.tcl source $cfPath(hipadaba)/common_instrument_dictionary.tcl @@ -157,8 +158,26 @@ proc add_node {basePath args} { } script { # A r/w pair of scripts, node = a node path - set node_path $basePath/$node_name - hmakescript $node_path $arg_array(rscript) $arg_array(wscript) $arg_array(dtype) $arg_array(dlen) + set node_path $basePath/[getatt $node_name long_name] + array set attribute [attlist $node_name] + set data_type [getatt $node_name dtype] + set data_length [getatt $node_name dlen] + if {[getatt $node_name access] == "read_only"} { + hmakescript $node_path $node_name hdbReadOnly $data_type $data_length + } else { + hmakescript $node_path $node_name $node_name $data_type $data_length + } + hsetprop $node_path sicsdev $node_name + hsetprop $node_path nxalias $node_name + hsetprop $node_path data true + hsetprop $node_path control false + hsetprop $node_path klass [getatt $node_name klass] + hsetprop $node_path sdsinfo [getatt $node_name sdsinfo] + hsetprop $node_path savecmd [getatt $node_name savecmd] + if {[info exists attribute(units)]} { + hsetprop $node_path units $attribute(units) + } + #hmakescript $node_path $arg_array(rscript) $arg_array(wscript) $arg_array(dtype) $arg_array(dlen) } } if {[info exists arg_array(prop_list)]} { @@ -239,6 +258,7 @@ proc getsobjatt {sicsobj attribute} { proc sobjadd {hpath sobj args} { array unset sobjatt array set sobjatt [attlist $sobj] + sicslist setatt $sobj id $sobj switch $sobjatt(type) { motor - configurablevirtualmotor { if {[info exists sobjatt(group)]} { @@ -259,6 +279,7 @@ proc sobjadd {hpath sobj args} { } } macro { + # access attribute = ro,rw if {[info exists sobjatt(group)]} { set hpath [add_hpath $hpath $sobjatt(group)] hsetprop $hpath type part @@ -266,7 +287,7 @@ proc sobjadd {hpath sobj args} { if {[lsearch [hlist $hpath] $sobjatt(long_name)] != -1} { clientput "ERROR: $hpath/$sobjatt(long_name) for $sobj exists" error } else { - add_node $hpath kind $sobjatt(kind) node $sobj dtype $sobjatt(type) priv $sobjatt(privilege) + add_node $hpath kind $sobjatt(kind) node $sobj priv $sobjatt(privilege) } } sicsvariable {