mirror of
https://github.com/hathach/tinyusb.git
synced 2025-02-22 15:40:06 +00:00
Merge pull request #1041 from HiFiPhile/vdc
Fix vendor fifo deadlock, add tud_vendor_n_read_flush
This commit is contained in:
commit
8d97f0e81f
9
src/class/vendor/vendor_device.c
vendored
9
src/class/vendor/vendor_device.c
vendored
@ -103,6 +103,13 @@ uint32_t tud_vendor_n_read (uint8_t itf, void* buffer, uint32_t bufsize)
|
|||||||
return num_read;
|
return num_read;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tud_vendor_n_read_flush (uint8_t itf)
|
||||||
|
{
|
||||||
|
vendord_interface_t* p_itf = &_vendord_itf[itf];
|
||||||
|
tu_fifo_clear(&p_itf->rx_ff);
|
||||||
|
_prep_out_transaction(p_itf);
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Write API
|
// Write API
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
@ -199,6 +206,8 @@ uint16_t vendord_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, ui
|
|||||||
TU_BREAKPOINT();
|
TU_BREAKPOINT();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maybe_transmit(p_vendor);
|
||||||
|
|
||||||
return drv_len;
|
return drv_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
7
src/class/vendor/vendor_device.h
vendored
7
src/class/vendor/vendor_device.h
vendored
@ -45,6 +45,7 @@ bool tud_vendor_n_mounted (uint8_t itf);
|
|||||||
uint32_t tud_vendor_n_available (uint8_t itf);
|
uint32_t tud_vendor_n_available (uint8_t itf);
|
||||||
uint32_t tud_vendor_n_read (uint8_t itf, void* buffer, uint32_t bufsize);
|
uint32_t tud_vendor_n_read (uint8_t itf, void* buffer, uint32_t bufsize);
|
||||||
bool tud_vendor_n_peek (uint8_t itf, uint8_t* u8);
|
bool tud_vendor_n_peek (uint8_t itf, uint8_t* u8);
|
||||||
|
void tud_vendor_n_read_flush (uint8_t itf);
|
||||||
|
|
||||||
uint32_t tud_vendor_n_write (uint8_t itf, void const* buffer, uint32_t bufsize);
|
uint32_t tud_vendor_n_write (uint8_t itf, void const* buffer, uint32_t bufsize);
|
||||||
uint32_t tud_vendor_n_write_available (uint8_t itf);
|
uint32_t tud_vendor_n_write_available (uint8_t itf);
|
||||||
@ -59,6 +60,7 @@ static inline bool tud_vendor_mounted (void);
|
|||||||
static inline uint32_t tud_vendor_available (void);
|
static inline uint32_t tud_vendor_available (void);
|
||||||
static inline uint32_t tud_vendor_read (void* buffer, uint32_t bufsize);
|
static inline uint32_t tud_vendor_read (void* buffer, uint32_t bufsize);
|
||||||
static inline bool tud_vendor_peek (uint8_t* u8);
|
static inline bool tud_vendor_peek (uint8_t* u8);
|
||||||
|
static inline void tud_vendor_read_flush (void);
|
||||||
static inline uint32_t tud_vendor_write (void const* buffer, uint32_t bufsize);
|
static inline uint32_t tud_vendor_write (void const* buffer, uint32_t bufsize);
|
||||||
static inline uint32_t tud_vendor_write_str (char const* str);
|
static inline uint32_t tud_vendor_write_str (char const* str);
|
||||||
static inline uint32_t tud_vendor_write_available (void);
|
static inline uint32_t tud_vendor_write_available (void);
|
||||||
@ -99,6 +101,11 @@ static inline bool tud_vendor_peek (uint8_t* u8)
|
|||||||
return tud_vendor_n_peek(0, u8);
|
return tud_vendor_n_peek(0, u8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void tud_vendor_read_flush(void)
|
||||||
|
{
|
||||||
|
tud_vendor_n_read_flush(0);
|
||||||
|
}
|
||||||
|
|
||||||
static inline uint32_t tud_vendor_write (void const* buffer, uint32_t bufsize)
|
static inline uint32_t tud_vendor_write (void const* buffer, uint32_t bufsize)
|
||||||
{
|
{
|
||||||
return tud_vendor_n_write(0, buffer, bufsize);
|
return tud_vendor_n_write(0, buffer, bufsize);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user