#include "py/mphal.h"
#include "usb.h"
#include "common.h"

static int vcp_iface_num = -1;

int mp_hal_stdin_rx_chr(void) {

    ensure(vcp_iface_num >= 0, "vcp stdio is not configured");

#define VCP_READ_TIMEOUT  25
    uint8_t c = 0;
    while (usb_vcp_read_blocking(vcp_iface_num, &c, 1, VCP_READ_TIMEOUT) < 1) {
        // wait until we read a byte
    }
    return c;
}

void mp_hal_stdout_tx_strn(const char *str, size_t len) {
    #define VCP_WRITE_TIMEOUT 0

    if (vcp_iface_num >= 0) {
        usb_vcp_write_blocking(vcp_iface_num, (const uint8_t *)str, len, VCP_WRITE_TIMEOUT);
    } else {
        // no-op
    }
}

void mp_hal_set_vcp_iface(int iface_num) {
    vcp_iface_num = iface_num;
}