]> rtime.felk.cvut.cz Git - ert_linux.git/commitdiff
External mode works now
authorMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 12 Jul 2013 08:38:29 +0000 (10:38 +0200)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 12 Jul 2013 08:38:29 +0000 (10:38 +0200)
ert_linux/ert_linux_multitasking_main.tlc

index 8574656627d1192afdc01a223f969fa664aab30c..aa40ed1d8f32678d27cef2ea4bad0e33112d620a 100644 (file)
 \r
 %endfunction\r
 \r
+%function printfunc() Output\r
+  /% printf("%s\n", __func__); %/\r
+%endfunction\r
+\r
 %function generateRtOneStep() Output\r
   %foreach j = numSampleTimes - 1\r
     %assign i = j + 1\r
     {\r
       while(!simulationFinished) {\r
        sem_wait(&sub_rate[%<i>].sem);    /* sem_val = 1 */\r
-       printf("%s\n", __func__);\r
+       %<printfunc()>\r
        %<modelName>_step%<i>();\r
-       %if extMode == 1\r
-          rtExtModeUpload(%<i>, %<RTMGetTaskTimeForTID(i)>);\r
-       %endif\r
        sem_wait(&sub_rate[%<i>].sem);    /* sem_val = 0 */\r
       }\r
     }\r
 \r
     /* Main loop, running until all the threads are terminated */\r
     while(rtmGetErrorStatus(%<modelName>_M) == NULL && !rtmGetStopRequested(%<modelName>_M)) {\r
-      printf("%s\n", __func__);\r
+      %<printfunc()>\r
       /* Check subrate overrun, set rates that need to run this time step*/\r
       %<LibCallSetEventForThisBaseStep("eventFlags")>\\r
 \r
+      /* Trigger sub-rate threads */\r
       %foreach i = numSampleTimes\r
        %if i == 0 || i == 1 && tid01Eq\r
          %continue\r
        }\r
       %endforeach\r
 \r
-      %if extMode == 1\r
-        /* external mode */\r
-       rtExtModeUpload(0, %<RTMGetTaskTimeForTID(0)>);\r
-       %if tid01Eq\r
-         rtExtModeUpload(1, %<RTMGetTaskTimeForTID(1)>);\r
-       %endif\r
+      /* Execute base rate step */\r
+      %<modelName>_step0();\r
 \r
+      %if extMode == 1\r
        rtExtModeCheckEndTrigger();\r
-        rtExtModePauseIfNeeded(rtmGetRTWExtModeInfo(RT_MDL),\r
-                               NUMST,\r
-                               (boolean_T *)&rtmGetStopRequested(RT_MDL));\r
         rtExtModeOneStep(rtmGetRTWExtModeInfo(RT_MDL),\r
                          NUMST,\r
                          (boolean_T *)&rtmGetStopRequested(RT_MDL));\r
       if (now.tv_sec > next.tv_sec ||\r
           (now.tv_sec == next.tv_sec && now.tv_nsec > next.tv_nsec)) {\r
            uint64_T nsec = (now.tv_sec - next.tv_sec) * 1000000000 + now.tv_nsec - next.tv_nsec;\r
-           fprintf(stderr, "Base rate (%<s>s) overrun by %d us\n", (int)(nsec/1000));\r
+           fprintf(stderr, "Base rate (%<fundamentalStepSize>s) overrun by %d us\n", (int)(nsec/1000));\r
       }\r
       clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &next, NULL);\r
 \r