def METHOD_NAME(self, msg: can.Message, timeout: Optional[float] = None):
    """Transmit a message to the CAN bus.
    :param Message msg: A message object.
    :param timeout: timeout is not supported.
        The function won't return until message is sent or exception is raised.
    :raises CanOperationError:
        if the message could not be sent
    """
    can_id = msg.arbitration_id
    if msg.is_extended_id:
        can_id = can_id | CAN_EFF_FLAG
    if msg.is_remote_frame:
        can_id = can_id | CAN_RTR_FLAG
    if msg.is_error_frame:
        can_id = can_id | CAN_ERR_FLAG
    # Pad message data
    msg.data.extend([0x00] * (CAN_MAX_DLC - len(msg.data)))
    frame = GsUsbFrame()
    frame.can_id = can_id
    frame.can_dlc = msg.dlc
    frame.timestamp_us = int(msg.timestamp * 1000000)
    frame.data = list(msg.data)
    try:
        self.gs_usb.METHOD_NAME(frame)
    except usb.core.USBError:
        raise CanOperationError("The message could not be sent")