def METHOD_NAME(
    self, timeout: Optional[float]
) -> Tuple[Optional[can.Message], bool]:
    """
    Read a message from the bus and tell whether it was filtered.
    This methods may be called by :meth:`~can.BusABC.recv`
    to read a message multiple times if the filters set by
    :meth:`~can.BusABC.set_filters` do not match and the call has
    not yet timed out.
    Never raises an error/exception.
    :param float timeout: seconds to wait for a message,
                          see :meth:`~can.BusABC.send`
                          0 and None will be converted to minimum value 1ms.
    :return:
        1.  a message that was read or None on timeout
        2.  a bool that is True if message filtering has already
            been done and else False. In this interface it is always False
            since filtering is not available
    """
    frame = GsUsbFrame()
    # Do not set timeout as None or zero here to avoid blocking
    timeout_ms = round(timeout * 1000) if timeout else 1
    if not self.gs_usb.read(frame=frame, timeout_ms=timeout_ms):
        return None, False
    msg = can.Message(
        timestamp=frame.timestamp,
        arbitration_id=frame.arbitration_id,
        is_extended_id=frame.is_extended_id,
        is_remote_frame=frame.is_remote_frame,
        is_error_frame=frame.is_error_frame,
        channel=self.channel_info,
        dlc=frame.can_dlc,
        data=bytearray(frame.data)[0 : frame.can_dlc],
        is_rx=frame.echo_id == GS_USB_NONE_ECHO_ID,
    )
    return msg, False