- Added a script to generate XML for GumTree
SKIPPED: psi/hardsup/libhlib.a
This commit is contained in:
@ -137,8 +137,7 @@ static pHdb MakeMotParNode(char *name, pMotor pMot){
|
|||||||
static int AddStdMotorPar(pHdb motorNode, pMotor pMot){
|
static int AddStdMotorPar(pHdb motorNode, pMotor pMot){
|
||||||
int i;
|
int i;
|
||||||
pHdb parNode = NULL;
|
pHdb parNode = NULL;
|
||||||
char *addPar[] = {"position",
|
char *addPar[] = {"target",
|
||||||
"target",
|
|
||||||
"hardlowerlim",
|
"hardlowerlim",
|
||||||
"hardupperlim",
|
"hardupperlim",
|
||||||
NULL};
|
NULL};
|
||||||
|
181
tcl/gumxml.tcl
Normal file
181
tcl/gumxml.tcl
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
# This file contains the implementation of the routines which generate the
|
||||||
|
# XML file as required by GumTree from a SICS Hipadaba.
|
||||||
|
#
|
||||||
|
# Mark Koennecke, Tony Lam, Ferdi Franceccini, January 2007
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
proc makeGumHeader {} {
|
||||||
|
return "<?xml version = \"1.0\" encoding = \"UTF-8\"?>\n"
|
||||||
|
}
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
proc sicssplit {txt} {
|
||||||
|
set l [split $txt =]
|
||||||
|
return [string trim [lindex $l 1]]
|
||||||
|
}
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
proc getNodePriv {nodepath} {
|
||||||
|
set status [catch {hgetprop $nodepath priv} msg]
|
||||||
|
if {$status != 0} {
|
||||||
|
set priv user
|
||||||
|
} else {
|
||||||
|
set priv [sicssplit $msg]
|
||||||
|
}
|
||||||
|
if {[string length $priv] < 2} {
|
||||||
|
set priv user
|
||||||
|
}
|
||||||
|
set priv [string toupper $priv]
|
||||||
|
if {[string compare $priv INTERNAL] == 0} {
|
||||||
|
set priv READ_ONLY
|
||||||
|
}
|
||||||
|
return $priv
|
||||||
|
}
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
proc getNodeNumType {nodepath} {
|
||||||
|
set txt [hinfo $nodepath]
|
||||||
|
set l [split $txt ,]
|
||||||
|
set numtype [lindex $l 0]
|
||||||
|
set numType [string totitle $numtype]
|
||||||
|
return $numType
|
||||||
|
}
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
proc makeXMLHeader {nodepath indent} {
|
||||||
|
set status [catch {hgetprop $nodepath type} msg]
|
||||||
|
if {$status != 0} {
|
||||||
|
set nodetype UNSPECIFIED
|
||||||
|
} else {
|
||||||
|
set nodetype [string tolower [sicssplit $msg]]
|
||||||
|
}
|
||||||
|
set nodename [file tail $nodepath]
|
||||||
|
set prefix [string repeat " " $indent]
|
||||||
|
switch $nodetype {
|
||||||
|
instrument {
|
||||||
|
append result "$prefix <Instrument xmlns:hipadaba=\"http://www.psi.ch/hipadaba\" label=\""
|
||||||
|
append result "$nodename\">\n"
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
set numtype [getNodeNumType $nodepath]
|
||||||
|
if {[string compare $numtype None] == 0} {
|
||||||
|
append result "$prefix<part id=\"$nodename\">\n"
|
||||||
|
} else {
|
||||||
|
set priv [getNodePriv $nodepath]
|
||||||
|
append result "$prefix<part id=\"$nodename\" dataType=\"$numtype\" privilege=\"$priv\">\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
motor {
|
||||||
|
set priv [getNodePriv $nodepath]
|
||||||
|
append result "$prefix<device id=\"$nodename\" "
|
||||||
|
append result "deviceType=\"Motor\" dataType=\"Float\" privilege=\"$priv\">\n"
|
||||||
|
}
|
||||||
|
drivable {
|
||||||
|
set priv [getNodePriv $nodepath]
|
||||||
|
append result "$prefix<device id=\"$nodename\" "
|
||||||
|
append result "deviceType=\"Drivable\" dataType=\"Float\" privilege=\"$priv\">\n"
|
||||||
|
}
|
||||||
|
graphset {
|
||||||
|
append result "$prefix <Graphics label=\""
|
||||||
|
append result "$nodename\">\n"
|
||||||
|
}
|
||||||
|
commandset {
|
||||||
|
append result "$prefix <Commands label=\""
|
||||||
|
append result "$nodename\">\n"
|
||||||
|
}
|
||||||
|
graphdata {
|
||||||
|
set status [catch {hgetprop $nodepath viewer} msg]
|
||||||
|
if {$status == 0} {
|
||||||
|
set view [sicssplit $msg]
|
||||||
|
append result "$prefix<graphdata id=\"$nodename\" viewer=\"$view\">\n"
|
||||||
|
} else {
|
||||||
|
append result "$prefix<graphdata id=\"$nodename\">\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
command {
|
||||||
|
set priv [getNodePriv $nodepath]
|
||||||
|
append result "$prefix<command id=\"$nodename\" privilege=\"$priv\">\n"
|
||||||
|
}
|
||||||
|
axis {
|
||||||
|
set status [catch {hgetprop $nodepath dim} msg]
|
||||||
|
if {$status == 0} {
|
||||||
|
set dim [sicssplit $msg]
|
||||||
|
} else {
|
||||||
|
set dim 0
|
||||||
|
}
|
||||||
|
set numtype [getNodeNumType $nodepath]
|
||||||
|
append result "$prefix<axis privilege=\"READ_ONLY\" dataType=\"$numtype\" "
|
||||||
|
append result "id=\"$nodename\" dim=\"$dim\"/>\n"
|
||||||
|
}
|
||||||
|
data {
|
||||||
|
set numtype [getNodeNumType $nodepath]
|
||||||
|
append result "$prefix<data privilege=\"READ_ONLY\" "
|
||||||
|
append result "dataType=\"$numtype\" id=\"$nodename\"/>\n"
|
||||||
|
}
|
||||||
|
default {
|
||||||
|
set numtype [getNodeNumType $nodepath]
|
||||||
|
set priv [getNodePriv $nodepath]
|
||||||
|
append result "$prefix<property privilege=\"$priv\" dataType=\"$numtype\" id=\"$nodename\"/>\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $result
|
||||||
|
}
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
proc makeXMLClose {nodepath indent} {
|
||||||
|
set status [catch {hgetprop $nodepath type} msg]
|
||||||
|
if {$status != 0} {
|
||||||
|
set nodetype UNSPECIFIED
|
||||||
|
} else {
|
||||||
|
set nodetype [string tolower [sicssplit $msg]]
|
||||||
|
}
|
||||||
|
set nodename [file tail $nodepath]
|
||||||
|
set prefix [string repeat " " $indent]
|
||||||
|
switch $nodetype {
|
||||||
|
instrument {
|
||||||
|
append result "$prefix</Instrument>\n"
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
append result "$prefix</part>\n"
|
||||||
|
}
|
||||||
|
drivable -
|
||||||
|
motor {
|
||||||
|
append result "$prefix</device>\n"
|
||||||
|
}
|
||||||
|
graphset {
|
||||||
|
append result "$prefix</Graphics>\n"
|
||||||
|
}
|
||||||
|
commandset {
|
||||||
|
append result "$prefix</Commands>\n"
|
||||||
|
}
|
||||||
|
graphdata {
|
||||||
|
append result "$prefix</graphdata>\n"
|
||||||
|
}
|
||||||
|
command {
|
||||||
|
append result "$prefix</command>\n"
|
||||||
|
}
|
||||||
|
default {
|
||||||
|
append result ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $result
|
||||||
|
}
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
proc scanHdbDir {path indent} {
|
||||||
|
set txl [hlist $path]
|
||||||
|
if {[string compare $path "/"] == 0} {
|
||||||
|
set path ""
|
||||||
|
}
|
||||||
|
set nodelist [split $txl \n]
|
||||||
|
set result ""
|
||||||
|
foreach node $nodelist {
|
||||||
|
if {[string length $node] < 1} {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
set nodepath $path/$node
|
||||||
|
append result [makeXMLHeader $nodepath $indent]
|
||||||
|
append result [scanHdbDir $nodepath [expr $indent + 2]]
|
||||||
|
append result [makeXMLClose $nodepath $indent]
|
||||||
|
}
|
||||||
|
return $result
|
||||||
|
}
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
proc getgumtreexml {path } {
|
||||||
|
append result [makeGumHeader]
|
||||||
|
append result [scanHdbDir $path 0]
|
||||||
|
}
|
9
tmp/hdbscan.tcl
Normal file
9
tmp/hdbscan.tcl
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
hset /commands/scan/scan_variables som
|
||||||
|
hset /commands/scan/scan_start 5
|
||||||
|
hset /commands/scan/scan_increments .5
|
||||||
|
hset /commands/scan/NP 10
|
||||||
|
hset /commands/scan/mode Timer
|
||||||
|
hset /commands/scan/preset 2
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user