def METHOD_NAME(self):
    """@brief Read data on the IN endpoint associated to the HID interface"""
    # Spin for a while if there's not data available yet. 100 µs sleep between checks.
    with Timeout(self.DEFAULT_USB_TIMEOUT_S, sleeptime=0.0001) as t_o:
        while t_o.check():
            if len(self.rcv_data):
                break
        else:
            # Read operations should typically take ~1-2ms.
            # If this exception occurs, then it could indicate
            # a problem in one of the following areas:
            # 1. Bad usb driver causing either a dropped read or write
            # 2. CMSIS-DAP firmware problem cause a dropped read or write
            # 3. CMSIS-DAP is performing a long operation or is being
            #    halted in a debugger
            raise DAPAccessIntf.DeviceError(f"Timeout reading from device {self.serial_number}")
    # Trace when the higher layer actually gets a packet previously read.
    if TRACE.isEnabledFor(logging.DEBUG):
        # Strip off trailing zero bytes to reduce clutter.
        TRACE.debug("  USB RD < (%d) %s", len(self.rcv_data[0]),
                ' '.join([f'{i:02x}' for i in bytes(self.rcv_data[0]).rstrip(b'\x00')]))
    return self.rcv_data.popleft()