From 796354ca13e85c37a6233d34429737c8f0cf9e80 Mon Sep 17 00:00:00 2001
From: Daniel Friesel <daniel.friesel@uos.de>
Date: Fri, 26 Jul 2019 15:44:39 +0200
Subject: [PATCH] ptalog: Optionally store return values of function calls

---
 include/object/ptalog.h | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/include/object/ptalog.h b/include/object/ptalog.h
index 70e9664..808eef8 100644
--- a/include/object/ptalog.h
+++ b/include/object/ptalog.h
@@ -19,6 +19,9 @@ class PTALog {
 #ifdef PTALOG_TIMING
 			counter_value_t timer;
 			counter_overflow_t overflow;
+#endif
+#ifdef PTALOG_WITH_RETURNVALUES
+			uint16_t return_value;
 #endif
 		} log_entry;
 
@@ -70,12 +73,14 @@ class PTALog {
 		{
 			kout << "[PTA] trace=" << dec << trace_id << " count=" << log_index << endl;
 			for (uint8_t i = 0; i < log_index; i++) {
-#ifdef PTALOG_TIMING
 				kout << "[PTA] transition=" << log[i].transition_id;
-				kout << " cycles=" << log[i].timer << "/" << log[i].overflow << endl;
-#else
-				kout << "[PTA] transition=" << log[i].transition_id << endl;
+#ifdef PTALOG_TIMING
+				kout << " cycles=" << log[i].timer << "/" << log[i].overflow;
+#endif
+#ifdef PTALOG_WITH_RETURNVALUES
+				kout << " return=" << log[i].return_value;
 #endif
+				kout << endl;
 			}
 		}
 
@@ -84,6 +89,13 @@ class PTALog {
 			gpio.write(sync_pin, 1);
 		}
 
+#ifdef PTALOG_WITH_RETURNVALUES
+		inline void logReturn(uint16_t ret)
+		{
+			log[log_index - 1].return_value = ret;
+		}
+#endif
+
 #ifdef PTALOG_TIMING
 		inline void stopTransition(Counter& counter)
 #else
-- 
GitLab