]> rtime.felk.cvut.cz Git - jenkicar/rpp-simulink.git/commitdiff
User rpp_mrmain.tlc for both modes, delete rpp_srmain.tlc
authorMichal Sojka <sojkam1@fel.cvut.cz>
Thu, 27 Aug 2015 15:21:04 +0000 (17:21 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 28 Aug 2015 14:15:02 +0000 (16:15 +0200)
The code generated by these two templates is more or less the same, the
only difference is that srmain has hardcoded one worker task, whereas
mrmain can have one or more. Having just one template simplifies testing
so convert everything to it.

rpp/rpp/rpp_file_process.tlc
rpp/rpp/rpp_srmain.tlc [deleted file]

index 0fbc1f9b0087e3df518c8362baaa6903606057f9..1f404e4da7f92e400e1bbc6c35a9d211a9555262 100644 (file)
 %<LibSetCodeTemplateComplianceLevel(1)>
 
 %% Create a the main file
-%if LibIsSingleTasking()
-    %include "rpp_srmain.tlc"
-    %<FcnSingleTaskingMain()>
-%else
-    %include "rpp_mrmain.tlc"
-    %<FcnMultiTaskingMain()>
-%endif
+%include "rpp_mrmain.tlc"
+%<FcnMultiTaskingMain()>
diff --git a/rpp/rpp/rpp_srmain.tlc b/rpp/rpp/rpp_srmain.tlc
deleted file mode 100644 (file)
index 5491f84..0000000
+++ /dev/null
@@ -1,290 +0,0 @@
-%% Copyright (C) 2013-2015 Czech Technical University in Prague
-%%
-%% Authors:
-%%     - Carlos Jenkins <carlos@jenkins.co.cr>
-%%     - Michal Sojka <sojkam1@fel.cvut.cz>
-%%
-%% This document contains proprietary information belonging to Czech
-%% Technical University in Prague. Passing on and copying of this
-%% document, and communication of its contents is not permitted
-%% without prior written authorization.
-%%
-%% File : rpp_srmain.tlc
-%% Abstract:
-%%     Custom TLC file to generate an RPP "main" file.
-%%
-%%     This file generates the "main" file for the RPP target on top of the RPP
-%%     library and the FreeRTOS operating system.
-%%
-%%     The sr prefix is standard to mark Single Tasking main, which is the case. See 
-%%     rpp_file_process.m description above for more information about this.
-%%
-%% References:
-%%     Example in <matlabroot>/rtw/c/tlc/mw/bareboard_srmain.tlc
-
-
-%selectfile NULL_FILE
-
-%function FcnSingleTaskingMain() void
-
-    %if GenerateSampleERTMain
-        %assign CompiledModel.GenerateSampleERTMain = TLC_FALSE
-    %endif
-
-
-    %assign cFile = LibCreateSourceFile("Source", "Custom", "ert_main")
-
-
-    %%%%%%%%
-    %openfile tmpBuf
-
-    /* Model includes */
-    #include "%<LibGetMdlPubHdrBaseName()>.h"
-
-    /* RPP runtime includes */
-    #include "rpp_simulink_runtime.h"
-
-    %if extMode == 1
-      /* External mode header file */
-      #include "ext_work.h"
-      #include <drv/sci.h>
-    %endif
-
-    %closefile tmpBuf
-    %<LibSetSourceFileSection(cFile, "Includes", tmpBuf)>
-    %%%%%%%%
-
-
-    %%%%%%%%
-    %openfile tmpBuf
-
-    /* Definitions */
-    #define STEP_SIZE_MILLIS (%<CompiledModel.FundamentalStepSize>*1000.0)
-    #define CONTROL_PRIORITY 3
-    #define WORKING_PRIORITY 2
-    #define EXTMODE_PRIORITY 1
-
-    %closefile tmpBuf
-    %<LibSetSourceFileSection(cFile, "Defines", tmpBuf)>
-    %%%%%%%%
-
-
-    %%%%%%%%
-    %openfile tmpBuf
-
-    static boolean_t working = FALSE;
-    static xSemaphoreHandle step_signal = NULL;
-    static xSemaphoreHandle initialized_signal = NULL;
-    %if extMode == 1
-      static xSemaphoreHandle ext_mode_ready = NULL;
-    %endif
-    static uint32_t steps_control = 0;
-    static uint32_t steps_working = 0;
-    boolean_t overrun_flag = FALSE;
-
-    %closefile tmpBuf
-    %<LibSetSourceFileSection(cFile, "Declarations", tmpBuf)>
-    %%%%%%%%
-
-
-    %%%%%%%%
-    %openfile tmpBuf
-
-    /**
-     * Model step control and overrun detection task.
-     */
-    void control_task(void* p)
-    {
-
-      xSemaphoreTake(initialized_signal, portMAX_DELAY);
-      %if extMode == 1
-        xSemaphoreTake(ext_mode_ready, portMAX_DELAY);
-      %endif
-
-        static const portTickType freq_ticks = STEP_SIZE_MILLIS / portTICK_RATE_MS;
-        portTickType last_wake_time = xTaskGetTickCount();
-
-    %% This condition has been added because of the warning:
-    %% "ert_main.c", line 46: warning #238-D: controlling expression is constant
-    %% caused by the expression (void*) 0 passed to the while statement. The rtmGetStopRequested
-    %% macro is defined to this constant if and only if the GenerateSampleERTMain is not set. So
-    %% The condition is not needed in this case as well.
-    %%
-    %% See <MATLAB_ROOT>/rtw/c/tlc/mw/rtmspecmacs.tlc at line 198.
-
-    %if !GenerateSampleERTMain
-        while (rtmGetErrorStatus(%<modelName>_M) == NULL) {
-    %else
-        while (rtmGetErrorStatus(%<modelName>_M) == NULL && !rtmGetStopRequested(%<modelName>_M)) {
-    %endif
-            /* Wait until next step */
-            vTaskDelayUntil(&last_wake_time, freq_ticks);
-
-            if (working) {
-                /* Overrun detected */
-                overrun_flag = TRUE;
-            } else {
-                /* Release semaphore */
-                xSemaphoreGive(step_signal);
-            }
-            steps_control++;
-
-            %if extMode == 1
-              rtExtModeCheckEndTrigger();
-            %endif
-
-        }
-
-        /* In case of shutdown, delete this task */
-        vTaskDelete(NULL);
-    }
-
-    /**
-     * Model step logic execution task.
-     */
-    void working_task(void* p)
-    {
-        /* Initialize model */
-        %<LibCallModelInitialize()>\
-        /* Step the model for any subrate */
-        xSemaphoreGive(initialized_signal);
-
-        while (1) {
-            if (xSemaphoreTake(step_signal, portMAX_DELAY)) {
-                working = TRUE;
-                %<LibCallModelStep(0)>\
-                steps_working++;
-                working = FALSE;
-            }
-        }
-
-       %% /* In case of shutdown, delete this task */
-       %% vTaskDelete(NULL);
-    }
-
-    %if extMode == 1
-      void ext_mode_comm_task(void* p)
-      {
-        drv_sci_set_crlf_conv_en(FALSE); /* Disable CR->CRLF conversion */
-
-        %<SLibGenERTExtModeInit()>
-        xSemaphoreGive(ext_mode_ready);
-
-        while (rtmGetErrorStatus(%<modelName>_M) == NULL && !rtmGetStopRequested(%<modelName>_M)) {
-          rtExtModeOneStep(rtmGetRTWExtModeInfo(%<modelName>_M), %<numSampleTimes>, (boolean_T *)&rtmGetStopRequested(%<modelName>_M));
-        }
-        rtExtModeShutdown(%<numSampleTimes>);
-        /* In case of shutdown, delete this task */
-        vTaskDelete(NULL);
-      }
-    %endif
-
-    /**
-     * Hardware initialization, task spawning and OS scheduler start.
-     */
-    void main(void)
-    {
-        /* Initialize RPP board */
-        %if EXISTS(::rpp_ain_present)
-            rpp_adc_init();
-        %endif
-        %if EXISTS(::rpp_aout_present)
-            rpp_dac_init();
-        %endif
-        %if EXISTS(::rpp_din_present)
-            rpp_din_init();
-        %endif
-        %if EXISTS(::rpp_hbr_present)
-            rpp_hbr_init();
-        %endif
-        %if EXISTS(::rpp_irc_present)
-            rpp_irc_init();
-        %endif
-        %if EXISTS(::rpp_lout_present)
-            rpp_lout_init();
-        %endif
-        %if EXISTS(::rpp_mout_present)
-            rpp_mout_init();
-        %endif
-        %if EXISTS(::rpp_sdr_present)
-            rpp_sdr_init();
-        %endif
-        %if EXISTS(::rpp_gio_in_present) || EXISTS(::rpp_gio_out_present)
-            rpp_gio_init(RPP_GIO_PORT_ALL);
-        %endif
-        rpp_sci_init();
-
-        // Speed up the SCI
-        rpp_sci_setup(115200);
-
-        %if rppPrintMeta
-        %assign model_info = SPRINTF("'%s' - %s (TLC %s)\\r\\n", LibGetMdlPubHdrBaseName(), TLC_TIME, TLC_VERSION)
-        rpp_sci_printk("%<model_info>");
-        %endif
-
-        /* Create and lock semaphore */
-        vSemaphoreCreateBinary(step_signal);
-        xSemaphoreTake(step_signal, 0);
-        vSemaphoreCreateBinary(initialized_signal);
-        xSemaphoreTake(initialized_signal, 0);
-        %if extMode == 1
-          vSemaphoreCreateBinary(ext_mode_ready);
-          xSemaphoreTake(ext_mode_ready, 0);
-        %endif
-
-        /* Create tasks to step model and model task */
-        if (xTaskCreate(control_task, "control_task",
-            configMINIMAL_STACK_SIZE, NULL, CONTROL_PRIORITY, NULL) != pdPASS) {
-            rpp_sci_printk("ERROR: Cannot spawn control task.\r\n");
-            return;
-        }
-        if (xTaskCreate(working_task, "working_task",
-            %<rppModelTaskStack>, NULL, WORKING_PRIORITY, NULL) != pdPASS) {
-            rpp_sci_printk("ERROR: Cannot spawn model task.\r\n"
-            );
-            return;
-        }
-        %if extMode == 1
-          /* External mode */
-          rtParseArgsForExtMode(0, NULL);
-
-          if (xTaskCreate(ext_mode_comm_task, "ext_mode_comm_task", 1024, NULL, EXTMODE_PRIORITY, NULL) != pdPASS) {
-            rpp_sci_printk("ERROR: Cannot spawn model task.\r\n");
-            return;
-          }
-        %endif
-
-        /* Start FreeRTOS Scheduler */
-        vTaskStartScheduler();
-
-        /* We should never get here */
-        %<LibCallModelTerminate()>
-        rpp_sci_printk("ERROR: Problem allocating memory for idle task.\r\n");
-    }
-
-
-    #if configUSE_MALLOC_FAILED_HOOK == 1
-    /**
-     * FreeRTOS malloc() failed hook.
-     */
-     void vApplicationMallocFailedHook(void) {
-       rpp_sci_printk("ERROR: Memory allocation failed.\r\n");
-     }
-    #endif
-
-
-    #if configCHECK_FOR_STACK_OVERFLOW > 0
-    /**
-     * FreeRTOS stack overflow hook.
-     */
-    void vApplicationStackOverflowHook(xTaskHandle xTask, signed portCHAR *pcTaskName)
-    {
-      rpp_sci_printk("ERROR: Stack overflow : \"%s\".\r\n", pcTaskName);
-    }
-    #endif
-
-    %closefile tmpBuf
-    %<LibSetSourceFileSection(cFile, "Functions", tmpBuf)>
-    %%%%%%%%
-
-%endfunction