]> rtime.felk.cvut.cz Git - pes-rpp/rpp-simulink.git/blobdiff - rpp/blocks/trailer.c
Change license to MIT
[pes-rpp/rpp-simulink.git] / rpp / blocks / trailer.c
index b03316c19dc5ac6a0a7e74711d49bfea6b94ba61..8ff4a707fd48e8797c99cbbdad37d0908d62de5f 100644 (file)
@@ -3,22 +3,34 @@
  * Authors:
  *     - Carlos Jenkins <carlos@jenkins.co.cr>
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
  *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
  *
- * File : header.c
+ * File : trailer.c
  * Abstract:
- *     Common trailer for all RPP S-Functions.
+ *     Common trailer for all RPP S-Functions. 
+ *     This file is included at the tail of each S-Function file. It includes refactored and
+ *     commonly repeated structures that pollute S-Functions implementations. It includes basic
+ *     includes, required definitions, macro definitions, common functions implementations and
+ *     documentation on optional functions and commented prototypes for optional model calls/hooks.
  *
  * References:
  *     header.c
@@ -32,8 +44,8 @@
 
 /* Function: mdlInitializeSizes ================================================
  * Abstract:
- *    The sizes information is used by Simulink to determine the S-function
- *    block's characteristics (number of inputs, outputs, states, etc.).
+ *     The sizes information is used by Simulink to determine the S-function
+ *     block's characteristics (number of inputs, outputs, states, etc.).
  */
 #ifdef UNUSED_MDLINITIALIZESIZES
 static void mdlInitializeSizes(SimStruct *S)
@@ -45,9 +57,9 @@ static void mdlInitializeSizes(SimStruct *S)
 
 /* Function: mdlInitializeSampleTimes ==========================================
  * Abstract:
- *    This function is used to specify the sample time(s) for your
- *    S-function. You must register the same number of sample times as
- *    specified in ssSetNumSampleTimes.
+ *     This function is used to specify the sample time(s) for your
+ *     S-function. You must register the same number of sample times as
+ *     specified in ssSetNumSampleTimes.
  */
 #ifdef UNUSED_MDLINITIALIZESAMPLETIMES
 static void mdlInitializeSampleTimes(SimStruct *S)
@@ -57,11 +69,23 @@ static void mdlInitializeSampleTimes(SimStruct *S)
 #endif
 
 
+#ifdef COMMON_MDLINITIALIZESAMPLETIMES_INHERIT
+static void mdlInitializeSampleTimes(SimStruct *S)
+{
+    ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);
+    ssSetOffsetTime(S, 0, 0.0);
+    #if defined(ssSetModelReferenceSampleTimeDefaultInheritance)
+    ssSetModelReferenceSampleTimeDefaultInheritance(S);
+    #endif
+}
+#endif
+
+
 /* Function: mdlOutputs ========================================================
  * Abstract:
- *    In this function, you compute the outputs of your S-function
- *    block. Generally outputs are placed in the output vector(s),
- *    ssGetOutputPortSignal.
+ *     In this function, you compute the outputs of your S-function
+ *     block. Generally outputs are placed in the output vector(s),
+ *     ssGetOutputPortSignal.
  */
 #ifdef UNUSED_MDLOUTPUTS
 static void mdlOutputs(SimStruct *S, int_T tid)
@@ -74,8 +98,8 @@ static void mdlOutputs(SimStruct *S, int_T tid)
 
 /* Function: mdlTerminate ======================================================
  * Abstract:
- *    In this function, you should perform any actions that are necessary
- *    at the termination of a simulation.
+ *     In this function, you should perform any actions that are necessary
+ *     at the termination of a simulation.
  */
 #ifdef UNUSED_MDLTERMINATE
 static void mdlTerminate(SimStruct *S)
@@ -87,15 +111,15 @@ static void mdlTerminate(SimStruct *S)
 
 /* Function: mdlCheckParameters ================================================
  * Abstract:
- *    mdlCheckParameters verifies new parameter settings whenever parameter
- *    change or are re-evaluated during a simulation. When a simulation is
- *    running, changes to S-function parameters can occur at any time during
- *    the simulation loop.
+ *     mdlCheckParameters verifies new parameter settings whenever parameter
+ *     change or are re-evaluated during a simulation. When a simulation is
+ *     running, changes to S-function parameters can occur at any time during
+ *     the simulation loop.
  *
- *    Note: this an optional function for S-Function, in contrast to the ones
- *          above. This is here just because header.c declares
- *          checkParametersMismatch() that uses this function in order to
- *          refactor that commonly used block of code.
+ *     Note: this an optional function for S-Function, in contrast to the ones
+ *           above. This is here just because header.c declares
+ *           checkParametersMismatch() that uses this function in order to
+ *           refactor that commonly used block of code.
  */
 #ifdef UNUSED_MDLCHECKPARAMETERS
 static void mdlCheckParameters(SimStruct *S)