diff --git a/src/class/vendor/vendor_device.c b/src/class/vendor/vendor_device.c index 62e183465d..a8c40557e7 100644 --- a/src/class/vendor/vendor_device.c +++ b/src/class/vendor/vendor_device.c @@ -166,6 +166,12 @@ uint32_t tud_vendor_n_write_available(uint8_t idx) { vendord_interface_t *p_itf = &_vendord_itf[idx]; return tu_edpt_stream_write_available(p_itf->rhport, &p_itf->stream.tx); } +#else +bool tud_vendor_n_write_zlp_if_needed(uint8_t idx, uint32_t last_xferred_bytes) { + TU_VERIFY(idx < CFG_TUD_VENDOR, 0); + vendord_interface_t *p_itf = &_vendord_itf[idx]; + return tu_edpt_stream_write_zlp_if_needed(p_itf->rhport, &p_itf->stream.tx, last_xferred_bytes); +} #endif //--------------------------------------------------------------------+ diff --git a/src/class/vendor/vendor_device.h b/src/class/vendor/vendor_device.h index 764d990702..80135aa06c 100644 --- a/src/class/vendor/vendor_device.h +++ b/src/class/vendor/vendor_device.h @@ -94,6 +94,9 @@ uint32_t tud_vendor_n_write_flush(uint8_t idx); // Return number of bytes available for writing in TX FIFO uint32_t tud_vendor_n_write_available(uint8_t idx); +#else +// TX FIFO disabled, write zlp manually. +bool tud_vendor_n_write_zlp_if_needed(uint8_t idx, uint32_t last_xferred_bytes); #endif // Write a null-terminated string to TX FIFO @@ -155,6 +158,10 @@ TU_ATTR_ALWAYS_INLINE static inline uint32_t tud_vendor_write_flush(void) { TU_ATTR_ALWAYS_INLINE static inline uint32_t tud_vendor_write_available(void) { return tud_vendor_n_write_available(0); } +#else +TU_ATTR_ALWAYS_INLINE static inline bool tud_vendor_write_zlp_if_needed(uint32_t last_xferred_bytes) { + return tud_vendor_n_write_zlp_if_needed(0, last_xferred_bytes); +} #endif // backward compatible