Beispiel #1
0
int32_t HAL_USB_USART_Available_Data(HAL_USB_USART_Serial serial)
{
    int32_t available = 0;
    int state = HAL_disable_irq();
    available = ring_data_avail(usbUsartMap[serial].data->rx_buffer_length,
                                usbUsartMap[serial].data->rx_buffer_head,
                                usbUsartMap[serial].data->rx_buffer_tail);
    HAL_enable_irq(state);
    return available;
}
Beispiel #2
0
/* Returns the amount of free space available in buffer */
static inline uint32_t ring_space_avail(uint32_t size, uint32_t head, uint32_t tail)
{
  return size - ring_data_avail(size, head, tail) - 1;
}
Beispiel #3
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;