Source code for j5.boards.sr.v4.motor_board

"""Classes for the SR v4 Motor Board."""
from typing import TYPE_CHECKING, List, Optional, Set, Type, cast

from j5.backends import Backend
from j5.boards import Board
from j5.components.motor import Motor, MotorInterface, MotorSpecialState

if TYPE_CHECKING:  # pragma: no cover
    from j5.components import (  # noqa: F401
        Component,
    )


[docs]class MotorBoard(Board): """Student Robotics v4 Motor Board.""" def __init__(self, serial: str, backend: Backend): self._serial = serial self._backend = backend self._outputs: List[Motor] = [ Motor(output, cast(MotorInterface, self._backend)) for output in range(0, 2) ] @property def name(self) -> str: """Get a human friendly name for this board.""" return "Student Robotics v4 Motor Board" @property def serial(self) -> str: """Get the serial number.""" return self._serial @property def firmware_version(self) -> Optional[str]: """Get the firmware version of the board.""" return self._backend.firmware_version @property def motors(self) -> List[Motor]: """Get the motors on this board.""" return self._outputs
[docs] def make_safe(self) -> None: """Make this board safe.""" for output in self._outputs: # Brake both motors. output.state = MotorSpecialState.BRAKE
[docs] @staticmethod def supported_components() -> Set[Type['Component']]: """List the types of components supported by this board.""" return {Motor}