Files
LNO-EPICS-IOCS/TOPAS/IOC/TOPAS_API_MAIN.template
2025-12-11 16:19:19 +01:00

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
}