Console handler in C++
This commit is contained in:
parent
f0c2ad69c9
commit
2d6567b1b2
5 changed files with 131 additions and 41 deletions
|
@ -9,6 +9,7 @@
|
|||
#include "ll_hsusart.h"
|
||||
#include "ll_crchandler.h"
|
||||
#include "ll_memcpydma.h"
|
||||
#include "ll_consolehandler.h"
|
||||
extern "C" {
|
||||
#include "main.h"
|
||||
#include "globals.h"
|
||||
|
@ -25,37 +26,6 @@ extern "C" {
|
|||
b += strcpy_ex(b,s); \
|
||||
b += uitodec(b,u);
|
||||
|
||||
void _PrintStats(char *buffer, uint8_t id, f4ll::LL_HsUsart &handler, USART_TypeDef *usart, DMAINFO* dmaInfo)
|
||||
{
|
||||
char ids[] = " : ";
|
||||
char *bs = buffer;
|
||||
|
||||
f4ll::LL_HsUsart::Stats const & stats(handler.GetStats());
|
||||
|
||||
ids[0] = id + '0';
|
||||
buffer += strcpy_ex(buffer, ids);
|
||||
ADDINFO(buffer, " s: ", stats.sent);
|
||||
ADDINFO(buffer, " r: ", stats.rcvd);
|
||||
ADDINFO(buffer, " sk: ", stats.skiped);
|
||||
ADDINFO(buffer, " or: ", stats.overrun);
|
||||
ADDINFO(buffer, " he: ", stats.hdrError);
|
||||
// buffer += strcpy_ex(buffer,",0x");
|
||||
// buffer += uitohex(buffer, stats.lastErrHdr, 8);
|
||||
ADDINFO(buffer, " pe: ", stats.payloadErrror);
|
||||
buffer += strcpy_ex(buffer,",0x");
|
||||
buffer += uitohex(buffer, stats.pep1, 8);
|
||||
buffer += strcpy_ex(buffer,",0x");
|
||||
buffer += uitohex(buffer, stats.pep2, 8);
|
||||
ADDINFO(buffer, " rde: ", stats.rxDmaError);
|
||||
ADDINFO(buffer, " tde: ", stats.txDmaError);
|
||||
ADDINFO(buffer, " pmh: ", stats.premature_hdr);
|
||||
ADDINFO(buffer, " pmp: ", stats.premature_payload);
|
||||
buffer += strcpy_ex(buffer, "\r\n");
|
||||
|
||||
SetupTransmit(usart, dmaInfo->dma, dmaInfo->stream, bs, buffer - bs + 1);
|
||||
}
|
||||
|
||||
|
||||
extern "C" void MainLoop()
|
||||
{
|
||||
uint8_t const text2Send[] __attribute__((aligned(4))) =
|
||||
|
@ -64,6 +34,7 @@ extern "C" void MainLoop()
|
|||
|
||||
f4ll::LL_MemcpyDma::Init(MEMCPY_DMA_ENGINE, MEMCPY_DMA_STREAM);
|
||||
f4ll::LL_CrcHandler::Init(DMA2, LL_DMA_STREAM_4);
|
||||
f4ll::LL_ConsoleHandler::Init(UART4, CONSOLE_DMA_ENGINE, 0u, CONSOLE_TX_DMA_STREAM);
|
||||
|
||||
f4ll::LL_HsUsart u1{ USART1, DMA2, LL_DMA_STREAM_2, LL_DMA_STREAM_7 };
|
||||
f4ll::LL_HsUsart u2{ USART2, DMA1, LL_DMA_STREAM_5, LL_DMA_STREAM_6 };
|
||||
|
@ -80,14 +51,12 @@ extern "C" void MainLoop()
|
|||
|
||||
uint32_t tmp = sizeof(text2Send) - 1;
|
||||
uint32_t randmask = 0x80000000;
|
||||
do
|
||||
|
||||
do {
|
||||
if(randmask & tmp)
|
||||
break;
|
||||
while((randmask = randmask >> 1));
|
||||
randmask -= 1;
|
||||
|
||||
InitDmaInfo(&g_ConsoleTxDmaInfo, CONSOLE_DMA_ENGINE, CONSOLE_TX_DMA_STREAM);
|
||||
LL_DMA_EnableIT_TC(g_ConsoleTxDmaInfo.dma, g_ConsoleTxDmaInfo.stream);
|
||||
} while((randmask = randmask >> 1));
|
||||
--randmask;
|
||||
|
||||
lastStatsTick = HAL_GetTick();
|
||||
|
||||
|
@ -114,7 +83,7 @@ extern "C" void MainLoop()
|
|||
u->RxProcessed((bool)rIdx);
|
||||
}
|
||||
if(tick - lastStatsTick > STATS_DELAY_MS) {
|
||||
_PrintStats((char*)g_statsBuf, statId, *usarts[statId], UART4, &g_ConsoleTxDmaInfo);
|
||||
f4ll::LL_ConsoleHandler::Instance().PrintStats(statId, *usarts[statId]);
|
||||
lastStatsTick += STATS_DELAY_MS;
|
||||
++statId;
|
||||
if(statId >= sizeof(usarts) / sizeof(usarts[0]))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue