diff --git a/simulators/lo/generic_LO.py b/simulators/lo/generic_LO.py index 6d1eff6..0bcfd17 100644 --- a/simulators/lo/generic_LO.py +++ b/simulators/lo/generic_LO.py @@ -8,6 +8,8 @@ class System(ListeningSystem): 'POWER?': 'getPower', 'FREQ': 'setFrequency', 'FREQ?': 'getFrequency', + 'OUTP:STAT': 'setRf', + 'OUTP:STAT?': 'getRf', 'SYST:ERR?': 'readStatus' } @@ -16,6 +18,7 @@ class System(ListeningSystem): def __init__(self): self.power = 0 self.frequency = 0.0 + self.rf_status = False # Start as off self._set_default() def _set_default(self): @@ -83,6 +86,20 @@ def getFrequency(self, _): # 'FREQ?\n' return str(int(self.frequency) * 1000000) + def setRf(self, params): + # 'OUTP:STAT ON\n' + # 'OUTP:STAT OFF\n' + if len(params) != 1: + return False + elif params[0] != 'ON' and params[0] != 'OFF': + return False + self.rf_status = params[0] == 'ON' + return True + + def getRf(self, _): + # 'OUTP:STAT?\n' + return str(int(self.rf_status)) + def readStatus(self, _): # 'SYST:ERR?\n' return self.status diff --git a/tests/test_lo.py b/tests/test_lo.py index f00ac47..922f622 100644 --- a/tests/test_lo.py +++ b/tests/test_lo.py @@ -101,6 +101,33 @@ def test_wrong_empty_commands(self): for byte in msg: self.assertTrue(self.system.parse(byte)) + def test_rf_status(self, expected_value=None): + msg = 'OUTP:STAT?\n' + for byte in msg[:-1]: + self.assertTrue(self.system.parse(byte)) + response = self.system.parse(msg[-1]) + if expected_value: + self.assertEqual(response, f'{expected_value}\n') + else: + self.assertIn(response, ['0\n', '1\n']) + + def test_set_rf(self): + for value in ['ON', 'OFF']: + msg = f'OUTP:STAT {value}\n' + for byte in msg: + self.assertTrue(self.system.parse(byte)) + self.test_rf_status(int(value == 'ON')) + + def test_set_rf_wrong_arg_count(self): + msg = 'OUTP:STAT ON OFF\n' + for byte in msg: + self.assertTrue(self.system.parse(byte)) + + def test_set_rf_wrong_arg_value(self): + msg = 'OUTP:STAT ONN\n' + for byte in msg: + self.assertTrue(self.system.parse(byte)) + class TestWLocalOscillator(unittest.TestCase):