Skip to content

Commit 9af767d

Browse files
authored
Merge pull request #53 from ISISComputingGroup/autosave_freq
Change ICP autosave frequency
2 parents 639ab86 + f378504 commit 9af767d

File tree

4 files changed

+61
-0
lines changed

4 files changed

+61
-0
lines changed

src/genie_python/genie.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2554,3 +2554,23 @@ def get_detector_table() -> str | None:
25542554
"""
25552555
assert _genie_api.dae is not None
25562556
return _genie_api.dae.get_table_path("Detector")
2557+
2558+
2559+
@usercommand
2560+
@log_command_and_handle_exception
2561+
def get_dae_autosave_freq() -> int | None:
2562+
"""
2563+
Gets the ICP autosave frequency (Frames).
2564+
"""
2565+
assert _genie_api.dae is not None
2566+
return _genie_api.dae.get_autosave_freq()
2567+
2568+
2569+
@usercommand
2570+
@log_command_and_handle_exception
2571+
def set_dae_autosave_freq(freq: int) -> None:
2572+
"""
2573+
Sets the ICP autosave frequency (Frames).
2574+
"""
2575+
assert _genie_api.dae is not None
2576+
return _genie_api.dae.set_autosave_freq(freq)

src/genie_python/genie_dae.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@
127127
"specintegrals_size": "DAE:SPECINTEGRALS.NORD",
128128
"specdata": "DAE:SPECDATA",
129129
"specdata_size": "DAE:SPECDATA.NORD",
130+
"autosave_freq": "DAE:AUTOSAVE:FREQ",
131+
"autosave_freq_sp": "DAE:AUTOSAVE:FREQ:SP",
130132
}
131133

132134
DAE_CONFIG_FILE_PATHS = [
@@ -2234,3 +2236,18 @@ def integrate_spectrum(
22342236
# run sum of terms, note in the case that the high and low partials
22352237
# are in the same bin this still works
22362238
return full_count + partial_count_high - partial_count_low
2239+
2240+
def get_autosave_freq(self) -> int | None:
2241+
"""
2242+
Gets the ICP autosave frequency (Frames).
2243+
"""
2244+
val = self._get_pv_value(self._get_dae_pv_name("autosave_freq"))
2245+
assert isinstance(val, (int, float, type(None)))
2246+
return int(val) if val is not None else None
2247+
2248+
def set_autosave_freq(self, freq: int) -> None:
2249+
"""
2250+
Sets the ICP autosave frequency (Frames).
2251+
"""
2252+
self._set_pv_value(self._get_dae_pv_name("autosave_freq_sp"), freq, wait=True)
2253+
self.api.logger.log_info_msg(f"Autosave frequency changed to: {freq}")

src/genie_python/genie_simulate_impl.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,7 @@ def __init__(self) -> None:
305305
"mode": "distribution",
306306
}
307307
self.change_cache = ChangeCache()
308+
self.autosave_freq = 10
308309

309310
@require_runstate(["SETUP"])
310311
def begin_run(
@@ -1091,6 +1092,13 @@ def get_table_path(self, table_type: str) -> str:
10911092
if table_type == "Spectra":
10921093
return self.change_cache.spectra
10931094

1095+
def get_autosave_freq(self) -> int | None:
1096+
return self.autosave_freq
1097+
1098+
def set_autosave_freq(self, freq: int) -> None:
1099+
print(f"Autosave frequency changed to: {freq}")
1100+
self.autosave_freq = freq
1101+
10941102

10951103
class API(object):
10961104
def __init__(

tests/test_genie_dae.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,22 @@ def test_WHEN_temporarily_kill_isisicp_context_manager_used_THEN_isisicp_killed(
735735
dead_process.kill.assert_not_called()
736736
live_process.kill.assert_not_called()
737737

738+
def test_WHEN_get_autosave_frequency_THEN_reads_from_PV(self):
739+
self.api.get_pv_value = MagicMock(return_value=10)
740+
result = self.dae.get_autosave_freq()
741+
742+
assert result == 10
743+
744+
def test_WHEN_set_autosave_frequency_THEN_writes_to_PV(self):
745+
self.api.set_pv_value = MagicMock()
746+
self.dae.set_autosave_freq(10)
747+
748+
pv_name = self.dae._get_dae_pv_name("autosave_freq_sp")
749+
func = self.api.set_pv_value
750+
751+
self.assertTrue(func.called)
752+
func.assert_called_with(pv_name, 10, True)
753+
738754

739755
@parameterized_class(
740756
[

0 commit comments

Comments
 (0)