f407ve_packetusart_c/components/f4ll_c/consolehandler.c
Attila BODY b9114f049a git subrepo pull components/f4ll_c
subrepo:
  subdir:   "components/f4ll_c"
  merged:   "5d26fdc"
upstream:
  origin:   "git@git.pcmuhely.hu:compi/f4ll_c.git"
  branch:   "master"
  commit:   "5d26fdc"
git-subrepo:
  version:  "0.4.0"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "5d6aba9"
2019-12-06 14:32:53 +01:00

66 lines
1.8 KiB
C

/*
* interrupt.c
*
* Created on: Aug 29, 2019
* Author: abody
*/
#include "f4ll_c/packetusart.h"
#include "f4ll_c/strutil.h"
#ifndef DIAG_INTERRUPT_IN
# define DIAG_INTERRUPT_IN()
#endif
#ifndef DIAG_INTERRUPT_OUT
# define DIAG_INTERRUPT_OUT()
#endif
void Con_HandleTxDmaIrq(struct dmainfo_t *info, USART_TypeDef *usart) // debug usart
{
DIAG_INTERRUPT_IN();
if(*info->isReg & info->tcMask) { // DMA transfer complete
*info->ifcReg = info->tcMask;
LL_USART_EnableIT_TC(usart);
LL_DMA_DisableStream(info->dma, info->stream);
}
DIAG_INTERRUPT_OUT();
}
void Con_HandleUsartIrq(USART_TypeDef *usart)
{
DIAG_INTERRUPT_IN();
if(LL_USART_IsActiveFlag_TC(usart) && LL_USART_IsEnabledIT_TC(usart)) // transmission complete
LL_USART_DisableIT_TC(usart);
DIAG_INTERRUPT_OUT();
}
#define ADDINFO(b,s,u) \
b += strcpy_ex(b,s); \
b += uitodec(b,u);
void Con_PrintStats(char *buffer, uint8_t id, struct usart_stats *stats, USART_TypeDef *usart, struct dmainfo_t *dmaInfo)
{
char ids[] = " : ";
char *bs = buffer;
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, " de: ", stats->dmaError);
ADDINFO(buffer, " pmh: ", stats->premature_hdr);
ADDINFO(buffer, " pmp: ", stats->premature_payload);
buffer += strcpy_ex(buffer, "\r\n");
Pu_SetupTransmit(usart, dmaInfo->dma, dmaInfo->stream, bs, buffer - bs + 1);
}