#ifndef HELPERS_H
#define HELPERS_H

static void put_byte(uint8_t ch) {
    Endpoint_SelectEndpoint(CDC_TX_EPNUM);
    while (!(Endpoint_ReadWriteAllowed())) {
        ;
    }
    Endpoint_Write_Byte(ch);
    Endpoint_ClearCurrentBank();
}

static void print_bits(uint8_t ch) {
    char i;
    
    for (i = 8; i > 0; i--) {
        put_byte(ch & _BV(i-1) ? '1' : '0');
    }
}

static void print_byte(uint8_t ch) {
    if (isprint(ch) || (ch == '\r') || (ch == '\n')) {
        put_byte(ch);
    } else {
        put_byte('.');
    }
}

static void reboot(void) {
    wdt_enable(WDTO_250MS);
    for (;;) {
        ;
    }
}
#endif
