X-Git-Url: https://rtime.felk.cvut.cz/gitweb/mf624-simulink.git/blobdiff_plain/24a28c6465f225e89664a92dc9eae156efa93da9..f68e0aa7d1b39a46e039a8c3b7bc8cca4ae7e86c:/sfDigitalOutput.c diff --git a/sfDigitalOutput.c b/sfDigitalOutput.c index 81c0607..f3fd889 100644 --- a/sfDigitalOutput.c +++ b/sfDigitalOutput.c @@ -1,12 +1,34 @@ /* - * sfuntmpl_basic.c: Basic 'C' template for a level 2 S-function. + * S-function to support digital outputs on Humusoft MF624 card * - * ------------------------------------------------------------------------- - * | See matlabroot/simulink/src/sfuntmpl_doc.c for a more detailed template | - * ------------------------------------------------------------------------- + * Copyright (C) 2013 Michal Kreč + * Copyright (C) 2013 Michal Sojka * - * Copyright 1990-2002 The MathWorks, Inc. - * $Revision: 1.27.4.2 $ + * Department of Control Engineering + * Faculty of Electrical Engineering + * Czech Technical University in Prague (CTU) + * + * The S-Function for ERT Linux can be distributed in compliance + * with GNU General Public License (GPL) version 2 or later. + * Other licence can negotiated with CTU. + * + * Next exception is granted in addition to GPL. + * Instantiating or linking compiled version of this code + * to produce an application image/executable, does not + * by itself cause the resulting application image/executable + * to be covered by the GNU General Public License. + * This exception does not however invalidate any other reasons + * why the executable file might be covered by the GNU Public License. + * Publication of enhanced or derived S-function files is required + * although. + * + * Linux ERT code is available from + * http://rtime.felk.cvut.cz/gitweb/ert_linux.git + * More CTU Linux target for Simulink components are available at + * http://lintarget.sourceforge.net/ + * + * sfuntmpl_basic.c by The MathWorks, Inc. has been used to accomplish + * required S-function structure. */ @@ -25,7 +47,10 @@ * its associated macro definitions. */ #include "simstruc.h" + +#ifndef WITHOUT_HW #include "mf624_SIMULINK.h" +#endif /*WITHOUT_HW*/ /* Error handling * -------------- @@ -146,10 +171,11 @@ static void mdlInitializeSampleTimes(SimStruct *S) */ static void mdlStart(SimStruct *S) { + #ifndef WITHOUT_HW if (mf624_init(NULL) != 0) return; mfst->DOut=0; - + #endif /*WITHOUT_HW*/ } #endif /* MDL_START */ @@ -164,6 +190,7 @@ static void mdlOutputs(SimStruct *S, int_T tid) { const real_T *u = (const real_T*) ssGetInputPortSignal(S,0); + #ifndef WITHOUT_HW if (mf624_check(S) != 0) return; @@ -177,6 +204,7 @@ static void mdlOutputs(SimStruct *S, int_T tid) } mf624_write16(mfst->DOut, MFST2REG(mfst, 2, DOUT_reg)); + #endif /*WITHOUT_HW*/ } @@ -219,7 +247,9 @@ static void mdlOutputs(SimStruct *S, int_T tid) */ static void mdlTerminate(SimStruct *S) { - mf624_done(); + #ifndef WITHOUT_HW + mf624_done(); + #endif /*WITHOUT_HW*/ }