Add macros to hdb.
r2114 | ffr | 2007-08-16 14:31:50 +1000 (Thu, 16 Aug 2007) | 2 lines
This commit is contained in:
committed by
Douglas Clowes
parent
85774be9f9
commit
bf8d5e63be
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user