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; }
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));