예제 #1
0
    def test_reset_watchdog_both(self):
        ev_a = TestEvent()
        ev_b = TestEvent()

        self.system.eps.controller_a.on_reset_watchdog = ev_a.set
        self.system.eps.controller_b.on_reset_watchdog = ev_b.set

        self.system.obc.eps_reset_watchdog(ResetWatchdogOn.Both)

        self.assertTrue(ev_a.wait_for_change(1),
                        "Watchdog should be reseted (controller A)")
        self.assertTrue(ev_b.wait_for_change(1),
                        "Watchdog should be reseted (controller B)")
예제 #2
0
    def test_reset_watchdog_b(self):
        ev = TestEvent()
        self.system.eps.controller_b.on_reset_watchdog = ev.set

        self.system.obc.eps_reset_watchdog(ResetWatchdogOn.B)

        self.assertTrue(ev.wait_for_change(1),
                        "Watchdog should be reseted (controller A)")
예제 #3
0
    def test_enable_lcl(self):
        ev = TestEvent()

        self.system.eps.TKmain.on_enable = ev.set

        self.system.obc.enable_lcl(0x01)

        self.assertTrue(ev.wait_for_change(1),
                        "Should enable TKmain LCL (controller A)")

        ev = TestEvent()

        self.system.eps.TKred.on_enable = ev.set

        self.system.obc.enable_lcl(0x11)

        self.assertTrue(ev.wait_for_change(1),
                        "Should enable TKred LCL (controller B)")
예제 #4
0
    def test_enable_burn_switch(self):
        ev = TestEvent()

        self.system.eps.SAILmain.on_enable = ev.set

        self.system.obc.enable_burn_switch(True, 1)

        self.assertTrue(ev.wait_for_change(1),
                        "Burn switch should be enabled (controller A)")

        ev = TestEvent()

        self.system.eps.SAILred.on_enable = ev.set

        self.system.obc.enable_burn_switch(False, 1)

        self.assertTrue(ev.wait_for_change(1),
                        "Burn switch should be enabled (controller B)")
예제 #5
0
    def test_disable_overheat_mode(self):
        ev = TestEvent()

        self.system.eps.controller_a.on_disable_overheat_submode = ev.set

        self.assertTrue(self.system.obc.disable_overheat_submode('A'))

        self.assertTrue(ev.wait_for_change(1),
                        "Should disable overheat mode (controller A)")

        ev = TestEvent()

        self.system.eps.controller_b.on_disable_overheat_submode = ev.set

        self.assertTrue(self.system.obc.disable_overheat_submode('B'))

        self.assertTrue(ev.wait_for_change(1),
                        "Should disable overheat mode (controller B)")
예제 #6
0
    def test_should_trigger_power_cycle_after_reaching_error_limit(self):
        self.system.i2c.enable_bus_devices([self.system.comm.receiver.address],
                                           False)

        power_cycle_requested = TestEvent()

        self.system.eps.controller_a.on_power_cycle = power_cycle_requested.set

        limit = 128
        increment = 5
        errors = ceil(limit / increment)
        requested = power_cycle_requested.wait_for_change(errors * 1.5)

        self.assertTrue(requested, "Power cycle should be requested")
예제 #7
0
    def test_should_trigger_power_cycle(self):
        self._start()

        power_cycle_requested = TestEvent()

        self.system.eps.controller_a.on_power_cycle = power_cycle_requested.set

        self.system.comm.put_frame(PowerCycleTelecommand(0x21))

        ack = self.system.comm.get_frame(5, filter_type=PowerSuccessFrame)
        self.assertIsInstance(ack, PowerSuccessFrame)

        power_cycle_requested.wait_for_change(1)

        self.system.restart()