Skip to content

Commit

Permalink
Merge branch 'no-powerboard' into testing
Browse files Browse the repository at this point in the history
  • Loading branch information
WillB97 committed Jul 14, 2024
2 parents cd24666 + baca653 commit 94ae215
Showing 1 changed file with 33 additions and 14 deletions.
47 changes: 33 additions & 14 deletions sbot/robot.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,12 @@ class Robot:
:param trace_logging: Enable trace level logging to the console, defaults to False
:param manual_boards: A dictionary of board types to a list of serial port paths
to allow for connecting to boards that are not automatically detected, defaults to None
:param no_powerboard: If True, initialize the robot without a powerboard, defaults to False
"""
__slots__ = (
'_lock', '_metadata', '_power_board', '_motor_boards', '_servo_boards',
'_arduinos', '_cameras', '_mqttc', '_start_button', '_time_server', '_user_leds',
'_start_led',
'_start_led', '_no_pb',
)

def __init__(
Expand All @@ -59,6 +60,7 @@ def __init__(
wait_for_start: bool = True,
trace_logging: bool = False,
manual_boards: dict[str, list[str]] | None = None,
no_powerboard: bool = False,
) -> None:
self._lock: TimeServer | socket | None
if IN_SIMULATOR:
Expand All @@ -70,6 +72,7 @@ def __init__(
else:
self._lock = obtain_lock()
self._metadata: Metadata | None = None
self._no_pb = no_powerboard

setup_logging(debug, trace_logging)
ensure_atexit_on_term()
Expand Down Expand Up @@ -102,10 +105,11 @@ def _init_power_board(self, manual_boards: list[str] | None = None) -> None:
defaults to None
:raises RuntimeError: If exactly one PowerBoard is not found
"""
power_boards = PowerBoard._get_supported_boards(manual_boards)
self._power_board = singular(power_boards)
self._power_board.outputs.power_on()
# TODO delay for boards to power up ???
if not self._no_pb:
power_boards = PowerBoard._get_supported_boards(manual_boards)
self._power_board = singular(power_boards)
self._power_board.outputs.power_on()
# TODO delay for boards to power up ???

def _init_aux_boards(self, manual_boards: dict[str, list[str]] | None = None) -> None:
"""
Expand Down Expand Up @@ -153,8 +157,10 @@ def _log_connected_boards(self) -> None:
Firmware versions are also logged at debug level.
"""
# we only have one power board so make it iterable
power_board = [] if self._no_pb else [self.power_board]
boards = itertools.chain(
[self.power_board], # we only have one power board so make it iterable
power_board,
self.motor_boards.values(),
self.servo_boards.values(),
self.arduinos.values(),
Expand All @@ -176,7 +182,10 @@ def power_board(self) -> PowerBoard:
:return: The power board object
"""
return self._power_board
if not self._no_pb:
return self._power_board
else:
raise RuntimeError("No power board was initialized")

@property
def motor_boards(self) -> Mapping[str, MotorBoard]:
Expand Down Expand Up @@ -332,26 +341,36 @@ def wait_start(self) -> None:
Once the start button is pressed, the metadata will be loaded and the timeout
will start if in competition mode.
"""
def null_button_pressed() -> bool:
return False

if MQTT_VALID:
remote_start_pressed = self._start_button.get_start_button_pressed
else:
def null_button_pressed() -> bool:
return False
remote_start_pressed = null_button_pressed

if not self._no_pb:
start_button_pressed = self.power_board._start_button
else:
# null out the start button function
start_button_pressed = null_button_pressed

# ignore previous button presses
_ = self.power_board._start_button()
_ = start_button_pressed()
_ = remote_start_pressed()
logger.info('Waiting for start button.')

self.power_board.piezo.buzz(Note.A6, 0.1)
self.power_board._run_led.flash()
if not self._no_pb:
self.power_board.piezo.buzz(Note.A6, 0.1)
self.power_board._run_led.flash()
self._start_led.flash_start()

while not self.power_board._start_button() and not remote_start_pressed():
while not start_button_pressed() and not remote_start_pressed():
self.sleep(0.1)
logger.info("Start button pressed.")
self.power_board._run_led.on()

if not self._no_pb:
self.power_board._run_led.on()
self._start_led.set_state(False)

if self._metadata is None:
Expand Down

0 comments on commit 94ae215

Please sign in to comment.