Console handler in C++
This commit is contained in:
parent
f0c2ad69c9
commit
2d6567b1b2
5 changed files with 131 additions and 41 deletions
65
lib/ll_consolehandler.cpp
Normal file
65
lib/ll_consolehandler.cpp
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* ll_consolehandler.cpp
|
||||
*
|
||||
* Created on: Nov 7, 2019
|
||||
* Author: abody
|
||||
*/
|
||||
|
||||
#include <ll_consolehandler.h>
|
||||
#include <strutil.h>
|
||||
|
||||
namespace f4ll {
|
||||
|
||||
LL_ConsoleHandler::LL_ConsoleHandler(USART_TypeDef *usart, DMA_TypeDef *dma, uint32_t streamRx, uint32_t streamTx)
|
||||
: LL_UsartCore(usart, dma, streamRx, streamTx)
|
||||
{
|
||||
}
|
||||
|
||||
void LL_ConsoleHandler::ReceiverIdle(void) {}
|
||||
void LL_ConsoleHandler::TransmissionComplete(void) {}
|
||||
void LL_ConsoleHandler::RxDmaTransferComplete(void) {}
|
||||
void LL_ConsoleHandler::RxDmaHalfTransfer(void) {}
|
||||
void LL_ConsoleHandler::RxDmaError(LL_DmaHelper::DmaErrorType reason) {}
|
||||
void LL_ConsoleHandler::TxDmaTransferComplete(void)
|
||||
{
|
||||
LL_USART_EnableIT_TC(m_usart);
|
||||
LL_DMA_DisableStream(m_txDma.GetDma(), m_txDma.GetStream());
|
||||
}
|
||||
void LL_ConsoleHandler::TxDmaHalfTransfer(void) {}
|
||||
void LL_ConsoleHandler::TxDmaError(LL_DmaHelper::DmaErrorType reason) {}
|
||||
|
||||
|
||||
#define ADDINFO(b,s,u) \
|
||||
b += strcpy_ex(b,s); \
|
||||
b += uitodec(b,u);
|
||||
|
||||
void LL_ConsoleHandler::PrintStats(uint8_t id, LL_HsUsart &usart)
|
||||
{
|
||||
char ids[] = " : ";
|
||||
char *buffer = m_buffer;
|
||||
LL_HsUsart::Stats const &stats(usart.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);
|
||||
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(m_buffer, buffer - m_buffer + 1);
|
||||
}
|
||||
|
||||
|
||||
} /* namespace f4ll */
|
||||
|
43
lib/ll_consolehandler.h
Normal file
43
lib/ll_consolehandler.h
Normal file
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* ll_consolehandler.h
|
||||
*
|
||||
* Created on: Nov 7, 2019
|
||||
* Author: abody
|
||||
*/
|
||||
|
||||
#ifndef LL_CONSOLEHANDLER_H_
|
||||
#define LL_CONSOLEHANDLER_H_
|
||||
|
||||
#include "ll_hsusart.h"
|
||||
#include "singleton.h"
|
||||
|
||||
|
||||
namespace f4ll {
|
||||
|
||||
class LL_ConsoleHandler: public LL_UsartCore, public Singleton<LL_ConsoleHandler>
|
||||
{
|
||||
friend class Singleton<LL_ConsoleHandler>;
|
||||
|
||||
public:
|
||||
// LL_UsartCore pure virtual function implementations
|
||||
virtual void ReceiverIdle(void);
|
||||
virtual void TransmissionComplete(void);
|
||||
virtual void RxDmaTransferComplete(void);
|
||||
virtual void RxDmaHalfTransfer(void);
|
||||
virtual void RxDmaError(LL_DmaHelper::DmaErrorType reason);
|
||||
virtual void TxDmaTransferComplete(void);
|
||||
virtual void TxDmaHalfTransfer(void);
|
||||
virtual void TxDmaError(LL_DmaHelper::DmaErrorType reason);
|
||||
|
||||
void PrintStats(uint8_t id, LL_HsUsart &usart);
|
||||
|
||||
private:
|
||||
LL_ConsoleHandler(USART_TypeDef *usart, DMA_TypeDef *dma, uint32_t streamRx, uint32_t streamTx);
|
||||
|
||||
char m_buffer[128];
|
||||
uint16_t m_used = 0;
|
||||
};
|
||||
|
||||
} /* namespace f4ll */
|
||||
|
||||
#endif /* LL_CONSOLEHANDLER_H_ */
|
Loading…
Add table
Add a link
Reference in a new issue