tdse-tp2_01-model_integration

Index Commits Files Refs README
commit 9dd11d895740689d8ee45bd7c421499032d9155b
parent d932bb238b38c7e8d5502becf80b45c6f62fa355
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Mon, 29 Sep 2025 23:51:29 -0300

Added app variable `g_app_WCET_us`

Diffstat:
Mapp/inc/app.h | 149++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mapp/src/app.c | 26++++++++++++++++++--------
2 files changed, 93 insertions(+), 82 deletions(-)
diff --git a/app/inc/app.h b/app/inc/app.h
@@ -1,74 +1,75 @@
-/*
- * Copyright (c) 2023 Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- *    contributors may be used to endorse or promote products derived from
- *    this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @file   : app.h
- * @date   : Set 26, 2023
- * @author : Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>
- * @version    v1.0.0
- */
-
-#ifndef APP_INC_APP_H_
-#define APP_INC_APP_H_
-
-/********************** CPP guard ********************************************/
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/********************** inclusions *******************************************/
-
-/********************** macros ***********************************************/
-#define TEST_0 (0)
-#define TEST_1 (1)
-#define TEST_2 (2)
-
-#define TEST_X (TEST_0)
-
-/********************** typedef **********************************************/
-
-/********************** external data declaration ****************************/
-extern uint32_t g_app_cnt;
-extern uint32_t g_app_runtime_us;
-
-extern volatile uint32_t g_app_tick_cnt;
-
-/********************** external functions declaration ***********************/
-extern void app_init(void);
-extern void app_update(void);
-
-/********************** End of CPP guard *************************************/
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* APP_INC_APP_H_ */
-
-/********************** end of file ******************************************/
+/*
+ * Copyright (c) 2023 Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the copyright holder nor the names of its
+ *    contributors may be used to endorse or promote products derived from
+ *    this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @file   : app.h
+ * @date   : Set 26, 2023
+ * @author : Juan Manuel Cruz <jcruz@fi.uba.ar> <jcruz@frba.utn.edu.ar>
+ * @version    v1.0.0
+ */
+
+#ifndef APP_INC_APP_H_
+#define APP_INC_APP_H_
+
+/********************** CPP guard ********************************************/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/********************** inclusions *******************************************/
+
+/********************** macros ***********************************************/
+#define TEST_0 (0)
+#define TEST_1 (1)
+#define TEST_2 (2)
+
+#define TEST_X (TEST_0)
+
+/********************** typedef **********************************************/
+
+/********************** external data declaration ****************************/
+extern uint32_t g_app_cnt;
+extern uint32_t g_app_runtime_us;
+extern uint32_t g_app_WCET_us;
+
+extern volatile uint32_t g_app_tick_cnt;
+
+/********************** external functions declaration ***********************/
+extern void app_init(void);
+extern void app_update(void);
+
+/********************** End of CPP guard *************************************/
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* APP_INC_APP_H_ */
+
+/********************** end of file ******************************************/
diff --git a/app/src/app.c b/app/src/app.c
@@ -50,20 +50,21 @@
 #include "task_sensor.h"
 
 /********************** macros and definitions *******************************/
-#define G_APP_CNT_INI        0ul
-#define G_APP_TICK_CNT_INI    0ul
+#define G_APP_CNT_INI       0ul
+#define G_APP_TICK_CNT_INI  0ul
+#define G_APP_WCET_INI      0ul
 
-#define TASK_X_WCET_INI        0ul
-#define TASK_X_DELAY_MIN    0ul
+#define TASK_X_WCET_INI     0ul
+#define TASK_X_DELAY_MIN    0ul
 
 typedef struct {
-    void (*task_init)(void *);   // Pointer to task (must be a
-    void (*task_update)(void *); // Pointer to task (must be a
-    void *parameters;            // Pointer to parameters
+    void (*task_init)(void *);
+    void (*task_update)(void *);
+    void *parameters;
 } task_cfg_t;
 
 typedef struct {
-    uint32_t WCET; // Worst-case execution time (microseconds)
+    uint32_t WCET; // Task worst-case execution time (microseconds)
 } task_dta_t;
 
 /********************** internal data declaration ****************************/
@@ -84,6 +85,7 @@ const char *p_app = " App - Model Integration - C codig";
 /********************** external data declaration ****************************/
 uint32_t g_app_cnt;
 uint32_t g_app_runtime_us;
+uint32_t g_app_WCET_us; // Worst case execution time historically
 
 volatile uint32_t g_app_tick_cnt;
 
@@ -105,6 +107,9 @@ void app_init(void)
     g_app_cnt = G_APP_CNT_INI;
     LOGGER_INFO(" %s = %lu", GET_NAME(g_app_cnt), g_app_cnt);
 
+    /* Init application worst case execution time */
+    g_app_WCET_us = G_APP_WCET_INI;
+
     /* Init Cycle Counter */
     cycle_counter_init();
 
@@ -165,6 +170,11 @@ void app_update(void)
             /* Update variables */
             g_app_runtime_us += cycle_counter_time_us;
 
+            if (g_app_WCET_us < g_app_runtime_us) {
+                g_app_WCET_us = g_app_runtime_us;
+                LOGGER_INFO("  App WCET: %lu", g_app_WCET_us);
+            }
+
             if (task_dta_list[index].WCET < cycle_counter_time_us)
             {
                 task_dta_list[index].WCET = cycle_counter_time_us;