From 6fd09b2bb22f70b429b53a1205ced2487324fdd4 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Mon, 4 Mar 2019 15:30:14 +0100 Subject: ptalog: Support different logging types --- include/object/ptalog.h | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) (limited to 'include/object') diff --git a/include/object/ptalog.h b/include/object/ptalog.h index f53dcc5..8ae43d1 100644 --- a/include/object/ptalog.h +++ b/include/object/ptalog.h @@ -4,21 +4,41 @@ #include #include "driver/stdout.h" +#ifdef PTALOG_GPIO +#include "driver/gpio.h" +#endif + +#ifdef PTALOG_TIMING +#include "driver/counter.h" +#endif + class PTALog { public: typedef struct { uint8_t transition_id; +#ifdef PTALOG_TIMING + counter_value_t timer; + counter_overflow_t overflow; +#endif } log_entry; - log_entry log[32]; + int const max_entry = 15; + + log_entry log[16]; uint8_t log_index; +#ifdef PTALOG_GPIO PTALog(uint8_t pin_number) : log_index(0), sync_pin(pin_number) {} +#else + PTALog(uint8_t pin_number) : log_index(0) {} +#endif inline void passTransition(uint8_t transition_id) { log[log_index].transition_id = transition_id; - log_index++; + if (log_index < max_entry) { + log_index++; + } } inline void reset() @@ -29,7 +49,9 @@ class PTALog { inline void startBenchmark(uint8_t id) { kout << "[PTA] benchmark start, id=" << dec << id << endl; +#ifdef PTALOG_GPIO gpio.output(sync_pin); +#endif } inline void stopBenchmark() @@ -41,7 +63,11 @@ class PTALog { { kout << "[PTA] trace, count=" << dec << log_index << endl; for (uint8_t i = 0; i < log_index; i++) { +#ifdef PTALOG_TIMING + kout << "[PTA] transition=" << log[i].transition_id << endl; +#else kout << "[PTA] transition=" << log[i].transition_id << endl; +#endif } } @@ -50,14 +76,26 @@ class PTALog { gpio.write(sync_pin, 1); } +#ifdef PTALOG_TIMING + inline void stopTransition(Counter& counter) +#else inline void stopTransition() +#endif { +#ifdef PTALOG_GPIO gpio.write(sync_pin, 0); +#endif +#ifdef PTALOG_TIMING + log[log_index - 1].timer = counter.value; + log[log_index - 1].overflow = counter.overflow; +#endif } private: PTALog(const PTALog& copy); +#ifdef PTALOG_GPIO uint8_t sync_pin; +#endif }; #endif -- cgit v1.2.3