/* * stats.h * * Created on: Sep 16, 2019 * Author: abody */ #ifndef STATS_H_ #define STATS_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) { ++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_ */