USBD_Audio_DrvStreamRecordRx
Description
Get a ready record buffer from codec.
Files
usbd_audio_drv_<codec-name>.h / usbd_audio_drv_<codec-name>.c
Prototype
static void USBD_Audio_DrvStreamRecordRx (USBD_AUDIO_DRV *p_audio_drv, CPU_INT08U terminal_id_link, void *p_buf, CPU_INT16U *p_buf_len, USBD_ERR *p_err)
Arguments
p_audio_drv
Pointer to audio driver structure.
terminal_id_link
Terminal ID associated to this stream.
p_buf
Pointer to record buffer.
p_buf_len
Pointer to buffer length in bytes.
p_err
Pointer to variable that will receive the return error code from this function.
USBD_ERR_NONE
USBD_ERR_RX
Returned Value
None.
...Pointer to a ready record buffer, if NO error(s) occurred.
Null pointer, otherwise.
Callers
Audio Class.
Implementation guidelines
This listing shows an example usage of this function.
static void *USBD_Audio_DrvStreamRecordRx (USBD_AUDIO_DRV *p_audio_drv, CPU_INT08U terminal_id_link, void *p_buf, CPU_INT16U *p_buf_len, USBD_ERR *p_err) { /* $$$$ Retrieve a ready record buffer. */ (1) }
(1) When an audio transfer is completed, the codec driver should signal the record task that a buffer is ready by sending calling the function USBD_Audio_RecordRxCmpl
. This function will post a request to the record task. Upon reception of this request, the record task will call the function USBD_Audio_DrvStreamRecordRx()
through a function pointer to get a ready buffer. If the audio peripheral uses DMA, the buffer is already ready and there is nothing special to do in this function. If the audio peripheral uses a FIFO mode, you may have to copy the received audio samples to the buffer referenced by the pointer p_buf
.
The Audio Peripheral Driver should support at least double-buffering to optimize the record streaming.
(2) In case of error, you may return the error code USBD_ERR_RX
.