From ab6a89a628ef9ad30e3e813bb951c6ecad27c62c Mon Sep 17 00:00:00 2001 From: Christophe Favergeon Date: Mon, 25 Oct 2021 13:38:43 +0200 Subject: [PATCH] CMSIS-DSP: Improve integration of VHT and SDF --- SDFTools/sdf/nodes/cpp/AudioSink.h | 1 + .../cpp/RingBuffer/RingBuffer/RingBuffer.cpp | 57 +++++++------ .../cpp/RingBuffer/RingBuffer/RingBuffer.h | 13 +-- .../cpp/RingBuffer/RingBuffer/RingInit.cpp | 21 ++--- .../cpp/RingBuffer/RingBuffer/RingInit.h | 15 +++- .../cpp/RingBuffer/VHT/AudioInterrupt.cpp | 84 +++++++++++++------ .../cpp/RingBuffer/VHT/Config/RingConfig.h | 11 ++- .../nodes/cpp/RingBuffer/VHT/RingPrivate.h | 33 ++++---- .../sdf/nodes/cpp/RingBuffer/VHT/ring.scvd | 20 ++--- 9 files changed, 153 insertions(+), 102 deletions(-) diff --git a/SDFTools/sdf/nodes/cpp/AudioSink.h b/SDFTools/sdf/nodes/cpp/AudioSink.h index 5d38bed9..4ed48cbc 100755 --- a/SDFTools/sdf/nodes/cpp/AudioSink.h +++ b/SDFTools/sdf/nodes/cpp/AudioSink.h @@ -30,6 +30,7 @@ #include "RingBuffer.h" + template class AudioSink: public GenericSink { diff --git a/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingBuffer.cpp b/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingBuffer.cpp index 72e624ad..ce20f84c 100755 --- a/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingBuffer.cpp +++ b/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingBuffer.cpp @@ -67,43 +67,43 @@ Debug integration */ #ifndef RING_DBG_USER_RESERVE_BUFFER -#define RING_DBG_USER_RESERVE_BUFFER(ID) +#define RING_DBG_USER_RESERVE_BUFFER(ID,CONF) #endif #ifndef RING_DBG_USER_RELEASE_BUFFER -#define RING_DBG_USER_RELEASE_BUFFER(ID) +#define RING_DBG_USER_RELEASE_BUFFER(ID,CONF) #endif #ifndef RING_DBG_USER_WAIT_BUFFER -#define RING_DBG_USER_WAIT_BUFFER(ID) +#define RING_DBG_USER_WAIT_BUFFER(ID,CONF) #endif #ifndef RING_DBG_USER_BUFFER_RELEASED -#define RING_DBG_USER_BUFFER_RELEASED(ID) +#define RING_DBG_USER_BUFFER_RELEASED(ID,CONF) #endif #ifndef RING_DBG_USER_STATUS -#define RING_DBG_USER_STATUS(SA,SB) +#define RING_DBG_USER_STATUS(SA,SB,CONF) #endif #ifndef RING_DBG_INT_RESERVE_BUFFER -#define RING_DBG_INT_RESERVE_BUFFER(ID) +#define RING_DBG_INT_RESERVE_BUFFER(ID,CONF) #endif #ifndef RING_DBG_INT_RELEASE_BUFFER -#define RING_DBG_INT_RELEASE_BUFFER(ID) +#define RING_DBG_INT_RELEASE_BUFFER(ID,CONF) #endif #ifndef RING_DBG_INT_RELEASE_USER -#define RING_DBG_INT_RELEASE_USER() +#define RING_DBG_INT_RELEASE_USER(CONF) #endif #ifndef RING_DBG_INT_STATUS -#define RING_DBG_INT_STATUS(SA,SB) +#define RING_DBG_INT_STATUS(SA,SB,CONF) #endif #ifndef RING_DBG_ERROR -#define RING_DBG_ERROR(ERROR) +#define RING_DBG_ERROR(ERROR,CONF) #endif /* @@ -127,7 +127,12 @@ Implementation (RING_TEST(userBufferStatus,ID) || RING_TEST(intBufferStatus,ID)) -void ringInit(ring_config_t *config,uint32_t nbBuffers,uint32_t bufferSize,uint8_t *buffer,int timeout) +void ringInit(ring_config_t *config, + uint32_t nbBuffers, + uint32_t bufferSize, + uint8_t *buffer, + int interruptID, + int timeout) { config->buffer=buffer; @@ -141,7 +146,7 @@ void ringInit(ring_config_t *config,uint32_t nbBuffers,uint32_t bufferSize,uint8 config->waiting=0; config->timeout=timeout; - + config->interruptID = interruptID; config->userBufferStatus = 0; config->intBufferStatus = 0; @@ -165,7 +170,7 @@ uint8_t *ringGetBufferAddress(ring_config_t *config,int id) int ringInterruptReserveBuffer(ring_config_t *config) { - RING_DBG_INT_STATUS(userBufferStatus,intBufferStatus); + RING_DBG_INT_STATUS(userBufferStatus,intBufferStatus,config); if (config->error) { return(-1); @@ -176,14 +181,14 @@ int ringInterruptReserveBuffer(ring_config_t *config) { /* If buffer is already used then kErrorOverflowUnderflow*/ config->error=kErrorOverflowUnderflow; - RING_DBG_ERROR(config->error); + RING_DBG_ERROR(config->error,config); return(-1); } else { - RING_DBG_INT_RESERVE_BUFFER(config->interruptBufferIDStop); + RING_DBG_INT_RESERVE_BUFFER(config->interruptBufferIDStop,config); RING_SET(intBufferStatus,interruptBufferIDStop); - RING_DBG_INT_STATUS(userBufferStatus,intBufferStatus); + RING_DBG_INT_STATUS(userBufferStatus,intBufferStatus,config); int id=config->interruptBufferIDStop; RING_INC(interruptBufferIDStop); return(id); @@ -192,21 +197,21 @@ int ringInterruptReserveBuffer(ring_config_t *config) void ringInterruptReleaseBuffer(ring_config_t *config,void *threadId) { - RING_DBG_INT_STATUS(userBufferStatus,intBufferStatus); + RING_DBG_INT_STATUS(userBufferStatus,intBufferStatus,config); if (config->error) { return; } if (config->interruptBufferIDStart != config->interruptBufferIDStop) { - RING_DBG_INT_RELEASE_BUFFER(config->interruptBufferIDStart); + RING_DBG_INT_RELEASE_BUFFER(config->interruptBufferIDStart,config); RING_CLEAR(intBufferStatus,interruptBufferIDStart); /* Send release message in case the thread may be waiting */ if (config->interruptBufferIDStart == config->userBufferIDStop) { if (config->waiting) { - RING_DBG_INT_RELEASE_USER(); + RING_DBG_INT_RELEASE_USER(config); RING_RELEASE_BUFFER(threadId); } } @@ -217,7 +222,7 @@ void ringInterruptReleaseBuffer(ring_config_t *config,void *threadId) int ringUserReserveBuffer(ring_config_t *config) { RING_BEGINCRITICALSECTION(); - RING_DBG_USER_STATUS(userBufferStatus,intBufferStatus); + RING_DBG_USER_STATUS(userBufferStatus,intBufferStatus,config); if (config->error) { RING_ENDCRITICALSECTION(); @@ -227,23 +232,23 @@ int ringUserReserveBuffer(ring_config_t *config) if (RING_BUSY(userBufferIDStop)) { config->waiting=1; - RING_DBG_USER_WAIT_BUFFER(config->userBufferIDStop); + RING_DBG_USER_WAIT_BUFFER(config->userBufferIDStop,config); RING_ENDCRITICALSECTION(); int err = RING_WAIT_BUFFER(config->timeout); RING_BEGINCRITICALSECTION(); - RING_DBG_USER_BUFFER_RELEASED(config->userBufferIDStop); + RING_DBG_USER_BUFFER_RELEASED(config->userBufferIDStop,config); if (RING_HASWAITERROR(err)) { - RING_DBG_ERROR(err); + RING_DBG_ERROR(err,config); config->error=kTimeout; return(-1); } } - RING_DBG_USER_RESERVE_BUFFER(config->userBufferIDStop); + RING_DBG_USER_RESERVE_BUFFER(config->userBufferIDStop,config); RING_SET(userBufferStatus,userBufferIDStop); int id=config->userBufferIDStop; RING_INC(userBufferIDStop); @@ -256,7 +261,7 @@ int ringUserReserveBuffer(ring_config_t *config) void ringUserReleaseBuffer(ring_config_t *config) { RING_BEGINCRITICALSECTION(); - RING_DBG_USER_STATUS(userBufferStatus,intBufferStatus); + RING_DBG_USER_STATUS(userBufferStatus,intBufferStatus,config); if (config->error) { RING_ENDCRITICALSECTION(); @@ -264,7 +269,7 @@ void ringUserReleaseBuffer(ring_config_t *config) } if (config->userBufferIDStart != config->userBufferIDStop) { - RING_DBG_USER_RELEASE_BUFFER(config->userBufferIDStart); + RING_DBG_USER_RELEASE_BUFFER(config->userBufferIDStart,config); RING_CLEAR(userBufferStatus,userBufferIDStart); RING_INC(userBufferIDStart); } diff --git a/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingBuffer.h b/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingBuffer.h index 0e7021cc..4c03d3e5 100755 --- a/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingBuffer.h +++ b/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingBuffer.h @@ -56,22 +56,25 @@ typedef struct { int32_t waiting; int timeout; ring_error_t error; + int interruptID; } ring_config_t; /** * @brief Ring buffer initialization - * @param[in, out] buf ring buffer configuration. - * @param[in] nbBuffers number of buffers (max 32) - * @param[in] bufferSize size of each buffer in bytes - * @param[in] buffer array for the buffer storage (bufferSize*nbBuffers) - * @param[in] timeout timeout (meaning is RTOS dependent) + * @param[in, out] buf ring buffer configuration. + * @param[in] nbBuffers number of buffers (max 32) + * @param[in] bufferSize size of each buffer in bytes + * @param[in] buffer array for the buffer storage (bufferSize*nbBuffers) + * @param[in] interruptID interrupt ID + * @param[in] timeout timeout (meaning is RTOS dependent) * @return Nothing */ void ringInit(ring_config_t *buf, uint32_t nbBuffers, uint32_t bufferSize, uint8_t *buffer, + int interruptID, int timeout); diff --git a/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingInit.cpp b/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingInit.cpp index 922ec7b1..60fe22f1 100755 --- a/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingInit.cpp +++ b/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingInit.cpp @@ -31,28 +31,25 @@ #include "RingBuffer.h" -/* Memory to use for the ring buffer. -ALIGNED in case it may be used directly by the HW -Each subbuffer must also be 4 bytes aligned. -The sizes should be defined in a RingConfig.h header. -*/ -__ALIGNED(16) uint8_t ringBufferRX[RING_BUFSIZE*RING_NBBUFS]; -__ALIGNED(16) uint8_t ringBufferTX[RING_BUFSIZE*RING_NBBUFS]; -extern int32_t AudioDrv_Setup(void); - -int initRingAndAudio(ring_config_t *ringConfigRX,ring_config_t *ringConfigTX, int timeOut) +int initRingAndAudio(ring_config_t *ringConfigRX, + uint8_t *rxBuffer, + int rxInterruptID, + ring_config_t *ringConfigTX, + uint8_t *txBuffer, + int txInterruptID, + int timeOut) { /* Initialization of the ring buffer data structure */ if (ringConfigRX != NULL) { - ringInit(ringConfigRX,RING_NBBUFS,RING_BUFSIZE,ringBufferRX,timeOut); + ringInit(ringConfigRX,RING_NBBUFS,RING_BUFSIZE,rxBuffer,rxInterruptID,timeOut); } if (ringConfigTX != NULL) { - ringInit(ringConfigTX,RING_NBBUFS,RING_BUFSIZE,ringBufferTX,timeOut); + ringInit(ringConfigTX,RING_NBBUFS,RING_BUFSIZE,txBuffer,txInterruptID,timeOut); } /* Initialization of the audio HW and reservation of first buffer from the diff --git a/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingInit.h b/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingInit.h index d3fe2396..ff3ad7b4 100755 --- a/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingInit.h +++ b/SDFTools/sdf/nodes/cpp/RingBuffer/RingBuffer/RingInit.h @@ -37,7 +37,20 @@ extern "C" { #endif -int initRingAndAudio(ring_config_t *ringConfigRX,ring_config_t *ringConfigTX, int timeOut); +extern int32_t AudioDrv_Setup(void); +extern ring_config_t ringConfigRX; +extern ring_config_t ringConfigTX; +extern uint8_t* AudioRXBuffer(); +extern uint8_t* AudioTXBuffer(); + + +int initRingAndAudio(ring_config_t *ringConfigRX, + uint8_t *rxBuffer, + int rxInterruptID, + ring_config_t *ringConfigTX, + uint8_t *txBuffer, + int txInterruptID, + int timeOut); #ifdef __cplusplus } diff --git a/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/AudioInterrupt.cpp b/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/AudioInterrupt.cpp index ba98bddd..4a3728af 100755 --- a/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/AudioInterrupt.cpp +++ b/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/AudioInterrupt.cpp @@ -19,30 +19,30 @@ #include "RingInit.h" -#define AudioIn_IRQn ((IRQn_Type)ARM_VSI0_IRQn) /* Audio Input Interrupt number */ - extern osThreadId_t gAudioThreadID; // Number of bytes read by DMA -#define AUDIO_BLOCK_NUM (4) +#define AUDIO_BLOCK_SIZE RING_BUFSIZE // Number of DMA blocks -#define AUDIO_DMA_NB_BLOCKS (RING_BUFSIZE >> 2) +#define AUDIO_DMA_NB_BLOCKS RING_NBBUFS extern int32_t AudioDrv_Setup(void); - #if RX_ENABLED extern ring_config_t ringConfigRX; #ifdef __FVP_PY __attribute__((section(".ARM.__at_0x90000000"))) #endif -__ALIGNED(16) static uint8_t audio_bufferRX[RING_BUFSIZE]; +#if SDF_VHT_TX_RX_ORDERING +__ALIGNED(16) static uint8_t dmaRX[AUDIO_BLOCK_SIZE]; +int rxCount=0; +#endif +__ALIGNED(16) static uint8_t audio_bufferRX[AUDIO_DMA_NB_BLOCKS*AUDIO_BLOCK_SIZE]; static uint8_t *reservedBufRX=NULL; - #endif #if TX_ENABLED @@ -51,32 +51,50 @@ extern ring_config_t ringConfigTX; #ifdef __FVP_PY __attribute__((section(".ARM.__at_0x9FFF0000"))) #endif -__ALIGNED(16) static uint8_t audio_bufferTX[RING_BUFSIZE]; +#if SDF_VHT_TX_RX_ORDERING +__ALIGNED(16) static uint8_t dmaTX[AUDIO_BLOCK_SIZE]; +int txCount=0; +#endif +__ALIGNED(16) static uint8_t audio_bufferTX[AUDIO_DMA_NB_BLOCKS*AUDIO_BLOCK_SIZE]; static uint8_t *reservedBufTX=NULL; #endif +uint8_t* AudioRXBuffer() +{ + return(audio_bufferRX); +} + +uint8_t* AudioTXBuffer() +{ + return(audio_bufferTX); +} + static void AudioEvent (uint32_t event) { #if RX_ENABLED if (event & AUDIO_DRV_EVENT_RX_DATA) { - if (reservedBufRX != NULL) - { - memcpy(reservedBufRX,audio_bufferRX,RING_BUFSIZE); - ringInterruptReleaseBuffer(&ringConfigRX,(void *)gAudioThreadID); - int reservedRX=ringInterruptReserveBuffer(&ringConfigRX); - reservedBufRX=ringGetBufferAddress(&ringConfigRX,reservedRX); - } + + #if SDF_VHT_TX_RX_ORDERING + memcpy(reservedBufRX,dmaRX,RING_BUFSIZE); + (void)AudioDrv_Control(AUDIO_DRV_CONTROL_RX_DISABLE); + (void)AudioDrv_Control(AUDIO_DRV_CONTROL_TX_ENABLE); + #endif + ringInterruptReleaseBuffer(&ringConfigRX,(void *)gAudioThreadID); + int reservedRX=ringInterruptReserveBuffer(&ringConfigRX); + reservedBufRX=ringGetBufferAddress(&ringConfigRX,reservedRX); + } #endif #if TX_ENABLED if (event & AUDIO_DRV_EVENT_TX_DATA) { - if (reservedBufTX != NULL) - { - memcpy(audio_bufferTX,reservedBufTX,RING_BUFSIZE); - } + #if SDF_VHT_TX_RX_ORDERING + memcpy(dmaTX,reservedBufTX,RING_BUFSIZE); + (void)AudioDrv_Control(AUDIO_DRV_CONTROL_TX_DISABLE); + (void)AudioDrv_Control(AUDIO_DRV_CONTROL_RX_ENABLE); + #endif ringInterruptReleaseBuffer(&ringConfigTX,(void *)gAudioThreadID); int reservedTX=ringInterruptReserveBuffer(&ringConfigTX); reservedBufTX=ringGetBufferAddress(&ringConfigTX,reservedTX); @@ -108,17 +126,25 @@ int32_t AudioDrv_Setup(void) { int reservedRX=ringInterruptReserveBuffer(&ringConfigRX); reservedBufRX=ringGetBufferAddress(&ringConfigRX,reservedRX); +#if SDF_VHT_TX_RX_ORDERING + ret = AudioDrv_SetBuf(AUDIO_DRV_INTERFACE_RX, + dmaRX, 1,AUDIO_BLOCK_SIZE); +#else ret = AudioDrv_SetBuf(AUDIO_DRV_INTERFACE_RX, - audio_bufferRX, AUDIO_BLOCK_NUM, AUDIO_DMA_NB_BLOCKS); + audio_bufferRX, AUDIO_DMA_NB_BLOCKS,AUDIO_BLOCK_SIZE); +#endif if (ret != 0) { return ret; } +#if !SDF_VHT_TX_RX_ORDERING ret = AudioDrv_Control(AUDIO_DRV_CONTROL_RX_ENABLE); if (ret != 0) { return ret; } -#endif +#endif + +#endif /* RX_ENABLED */ #if TX_ENABLED ret = AudioDrv_Configure(AUDIO_DRV_INTERFACE_TX, @@ -132,15 +158,24 @@ int32_t AudioDrv_Setup(void) { /* Work because user process not started yet */ - /* dataflow must be one packet ahead of the TX */ + /* dataflow must be 1 packet ahead of the TX interrupt*/ + ringUserReserveBuffer(&ringConfigTX); + ringUserReleaseBuffer(&ringConfigTX); + ringUserReserveBuffer(&ringConfigTX); ringUserReleaseBuffer(&ringConfigTX); int reservedTX=ringInterruptReserveBuffer(&ringConfigTX); reservedBufTX=ringGetBufferAddress(&ringConfigTX,reservedTX); +#if SDF_VHT_TX_RX_ORDERING + ret = AudioDrv_SetBuf(AUDIO_DRV_INTERFACE_TX, + dmaTX, 1 ,AUDIO_BLOCK_SIZE); +#else ret = AudioDrv_SetBuf(AUDIO_DRV_INTERFACE_TX, - audio_bufferTX, AUDIO_BLOCK_NUM, AUDIO_DMA_NB_BLOCKS); + audio_bufferTX, AUDIO_DMA_NB_BLOCKS,AUDIO_BLOCK_SIZE); +#endif + if (ret != 0) { return ret; } @@ -150,9 +185,8 @@ int32_t AudioDrv_Setup(void) { return ret; } -#endif +#endif /* TX_ENABLED */ - return 0; } diff --git a/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/Config/RingConfig.h b/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/Config/RingConfig.h index 0928651d..5f77d6de 100755 --- a/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/Config/RingConfig.h +++ b/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/Config/RingConfig.h @@ -10,10 +10,10 @@ #define AUDIO_SAMPLINGFREQUENCY 16000 #endif -// Number of samples <100-3000> +// Number of samples <256=> 256 <512=> 512 <1024=> 1024 <2048=> 2048 // Must be consistent with the settings of the Audio source #ifndef AUDIO_NBSAMPLES -#define AUDIO_NBSAMPLES 1600 +#define AUDIO_NBSAMPLES 2048 #endif // Number of channels <1=> Mono <2=> Stereo @@ -32,12 +32,15 @@ // TX_ENABLED: Enable TX #define TX_ENABLED 1 +// SDF_VHT_TX_RX_ORDERING: Force TX RX ordering +#define SDF_VHT_TX_RX_ORDERING 0 + // // Ring Buffer Configuration -// Number of buffers <2-32> +// Number of buffers <2=> 2 <4=> 4 <8=> 8 <16=> 16 <32=> 32 #ifndef RING_NBBUFS -#define RING_NBBUFS 2 +#define RING_NBBUFS 4 #endif // diff --git a/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/RingPrivate.h b/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/RingPrivate.h index 31ccdfb7..c8b6b459 100755 --- a/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/RingPrivate.h +++ b/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/RingPrivate.h @@ -44,19 +44,14 @@ Implementation for RTX + Keil MDK Event logger #include "cmsis_os2.h" -#ifndef AudioIn_IRQn -#define AudioIn_IRQn ((IRQn_Type)0) /* Audio Input Interrupt number */ -#endif - #include "SchedEvents.h" /* RTX dependent definition */ -#define RING_BEGINCRITICALSECTION() NVIC_DisableIRQ (AudioIn_IRQn) - -#define RING_ENDCRITICALSECTION() NVIC_EnableIRQ (AudioIn_IRQn) +#define RING_BEGINCRITICALSECTION() NVIC_DisableIRQ ((IRQn_Type)config->interruptID); +#define RING_ENDCRITICALSECTION() NVIC_EnableIRQ ((IRQn_Type)config->interruptID); #define RING_WAIT_BUFFER(TIMEOUT) osThreadFlagsWait(1,osFlagsWaitAny,(TIMEOUT)) #define RING_HASWAITERROR(F) (F < 0) @@ -64,17 +59,17 @@ RTX dependent definition #define RING_RELEASE_BUFFER(THREADID) osThreadFlagsSet((osThreadId_t)(THREADID),1) /* Debug trace using Event Recorder */ -#define RING_DBG_USER_RESERVE_BUFFER(ID) EventRecord2 (Evt_UsrReserve, (ID), 0) -#define RING_DBG_USER_RELEASE_BUFFER(ID) EventRecord2 (Evt_UsrRelease, (ID), 0) -#define RING_DBG_USER_WAIT_BUFFER(ID) EventRecord2 (Evt_UsrWait, (ID), 0) -#define RING_DBG_USER_BUFFER_RELEASED(ID) EventRecord2 (Evt_UsrFree, (ID), 0) -#define RING_DBG_USER_STATUS(SA,SB) EventRecord2 (Evt_UsrStatus, config->SA,config->SB) - -#define RING_DBG_INT_RESERVE_BUFFER(ID) EventRecord2 (Evt_IntReserve, (ID), 0) -#define RING_DBG_INT_RELEASE_BUFFER(ID) EventRecord2 (Evt_IntRelease, (ID), 0) -#define RING_DBG_INT_RELEASE_USER() EventRecord2 (Evt_IntReleaseUser, 0, 0) -#define RING_DBG_INT_STATUS(SA,SB) EventRecord2 (Evt_IntStatus, config->SA,config->SB) - -#define RING_DBG_ERROR(ERROR) EventRecord2 (Evt_Error, (ERROR), 0) +#define RING_DBG_USER_RESERVE_BUFFER(ID,CONF) EventRecord2 (Evt_UsrReserve, (ID), (uint32_t)(CONF)) +#define RING_DBG_USER_RELEASE_BUFFER(ID,CONF) EventRecord2 (Evt_UsrRelease, (ID), (uint32_t)(CONF)) +#define RING_DBG_USER_WAIT_BUFFER(ID,CONF) EventRecord2 (Evt_UsrWait, (ID), (uint32_t)(CONF)) +#define RING_DBG_USER_BUFFER_RELEASED(ID,CONF) EventRecord2 (Evt_UsrFree, (ID), (uint32_t)(CONF)) +#define RING_DBG_USER_STATUS(SA,SB,CONF) EventRecord4 (Evt_UsrStatus, config->SA,config->SB,(uint32_t)(CONF),0) + +#define RING_DBG_INT_RESERVE_BUFFER(ID,CONF) EventRecord2 (Evt_IntReserve, (ID), (uint32_t)(CONF)) +#define RING_DBG_INT_RELEASE_BUFFER(ID,CONF) EventRecord2 (Evt_IntRelease, (ID), (uint32_t)(CONF)) +#define RING_DBG_INT_RELEASE_USER(CONF) EventRecord2 (Evt_IntReleaseUser, (uint32_t)(CONF), 0) +#define RING_DBG_INT_STATUS(SA,SB,CONF) EventRecord4 (Evt_IntStatus, config->SA,config->SB,(uint32_t)(CONF),0) + +#define RING_DBG_ERROR(ERROR,CONF) EventRecord2 (Evt_Error, (ERROR), (uint32_t)(CONF)) #endif \ No newline at end of file diff --git a/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/ring.scvd b/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/ring.scvd index b70cb854..75ce6008 100755 --- a/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/ring.scvd +++ b/SDFTools/sdf/nodes/cpp/RingBuffer/VHT/ring.scvd @@ -47,19 +47,19 @@ - - - - - + + + + + - - - - + + + + - +