Files
sics/site_ansto/instrument/bilby/config/chopper/astrium_chopper.sct
2014-09-10 15:01:03 +10:00

124 lines
4.0 KiB
Plaintext

driver astrium_chopper = {
vendor = astrium; device = chopper; protocol = std;
class = NXdisk_chopper; simulation_group = chopper_simulation;
group disk_1 = {
var state = {
type = text; mutable = true; priv = user; readable = 1;
read_command = '1'; fetch_function = fetchState; read_function = readState;
property 'my_state' = 'idle';
}
var master = { type = text; }
var rspeed = { type = float; }
var aspeed = { type = float; mutable = true; }
var rphase = { type = float; }
var aphase = { type = float; mutable = true; }
var frequency = { type = float; mutable = true; }
}
group disk_2 = {
var state = {
type = text; mutable = true; priv = user; readable = 1;
read_command = '2'; fetch_function = fetchState; read_function = readState;
property 'my_state' = 'idle';
}
var master = { type = text; }
var rspeed = { type = float; }
var aspeed = { type = float; mutable = true; }
var rphase = { type = float; }
var aphase = { type = float; mutable = true; }
var frequency = { type = float; mutable = true; }
}
group disk_3 = {
var state = {
type = text; mutable = true; priv = user; readable = 1;
read_command = '3'; fetch_function = fetchState; read_function = readState;
property 'my_state' = 'idle';
}
var master = { type = text; }
var rspeed = { type = float; }
var aspeed = { type = float; mutable = true; }
var rphase = { type = float; }
var aphase = { type = float; mutable = true; }
var frequency = { type = float; mutable = true; }
}
group disk_4 = {
var state = {
type = text; mutable = true; priv = user; readable = 1;
read_command = '4'; fetch_function = fetchState; read_function = readState;
property 'my_state' = 'idle';
}
var master = { type = text; }
var rspeed = { type = float; }
var aspeed = { type = float; mutable = true; }
var rphase = { type = float; }
var aphase = { type = float; mutable = true; }
var frequency = { type = float; mutable = true; }
}
code fetch_function fetchState = {%%
set my_state [sct my_state]
if { ${my_state} == "user" } {
set cmd "user:Bilby"
} elseif { ${my_state} == "password" } {
set cmd "password:RwN"
} else {
set cmd "#SOS#STATE ${cmd_str}"
}
%%}
code read_function readState = {%%
if { [string equal -length 22 ${data} "#SES#Fill in your user"] } {
sct my_state "user"
set nextState "read"
} elseif { [string equal -length 22 ${data} "#SES#Fill in your pass"] } {
sct my_state "password"
set nextState "read"
} elseif { [string equal -length 22 ${data} "#SES#You are not a val"] } {
sct my_state "user"
set nextState "read"
} else {
sct my_state "idle"
set nextState "idle"
if { [string equal -length 12 ${data} "#SOS#ACCEPT "] } {
set my_status [split [string range ${data} 12 end] "#"]
foreach field ${my_status} {
set lst [split ${field} "="]
if { [llength ${lst}] > 1 } {
set lhs "[string trim [lindex ${lst} 0]]"
set rhs "[string trim [lindex ${lst} 1]]"
sct "attr_${lhs}" "${rhs}"
set base [pathname [sct]]
switch [string toupper [string trim ${node}]] {
"ASPEED" {
if [string is double "${rhs}"] {
set freq [expr "${rhs}" / 60.0]
if { "[hval ${base}/frequency]" != "${freq}" } {
hset ${base}/frequency ${freq}
}
}
}
"RSPEED" "APHASE" "RPHASE" "MASTER" {
if { "[hval ${base}/${node}]" != "${rhs}" } {
hset ${base}/${node} "${rhs}"
}
}
}
if { [string equal -nocase ${lhs} "STATE"] } {
set data "${rhs}"
}
}
}
} else {
sct geterror "${data}"
}
}
%%}
code mkDriver = {%%
%%}
}