pub fn read_byte(&mut self) -> nb::Result<u8, Error> {
        // Check if there are any bytes to read
        if self
            .regs()
            .ep1_conf()
            .read()
            .serial_out_ep_data_avail()
            .bit_is_set()
        {
            let value = self.regs().ep1().read().rdwr_byte().bits();

            Ok(value)
        } else {
            Err(nb::Error::WouldBlock)
        }
    }
Read a byte from the UART in a non-blocking manner
esp-hal/src/usb_serial_jtag.rs