f407ve_hs_uart/app/stats.h

68 lines
1.3 KiB
C

/*
* stats.h
*
* Created on: Sep 16, 2019
* Author: abody
*/
#ifndef STATS_H_
#define STATS_H_
#include "diag.h"
#ifndef DIAG_ERROR_EVENT
# define DIAG_ERROR_EVENT()
#endif
typedef struct {
uint32_t overrun;
uint32_t hdrError;
uint32_t lastErrHdr;
uint32_t payloadErrror;
uint32_t pep1, pep2;
uint32_t dmaError;
uint32_t rcvd;
uint32_t premature_hdr;
uint32_t premature_payload;
uint32_t sent;
uint32_t skiped;
} STATS;
#ifndef STATS_DISABLED
static inline void StatsIncOverrun(STATS *s) {
++s->overrun;
}
static inline void StatsIncHdrError(STATS *s, uint32_t hdr) {
DIAG_ERROR_EVENT();
++s->hdrError;
}
static inline void StatsIncPayloadError(STATS *s, uint32_t pep1, uint32_t pep2) {
DIAG_ERROR_EVENT();
++s->payloadErrror;
s->pep1 = pep1;
s->pep2 = pep2;
}
static inline void StatsIncDmaError(STATS *s) {
DIAG_ERROR_EVENT();
++s->dmaError;
}
static inline void StatsIncRcvd(STATS *s) {
++s->rcvd;
}
static inline void StatsIncPremature_hdr(STATS *s) {
++s->premature_hdr;
}
static inline void StatsIncPremature_payload(STATS *s) {
++s->premature_payload;
}
static inline void StatsIncSent(STATS *s) {
++s->sent;
}
static inline void StatsAddSkiped(STATS *s, uint8_t cnt) {
s->skiped += s->rcvd > 2 ? cnt : 0;
}
#else // STATS_DISABLED
#define StatsIncSent(x)
#endif // STATS_DISABLED
#endif /* STATS_H_ */