Esempio n. 1
0
int32_t HAL_USB_USART_Available_Data_For_Write(HAL_USB_USART_Serial serial)
{
    if (HAL_USB_USART_Is_Connected(serial))
    {
        int state = HAL_disable_irq();
        int32_t available = ring_space_avail(usbUsartMap[serial].data->tx_buffer_size,
                                             usbUsartMap[serial].data->tx_buffer_head,
                                             usbUsartMap[serial].data->tx_buffer_tail);
        HAL_enable_irq(state);
        return available;
    }

    return -1;
}
Esempio n. 2
0
void consume(Stream& serial)
{
    while (serial.available() > 0) {
        (void)serial.read();
    }
}

test(0_USBSERIAL_RingBufferHelperIsSane) {
    uint32_t size = 129;
    uint32_t head = 0;
    uint32_t tail = 0;

    head = 0;
    tail = 0;
    assertEqual(0, ring_data_avail(size, head, tail));
    assertEqual(128, ring_space_avail(size, head, tail));
    assertEqual(0, ring_data_contig(size, head, tail));
    assertEqual(128, ring_space_contig(size, head, tail));
    assertEqual(0, ring_space_wrapped(size, head, tail));

    head = 63;
    tail = 0;
    assertEqual(63, ring_data_avail(size, head, tail));
    assertEqual(65, ring_space_avail(size, head, tail));
    assertEqual(63, ring_data_contig(size, head, tail));
    assertEqual(65, ring_space_contig(size, head, tail));
    assertEqual(0, ring_space_wrapped(size, head, tail));

    head = 63;
    tail = 32;
    assertEqual(31, ring_data_avail(size, head, tail));