def METHOD_NAME(self, data: bytes, endpoint: int, cid: int) -> None:
    """
    Send data to the device.
    Args:
        data: Data to send
        endpoint: U2F HID command (endpoint selection)
        cid: U2F HID channel ID
    Throws:
        ValueError: In case any value is out of range
    """
    if endpoint < 0 or endpoint > 0xFF:
        raise ValueError("Channel command (endpoint) is out of range '0 < endpoint <= 0xFF'")
    if cid < 0 or cid > 0xFFFFFFFF:
        raise ValueError("Channel id is out of range '0 < cid <= 0xFFFFFFFF'")
    data = bytearray(data)
    data_len = len(data)
    if data_len > 0xFFFF:
        raise ValueError("Data is too large 'size <= 0xFFFF'")
    seq = 0
    idx = 0
    buf = b""
    # Allow to write an empty packet
    single_empty_write = data_len == 0
    while idx < data_len or single_empty_write:
        if idx == 0:
            # INIT frame
            buf = data[idx : idx + min(data_len, USB_REPORT_SIZE - 7)]
            self._device.METHOD_NAME(
                b"\0"
                + struct.pack(">IBH", cid, endpoint, data_len)
                + buf
                + b"\xEE" * (USB_REPORT_SIZE - 7 - len(buf))
            )
        else:
            # CONT frame
            buf = data[idx : idx + min(data_len, USB_REPORT_SIZE - 5)]
            self._device.METHOD_NAME(
                b"\0"
                + struct.pack(">IB", cid, seq)
                + buf
                + b"\xEE" * (USB_REPORT_SIZE - 5 - len(buf))
            )
            seq += 1
        idx += len(buf)
        single_empty_write = False