def set_router_emergency_timeout(self, timeout, transceiver, placements,
                                     extra_monitor_cores_to_set):
        """ Sets the timeout of the routers

        :param timeout: The mantissa and exponent of the timeout value, \
            each between 0 and 15
        :type timeout: (int, int)
        :param transceiver: the spinnMan instance
        :type transceiver: :py:class:`~spinnman.Transceiver`
        :param placements: the placements object
        :type placements: :py:class:`~pacman.model.placements.Placements`
        :param extra_monitor_cores_to_set: \
            the set of vertices to change the local chip for.
        """
        mantissa, exponent = timeout
        core_subsets = convert_vertices_to_core_subset(
            extra_monitor_cores_to_set, placements)
        process = SetRouterEmergencyTimeoutProcess(
            transceiver.scamp_connection_selector)
        try:
            process.set_timeout(mantissa, exponent, core_subsets)
        except:  # noqa: E722
            emergency_recover_state_from_failure(
                transceiver, self._app_id, self,
                placements.get_placement_of_vertex(self))
            raise
    def load_application_mc_routes(self, placements,
                                   extra_monitor_cores_for_data, transceiver):
        """ Get the extra monitor cores to load up the application-based\
            multicast routes (used by data in).

        :param placements: the placements object
        :type placements: :py:class:`~pacman.model.placements.Placements`
        :param extra_monitor_cores_for_data: \
            the extra monitor cores to get status from
        :type extra_monitor_cores_for_data: \
            iterable(:py:class:`ExtraMonitorSupportMachineVertex`)
        :param transceiver: the spinnMan interface
        :type transceiver: :py:class:`~spinnman.Transceiver`
        :rtype: None
        """
        core_subsets = self._convert_vertices_to_core_subset(
            extra_monitor_cores_for_data, placements)
        process = LoadApplicationMCRoutesProcess(
            transceiver.scamp_connection_selector)
        try:
            return process.load_application_mc_routes(core_subsets)
        except:  # noqa: E722
            emergency_recover_state_from_failure(
                transceiver, self._app_id, self,
                placements.get_placement_of_vertex(self))
            raise
    def set_router_time_outs(self, timeout, transceiver, placements,
                             extra_monitor_cores_to_set):
        """ Supports setting of the router time outs for a set of chips via\
            their extra monitor cores.

        :param timeout: The mantissa and exponent of the timeout value, \
            each between 0 and 15
        :type timeout: (int, int)
        :param transceiver: the spinnman interface
        :type transceiver: :py:class:`~spinnman.Transceiver`
        :param placements: placements object
        :type placements: :py:class:`~pacman.model.placements.Placements`
        :param extra_monitor_cores_to_set: which vertices to use
        :rtype: None
        """
        mantissa, exponent = timeout
        core_subsets = convert_vertices_to_core_subset(
            extra_monitor_cores_to_set, placements)
        process = SetRouterTimeoutProcess(
            transceiver.scamp_connection_selector)
        try:
            process.set_timeout(mantissa, exponent, core_subsets)
        except:  # noqa: E722
            emergency_recover_state_from_failure(
                transceiver, self._app_id, self,
                placements.get_placement_of_vertex(self))
            raise
    def load_system_mc_routes(
            self, placements, extra_monitor_cores_for_data, transceiver):
        """ Get the extra monitor cores to load up the system-based \
            multicast routes (used by data in).

        :param ~pacman.model.placements.Placements placements:
            the placements object
        :param extra_monitor_cores_for_data:
            the extra monitor cores to get status from
        :type extra_monitor_cores_for_data:
            iterable(ExtraMonitorSupportMachineVertex)
        :param ~spinnman.transceiver.Transceiver transceiver:
            the spinnMan interface
        """
        core_subsets = self._convert_vertices_to_core_subset(
            extra_monitor_cores_for_data, placements)
        process = LoadSystemMCRoutesProcess(
            transceiver.scamp_connection_selector)
        try:
            return process.load_system_mc_routes(core_subsets)
        except:  # noqa: E722
            emergency_recover_state_from_failure(
                transceiver, self._app_id, self,
                placements.get_placement_of_vertex(self))
            raise
    def set_router_emergency_timeout(
            self, timeout, transceiver, placements,
            extra_monitor_cores_to_set):
        """ Sets the timeout of the routers

        :param tuple(int,int) timeout:
            The mantissa and exponent of the timeout value, each between
            0 and 15
        :param ~spinnman.transceiver.Transceiver transceiver:
            the spinnMan instance
        :param ~pacman.model.placements.Placements placements:
            vertex placements
        :param extra_monitor_cores_to_set:
            which monitors control the routers to set the timeout of
        :type extra_monitor_cores_to_set:
            iterable(ExtraMonitorSupportMachineVertex)
        """
        mantissa, exponent = timeout
        core_subsets = convert_vertices_to_core_subset(
            extra_monitor_cores_to_set, placements)
        process = SetRouterEmergencyTimeoutProcess(
            transceiver.scamp_connection_selector)
        try:
            process.set_timeout(mantissa, exponent, core_subsets)
        except:  # noqa: E722
            emergency_recover_state_from_failure(
                transceiver, self._app_id, self,
                placements.get_placement_of_vertex(self))
            raise
    def set_reinjection_packets(self,
                                placements,
                                extra_monitor_cores_for_data,
                                transceiver,
                                point_to_point=None,
                                multicast=None,
                                nearest_neighbour=None,
                                fixed_route=None):
        """
        :param placements: placements object
        :param extra_monitor_cores_for_data: \
            the extra monitor cores to set the packets of
        :param transceiver: spinnman instance
        :param point_to_point: \
            If point to point should be set, or None if left as before
        :type point_to_point: bool or None
        :param multicast: \
            If multicast should be set, or None if left as before
        :type multicast: bool or None
        :param nearest_neighbour: \
            If nearest neighbour should be set, or None if left as before
        :type nearest_neighbour: bool or None
        :param fixed_route: \
            If fixed route should be set, or None if left as before.
        :type fixed_route: bool or None
        :rtype: None
        """
        # pylint: disable=too-many-arguments
        if multicast is not None:
            self._reinject_multicast = multicast
        if point_to_point is not None:
            self._reinject_point_to_point = point_to_point
        if nearest_neighbour is not None:
            self._reinject_nearest_neighbour = nearest_neighbour
        if fixed_route is not None:
            self._reinject_fixed_route = fixed_route

        core_subsets = convert_vertices_to_core_subset(
            extra_monitor_cores_for_data, placements)
        process = SetPacketTypesProcess(transceiver.scamp_connection_selector)
        try:
            process.set_packet_types(core_subsets,
                                     self._reinject_point_to_point,
                                     self._reinject_multicast,
                                     self._reinject_nearest_neighbour,
                                     self._reinject_fixed_route)
        except:  # noqa: E722
            emergency_recover_state_from_failure(
                transceiver, self._app_id, self,
                placements.get_placement_of_vertex(self))
            raise
    def get_reinjection_status(self, placements, transceiver):
        """ Get the reinjection status from this extra monitor vertex

        :param transceiver: the spinnMan interface
        :param placements: the placements object
        :return: the reinjection status for this vertex
        """
        placement = placements.get_placement_of_vertex(self)
        process = ReadStatusProcess(transceiver.scamp_connection_selector)
        try:
            return process.get_reinjection_status(placement.x, placement.y,
                                                  placement.p)
        except:  # noqa: E722
            emergency_recover_state_from_failure(transceiver, self._app_id,
                                                 self, placement)
            raise
    def clear_reinjection_queue(self, transceiver, placements,
                                extra_monitor_cores_to_set):
        """ Clears the queues for reinjection

        :type transceiver: :py:class:`~spinnman.Transceiver`
        :type placements: :py:class:`~pacman.model.placements.Placements`
        :type extra_monitor_cores_to_set: \
            iterable(:py:class:`ExtraMonitorSupportMachineVertex`)
        """
        core_subsets = convert_vertices_to_core_subset(
            extra_monitor_cores_to_set, placements)
        process = ClearQueueProcess(transceiver.scamp_connection_selector)
        try:
            process.reset_counters(core_subsets)
        except:  # noqa: E722
            emergency_recover_state_from_failure(
                transceiver, self._app_id, self,
                placements.get_placement_of_vertex(self))
            raise
    def get_reinjection_status_for_vertices(self, placements,
                                            extra_monitor_cores_for_data,
                                            transceiver):
        """ Get the reinjection status from a set of extra monitor cores

        :param placements: the placements object
        :param extra_monitor_cores_for_data: \
            the extra monitor cores to get status from
        :param transceiver: the spinnMan interface
        :rtype: None
        """
        core_subsets = convert_vertices_to_core_subset(
            extra_monitor_cores_for_data, placements)
        process = ReadStatusProcess(transceiver.scamp_connection_selector)
        try:
            return process.get_reinjection_status_for_core_subsets(
                core_subsets)
        except:  # noqa: E722
            emergency_recover_state_from_failure(
                transceiver, self._app_id, self,
                placements.get_placement_of_vertex(self))
            raise
    def clear_reinjection_queue(
            self, transceiver, placements, extra_monitor_cores_to_set):
        """ Clears the queues for reinjection

        :param ~spinnman.transceiver.Transceiver transceiver:
            the spinnMan interface
        :param ~pacman.model.placements.Placements placements:
            the placements object
        :param extra_monitor_cores_to_set:
            Which extra monitors need to clear their queues.
        :type extra_monitor_cores_to_set:
            iterable(ExtraMonitorSupportMachineVertex)
        """
        core_subsets = convert_vertices_to_core_subset(
            extra_monitor_cores_to_set, placements)
        process = ClearQueueProcess(transceiver.scamp_connection_selector)
        try:
            process.reset_counters(core_subsets)
        except:  # noqa: E722
            emergency_recover_state_from_failure(
                transceiver, self._app_id, self,
                placements.get_placement_of_vertex(self))
            raise
    def reset_reinjection_counters(
            self, transceiver, placements, extra_monitor_cores_to_set):
        """ Resets the counters for reinjection

        :param ~spinnman.transceiver.Transceiver transceiver:
            the spinnMan interface
        :param ~pacman.model.placements.Placements placements:
            the placements object
        :param extra_monitor_cores_to_set:
            which monitors control the routers to reset the counters of
        :type extra_monitor_cores_to_set:
            iterable(ExtraMonitorSupportMachineVertex)
        """
        core_subsets = convert_vertices_to_core_subset(
            extra_monitor_cores_to_set, placements)
        process = ResetCountersProcess(transceiver.scamp_connection_selector)
        try:
            process.reset_counters(core_subsets)
        except:  # noqa: E722
            emergency_recover_state_from_failure(
                transceiver, self._app_id, self,
                placements.get_placement_of_vertex(self))
            raise