Commit 6fd09b2b authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

ptalog: Support different logging types

parent 618972e9
Loading
Loading
Loading
Loading
+40 −2
Original line number Diff line number Diff line
@@ -4,22 +4,42 @@
#include <stdlib.h>
#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;
			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