def __init__(self, machine) -> None:
        """Initialise OPP platform."""
        super().__init__(machine)
        self.opp_connection = {}            # type: Dict[str, OPPSerialCommunicator]
        self.serial_connections = set()     # type: Set[OPPSerialCommunicator]
        self.opp_incands = dict()           # type: Dict[str, OPPIncandCard]
        self.opp_solenoid = []              # type: List[OPPSolenoidCard]
        self.sol_dict = dict()              # type: Dict[str, OPPSolenoid]
        self.opp_inputs = []                # type: List[Union[OPPInputCard, OPPMatrixCard]]
        self.inp_dict = dict()              # type: Dict[str, OPPSwitch]
        self.inp_addr_dict = dict()         # type: Dict[str, OPPInputCard]
        self.matrix_inp_addr_dict = dict()  # type: Dict[str, OPPMatrixCard]
        self.read_input_msg = {}            # type: Dict[str, bytes]
        self.neo_card_dict = dict()         # type: Dict[str, OPPNeopixelCard]
        self.matrix_light_cards = dict()    # type: Dict[str, OPPModernMatrixLightsCard]
        self.num_gen2_brd = 0
        self.gen2_addr_arr = {}             # type: Dict[str, Dict[int, Optional[int]]]
        self.bad_crc = defaultdict(lambda: 0)
        self.min_version = defaultdict(lambda: 0xffffffff)      # type: Dict[str, int]
        self._poll_task = {}                # type: Dict[str, asyncio.Task]
        self._incand_task = None            # type: Optional[asyncio.Task]
        self._light_system = None           # type: Optional[PlatformBatchLightSystem]

        self.features['tickless'] = True

        self.config = self.machine.config_validator.validate_config("opp", self.machine.config.get('opp', {}))
        self._configure_device_logging_and_debug("OPP", self.config)
        self._poll_response_received = {}   # type: Dict[str, asyncio.Event]
        assert self.log is not None

        if self.config['driverboards']:
            self.machine_type = self.config['driverboards']
        else:
            self.machine_type = self.machine.config['hardware']['driverboards'].lower()

        if self.machine_type == 'gen1':
            raise AssertionError("Original OPP boards not currently supported.")
        if self.machine_type == 'gen2':
            self.debug_log("Configuring the OPP Gen2 boards")
        else:
            self.raise_config_error('Invalid driverboards type: {}'.format(self.machine_type), 15)

        # Only including responses that should be received
        self.opp_commands = {
            ord(OppRs232Intf.INV_CMD): self.inv_resp,
            ord(OppRs232Intf.EOM_CMD): self.eom_resp,
            ord(OppRs232Intf.GET_GEN2_CFG): self.get_gen2_cfg_resp,
            ord(OppRs232Intf.READ_GEN2_INP_CMD): self.read_gen2_inp_resp_initial,
            ord(OppRs232Intf.GET_VERS_CMD): self.vers_resp,
            ord(OppRs232Intf.READ_MATRIX_INP): self.read_matrix_inp_resp_initial,
        }