callsTo retrieve values from the data base, the get_config method is called. see
Code Block |
---|
|
from psalg.configdb.get_config import get_config
import json
def tt_config(connect_str,cfgtype,detname,group):
cfg = get_config(connect_str,cfgtype,detname)
return json.dumps(cfg)
if __name__ == "__main__":
connect_info = {}
connect_info['body'] = {}
connect_info['body']['control'] = {}
connect_info['body']['control']['0'] = {}
connect_info['body']['control']['0']['control_info'] = {}
connect_info['body']['control']['0']['control_info']['instrument'] = 'TMO'
connect_info['body']['control']['0']['control_info']['cfg_dbase'] = 'mcbrowne:psana@psdb-dev:9306/configDB'
mystring = json.dumps(connect_info) #paste this string into the pgpread_timetool.cc as parameter for the tt_config function call
my_config = tt_config(mystring, cfgtype, detname)
#connect_json is a a "BEAM", "tmotimetool",None)
print(my_config)
|
Code Block |
---|
|
#where the arguments are:
#connect_json: string that is dumped into json from a python dict. e.g.
|
Code Block |
---|
|
#where connect_json
connect#
#connect_dict = {}
connect#connect_dict['body'] = {}
connect#connect_dict['body']['control'] = {}
connect#connect_dict['body']['control']['0'] = {}
connect#connect_dict['body']['control']['0']['control_info'] = {}
connect#connect_dict['body']['control']['0']['control_info']['instrument'] = 'TMO'
connect#connect_dict['body']['control']['0']['control_info']['cfg_dbase'] = 'mcbrowne:psana@psdb-dev:9306/configDB'
connect#connect_json = json.dumps(connect_dict)
#cfgtype: string with enumerated values of "BEAM", and perhaps "NO_BEAM" as well?
#detname: string with detector identification. in this case it's "tmotimetool"
|
...
|
from psalg.configdb.typed_json import cdict
import psalg.configdb.configdb as cdb
import sys
def write_scratch_pad(prescaling):
create = True
dbname = 'configDB'
instrument = 'TMO'
mycdb = cdb.configdb('mcbrowne:psana@psdb-dev:9306', instrument, create, dbname)
my_dict = mycdb.get_configuration("BEAM","tmotimetool")
top = cdict()
top.setInfo('timetool', 'tmotimetool', 'serial1234', 'No comment')
top.setAlg('timetoolConfig', [0,0,1])
top.set("cl.Application.AppLane1.Prescale.ScratchPad",int(prescaling),'UINT32')
mycdb.modify_device('BEAM', top)
if __name__ == "__main__":
#takes one integer as an argument
write_scratch_pad(sys.argv[1])
|
/configDB'