From 3232fe1d307ebba9fde9645be579140e9785da50 Mon Sep 17 00:00:00 2001 From: Attila BODY Date: Thu, 14 Nov 2019 08:49:57 +0100 Subject: [PATCH] Added flag to packetusart (c) PostPacket to omit wait for crc scheduling --- App/application.c | 2 +- components/f4ll_c/inc/usart_handler.h | 2 +- components/f4ll_c/src/usart_handler.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/App/application.c b/App/application.c index a652f60..9284863 100644 --- a/App/application.c +++ b/App/application.c @@ -79,7 +79,7 @@ void MainLoop() for(uint16_t idx = 0; idx < sizeof(g_uartStatuses) / sizeof(g_uartStatuses[0]); ++idx) { if(!g_uartStatuses[idx].txBuffer.busy && send) { DIAG_ENTER_BUSY(); - PostPacket(&g_uartStatuses[idx], text2Send, sizeof(text2Send) - 1 - (rand() & randmask), &g_crcStatus); + PostPacket(&g_uartStatuses[idx], text2Send, sizeof(text2Send) - 1 - (rand() & randmask), &g_crcStatus, 1); DIAG_EXIT_BUSY(); } for(uint16_t rIdx = 0; rIdx < 2; ++rIdx) diff --git a/components/f4ll_c/inc/usart_handler.h b/components/f4ll_c/inc/usart_handler.h index 32e2f5c..6dcb290 100644 --- a/components/f4ll_c/inc/usart_handler.h +++ b/components/f4ll_c/inc/usart_handler.h @@ -26,7 +26,7 @@ void InitUartStatus( uint8_t* GetTxBuffer(USARTSTATUS *status); -uint8_t PostPacket(USARTSTATUS *status, uint8_t const *payload, uint16_t length, struct crcstatus_t *crcStatus); +uint8_t PostPacket(USARTSTATUS *status, uint8_t const *payload, uint16_t length, struct crcstatus_t *crcStatus, uint8_t waitForCrcQueue); void SetupReceive(USARTSTATUS *status); void SetupTransmit(USART_TypeDef *usart, DMA_TypeDef* dma, uint32_t stream, void *buffer, uint32_t length); void ConsumePacket(USARTSTATUS *status, uint8_t packetIndex); diff --git a/components/f4ll_c/src/usart_handler.c b/components/f4ll_c/src/usart_handler.c index 47562fe..21f9cea 100644 --- a/components/f4ll_c/src/usart_handler.c +++ b/components/f4ll_c/src/usart_handler.c @@ -91,7 +91,7 @@ static inline uint8_t CheckHeader(USARTPACKET *packet) } -uint8_t PostPacket(USARTSTATUS *status, uint8_t const *payload, uint16_t length, struct crcstatus_t *crcStatus) +uint8_t PostPacket(USARTSTATUS *status, uint8_t const *payload, uint16_t length, struct crcstatus_t *crcStatus, uint8_t waitForCrcQueue) { if(length > 256) return 1; @@ -113,7 +113,7 @@ uint8_t PostPacket(USARTSTATUS *status, uint8_t const *payload, uint16_t length, status->txBuffer.error = 0; EnqueueCrcTask(status->crcStatus, &status->crcSlot, 0, status->txBuffer.packet.payload, length, NULL, (uint32_t*)(status->txBuffer.packet.payload + payloadLength)); - while(IsSlotQueued(&status->crcSlot, 0)); + while(waitForCrcQueue && IsSlotQueued(&status->crcSlot, 0)); SetupTransmit(status->usart, status->txDmaInfo.dma, status->txDmaInfo.stream, &status->txBuffer.packet, status->txBuffer.requestedLength); StatsIncSent(&status->stats);