161 lines
4.0 KiB
Plaintext
161 lines
4.0 KiB
Plaintext
# Main Template for TOPAS API
|
|
|
|
# Communications for generic functions..
|
|
# i.e. Wavelength, Shutter control NOT for motors
|
|
|
|
#Typical curl commands
|
|
#curl http://129.129.243.70:8012/A8729/v0/PublicAPI/Motors/AllProperties
|
|
#need some macros:-
|
|
|
|
#$(TOP_DEV) =A8729
|
|
#$(HOST) =129.129.243.70:8012
|
|
#$(TOPAS) =Device to talk to from startup script
|
|
|
|
record(stringin, "$(SYSTEM):HOST"){
|
|
field(DESC, "$(DESC)")
|
|
field(VAL, "$(HOST)")
|
|
}
|
|
|
|
record(stringin, "$(SYSTEM):TOPAS_DEVICE"){
|
|
field(DESC, "Topas Device")
|
|
field(VAL, "$(TOP_DEV)")
|
|
}
|
|
|
|
record(ai, "$(SYSTEM):NUM_MOTORS"){
|
|
field(DESC, "number of motors")
|
|
field(VAL, "$(NUM_MOTORS=20)")
|
|
}
|
|
###########################################
|
|
# Counter
|
|
###########################################
|
|
|
|
record(ao,"$(SYSTEM):LIVE_CNTR_ENA"){
|
|
field(DESC, "0 to stop counter")
|
|
field(VAL, "1")
|
|
}
|
|
|
|
record(calcout,"$(SYSTEM):LIVE_CNTR"){ #for live readings ctsly
|
|
field(DESC, "Cycle round all channels")
|
|
field(SCAN, ".5 second")
|
|
field(INPA, "$(SYSTEM):LIVE_CNTR")
|
|
field(INPB, "$(SYSTEM):LIVE_CNTR_ENA")
|
|
field(INPC, "$(SYSTEM):NUM_MOTORS")
|
|
field(CALC, "B=0?-5:A<C?A+1:0")
|
|
}
|
|
|
|
|
|
record(calcout, "$(SYSTEM):SYS_LIVE_READ"){ #Trigger a live reading
|
|
field(DESC, "Read live data")
|
|
field(INPA, "$(SYSTEM):LIVE_CNTR CP")
|
|
field(INPB, "0")
|
|
field(CALC, "A=B?1:0")
|
|
field(OOPT, "When Non-zero")
|
|
field(OUT, "$(SYSTEM):GET_WAVELENGTH.PROC PP")
|
|
}
|
|
|
|
|
|
record(calcout, "$(SYSTEM):TRIG_SEQ"){ #Trigger an init sequence to reread everything
|
|
field(DESC, "reread settings")
|
|
field(PINI, "YES")
|
|
field(INPA, "$(SYSTEM):TRIG_SEQ")
|
|
field(CALC, "A+1")
|
|
field(FLNK, "$(SYSTEM):INTERACTION")
|
|
}
|
|
|
|
|
|
|
|
# -------- Wavelength
|
|
# will all Topas to choose the interaction type
|
|
|
|
record(ao, "$(SYSTEM):GET_WAVELENGTH"){
|
|
field(DESC, "Read motor n pos")
|
|
field(DTYP, "stream")
|
|
field(EGU, "nm")
|
|
field(PREC, "2")
|
|
field(OUT, "@topas_api GetWavelength($(SYSTEM),$(HOST),$(TOP_DEV)) $(TOPAS)")
|
|
# File Unit
|
|
field(FLNK, "$(SYSTEM):GET_SHUTTER")
|
|
}
|
|
|
|
|
|
record(ao, "$(SYSTEM):SET_WAVELENGTH"){
|
|
field(DESC, "Set the wavelength")
|
|
field(DTYP, "stream")
|
|
field(EGU, "steps")
|
|
field(PREC, "2")
|
|
field(OUT, "@topas_api SetWavelength($(SYSTEM),$(HOST),$(TOP_DEV)) $(TOPAS)")
|
|
# File Unit
|
|
field(FLNK, "$(SYSTEM):INTERACTION")
|
|
}
|
|
|
|
|
|
record(stringin, "$(SYSTEM):INTERACTION"){
|
|
field(DESC, "Interaction")
|
|
field(DTYP, "stream")
|
|
field(INP, "@topas_api Interaction($(SYSTEM),$(HOST),$(TOP_DEV)) $(TOPAS)")
|
|
# File Unit
|
|
field(FLNK, "$(SYSTEM):GET_WAVELENGTH")
|
|
}
|
|
|
|
|
|
#----------- Shutter ---------
|
|
|
|
|
|
record(ao, "$(SYSTEM):OPEN_SHUTTER"){
|
|
field(DESC, "Read motor n pos")
|
|
field(DTYP, "stream")
|
|
field(EGU, "steps")
|
|
field(PREC, "0")
|
|
field(OUT, "@topas_api OpenShutter($(SYSTEM),$(HOST),$(TOP_DEV)) $(TOPAS)")
|
|
# File Unit
|
|
field(FLNK, "$(SYSTEM):GET_SHUTTER")
|
|
}
|
|
|
|
record(ao, "$(SYSTEM):CLOSE_SHUTTER"){
|
|
field(DESC, "Read motor n pos")
|
|
field(DTYP, "stream")
|
|
field(EGU, "steps")
|
|
field(PREC, "0")
|
|
field(OUT, "@topas_api CloseShutter($(SYSTEM),$(HOST),$(TOP_DEV)) $(TOPAS)")
|
|
# File Unit
|
|
field(FLNK, "$(SYSTEM):GET_SHUTTER")
|
|
}
|
|
|
|
record(mbbi, "$(SYSTEM):GET_SHUTTER"){
|
|
field(DESC, "shutter position ")
|
|
field(DTYP, "stream")
|
|
field(INP, "@topas_api GetShutterState($(SYSTEM),$(HOST),$(TOP_DEV)) $(TOPAS)")
|
|
field(NOBT, "2")
|
|
field(ZRVL, "0")
|
|
field(ONVL, "1")
|
|
field(ZRST, "Shut")
|
|
field(ONST, "Open")
|
|
}
|
|
|
|
|
|
# ----------------------------------
|
|
|
|
|
|
record(ao, "$(SYSTEM):STOP_ALL"){
|
|
field(DESC, "stop all")
|
|
field(DTYP, "stream")
|
|
field(OUT, "@topas_api StopAll($(SYSTEM),$(HOST),$(TOP_DEV)) $(TOPAS)")
|
|
# File Unit
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|