Bases: KPFTranslatorFunction
Configure the exposure meter using the given OB arguments.
Parameters: |
-
ExpMeterMode
(str )
–
See Science OB definition.
-
TriggerExpMeter
(bool )
–
See Science OB definition.
|
KTL Keywords Used:
kpf_expmeter.USETHRESHOLD
kpfconfig.EXPMETER_ENABLED
Scripts Called:
kpf.expmeter.SetExpMeterTerminationParameters
Source code in kpf/expmeter/SetupExpMeter.py
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 | class SetupExpMeter(KPFTranslatorFunction):
'''Configure the exposure meter using the given OB arguments.
Args:
ExpMeterMode (str): See Science OB definition.
TriggerExpMeter (bool): See Science OB definition.
KTL Keywords Used:
- `kpf_expmeter.USETHRESHOLD`
- `kpfconfig.EXPMETER_ENABLED`
Scripts Called:
- `kpf.expmeter.SetExpMeterTerminationParameters`
'''
abortable = False
@classmethod
def pre_condition(cls, args, logger, cfg):
check_input(args, 'Template_Name', allowed_values=['kpf_lamp', 'kpf_sci'])
check_input(args, 'Template_Version', version_check=True, value_min='0.5')
@classmethod
def perform(cls, args, logger, cfg):
kpf_expmeter = ktl.cache('kpf_expmeter')
kpfconfig = ktl.cache('kpfconfig')
log.debug('Setting up exposure meter using SetupExpMeter')
EM_mode = args.get('ExpMeterMode', 'off')
EM_enabled = kpfconfig['EXPMETER_ENABLED'].read() == 'Yes'
if EM_mode == 'monitor' and EM_enabled:
kpf_expmeter['USETHRESHOLD'].write('No')
args['TriggerExpMeter'] = True
elif EM_mode == 'control' and EM_enabled:
args['TriggerExpMeter'] = True
try:
SetExpMeterTerminationParameters.execute(args)
except Exception as e:
log.error('SetExpMeterTerminationParameters failed')
log.error(e)
traceback_text = traceback.format_exc()
log.error(traceback_text)
kpf_expmeter['USETHRESHOLD'].write('No')
elif EM_mode in ['off', False]:
args['TriggerExpMeter'] = False
elif EM_enabled == False:
log.warning('ExpMeter is disabled')
else:
log.warning(f"ExpMeterMode {EM_mode} is not available")
kpf_expmeter['USETHRESHOLD'].write('No')
return args
@classmethod
def post_condition(cls, args, logger, cfg):
pass
@classmethod
def add_cmdline_args(cls, parser, cfg=None):
parser.add_argument('--nointensemon', dest="nointensemon",
default=False, action="store_true",
help='Skip the intensity monitor measurement?')
return super().add_cmdline_args(parser, cfg)
|