migrate from EPICS 3.14.12 to 7.0.7

This commit is contained in:
2023-07-12 10:32:11 +02:00
parent 7d2cfaf209
commit 472a6fb7fc
8 changed files with 224 additions and 115 deletions

148
generate.py Executable file
View File

@@ -0,0 +1,148 @@
#!/usr/bin/env python
#*-----------------------------------------------------------------------*
#| |
#| Copyright (c) 2019 by Paul Scherrer Institute (http://www.psi.ch) |
#| |
#| Author Thierry Zamofing (thierry.zamofing@psi.ch) |
#*-----------------------------------------------------------------------*
'''
generate .subs and _startup.script files
mode bits:
0x001: genIOC()
0x008: genLauncher()
Long Doc'''
from __future__ import print_function
import logging, sys, os, json
import string
host2param={
#HOST runScript
'SAR-CPPM-EXPMX1': ('require ESB_MX\nrunScript $(ESB_MX_DIR)/add_EXPMX1.cmd "P=SAR-EXPMX,PORT=PPMAC1"',),
'SAR-CPPM-EXPMX2': ('require ESB_MX\nrunScript $(ESB_MX_DIR)/add_EXPMX2.cmd "P=SAR-EXPMX,PORT=PPMAC1"',),
'SAR-CPPM-EXPMX3': ('require ESB_MX\nrunScript $(ESB_MX_DIR)/add_EXPMX3.cmd "P=SAR-EXPMX,PORT=PPMAC1"',),
}
tplYaml='''\
cpu_architecture: {os}
os: {os}
os_id: {os}
epics_version: 7.0.7
ioc_host: {host}
ioc_port: {port}
'''
##################################################################
# DO NOT EDIT: Generated with epics_ioc_modules/OATT/generate.py
# This is the IOC on "{host}" port {port}:
##################################################################
tplScriptPowerBrickIOC='''\
#####################################
# PPMAC responsible: Thierry Zamofing
#####################################
{req}
############################################
#------! Common PPMAC configuration !------#
############################################
# Load common configuration
require PB_COMMON
# Define controller
#powerPmacCreateController(<port_name>, <moving_poll_pseriod [ms]>, <idle_poll_period [ms]>)
powerPmacCreateController("PPMAC1", 200, 1000)
############################################
#--------! Devices configuration ---------!#
############################################
{devConf}
'''
tplEVR='''\
####### initialise EVR ##############################
# https://git.psi.ch/epics_driver_modules/mrfioc2
require mrfioc2
runScript $(mrfioc2_DIR)/mrfioc2_evr-PCIe.cmd, "DEVICE=EVR0,EVR_SUBS=$(ESB_MX_DIR)/db/evr_PCIe-300DC.subs,EVR_DOMAIN=0x2,EVR_BUS=0x21,SYS=SAR-EXPMX"
####### initialise EVR data buffer ##################
# https://git.psi.ch/epics_driver_modules/mrfioc2_regDev
require mrfioc2_regDev
runScript $(mrfioc2_regDev_DIR)/mrfioc2_regDev_pulseID_RX.cmd, "DEVICE=EVR0,SYS=SAR-EXPMX"
'''
class CPPM:
def __init__(self):
pass
def genIOC(self):
print('### genIOC ###')
tpl=tplScriptPowerBrickIOC
os.makedirs('gen/ioc/',exist_ok=True)
#os.makedirs('gen/db/',exist_ok=True)
fh=open('gen/ioc/Makefile','w')
fh.write('include /ioc/tools/ioc.makefile\n')
fh.close()
port=50001
osys='eldk42-ppc4xxFP'
for host,v in host2param.items():
devConf,=v
req=''
fn='gen/ioc/{host}_startup.script'.format(host=host)
print('generate '+fn+'...')
fh=open(fn,'w')
fh.write(tpl.format(host=host,port=port,req=req,devConf=devConf))
if host=='SAR-CPPM-EXPMX1':
fh.write(tplEVR)
fh.close()
fn='gen/ioc/{host}_parameters.yaml'.format(host=host)
print('generate '+fn+'...')
fh=open(fn,'w')
fh.write(tplYaml.format(os=osys,host=host,port=port))
fh.close()
print('done.')
def genLauncher(self):
print('### genLauncher ###')
# os.makedirs('gen/',exist_ok=True)
# fn='gen/launcher_part.json'
# print('generate '+fn+'...')
# fh=open(fn,'w')
# for dev,ioc in dev2ioc.items():
# fh.write('''\
#{{ "type": "caqtdm" , "text": "{dev} translation", "panel": "galil_dmc_ctrl.ui", "macros": "DMC={dev}_DMC1:,M1=TX" }},
#'''.format(dev=dev))
# fh.close()
if __name__=='__main__':
def parse_args():
import argparse
(h, t)=os.path.split(sys.argv[0]);cmd='\n '+(t if len(h)>20 else sys.argv[0])+' '
#print(sys.argv,h,t)
exampleCmd=('', '-m0xf -v0' )
epilog=__doc__+'\nExamples:'+''.join(map(lambda s:cmd+s, exampleCmd))+'\n'
parser = argparse.ArgumentParser(epilog=epilog,formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('-m', '--mode', type=lambda x: int(x,0), help='mode bits', default=0xff)
args = parser.parse_args()
#print(args)
obj=CPPM()
if args.mode&0x1:
obj.genIOC()
if args.mode&0x2:
obj.genLauncher()
parse_args()