* 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
/* 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)
/* 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)
#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)
/* 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)
/* 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)