| #------------------------------------------------------------------------------- |
| # Copyright (c) 2020, Arm Limited. All rights reserved. |
| # |
| # SPDX-License-Identifier: BSD-3-Clause |
| # |
| #------------------------------------------------------------------------------- |
| |
| """ This module contains a dummy implementation of the debugger control interface |
| """ |
| |
| import logging |
| from irq_test_abstract_debugger import AbstractDebugger |
| |
| class DummyDebugger(AbstractDebugger): |
| """A dummy implementation of the debugger control interface |
| |
| This class can be used for rapidly testing the testcase execution algorithm. |
| |
| Breakpoint names are put in a list to keep track of them. Interrupts are not |
| emulated in any way, the 'trigger_interrupt' function returns without doing |
| anything. 'continue_execution' returns immediately as well, and |
| 'get_triggered_breakpoint' returns the breakpoint added the earliest. |
| """ |
| def __init__(self, use_sw_breakpoints): |
| super(DummyDebugger, self).__init__() |
| self.breakpoints = [] |
| self.use_sw_breakpoints = use_sw_breakpoints |
| |
| def set_breakpoint(self, name, location): |
| if (self.use_sw_breakpoints): |
| breakpoint_type = "sw" |
| else: |
| breakpoint_type = "hw" |
| logging.info("debugger: set %s breakpoint %s", breakpoint_type, name) |
| self.breakpoints.append(name) |
| |
| def trigger_interrupt(self, interrupt_line): |
| logging.info("debugger: triggering interrupt line for %s", str(interrupt_line)) |
| |
| def continue_execution(self): |
| logging.info("debugger: continue") |
| |
| def clear_breakpoints(self): |
| logging.info("debugger: clearing breakpoints") |
| self.breakpoints = [] |
| |
| def get_triggered_breakpoint(self): |
| if self.breakpoints: |
| return self.breakpoints[0] |
| return None |