Set the data types of ports whose data types cannot be determined from block connectivity
No
C, C++
#define MDL_SET_DEFAULT_PORT_DATA_TYPES
void mdlSetDefaultPortDataTypes(SimStruct *S)
S
SimStruct representing an S-Function block.
The Simulink® engine invokes this method if the block has
ports whose data types cannot be determined from block connectivity.
(This usually happens when the block is unconnected or is part of
a feedback loop.) This method must set the data types of all ports
whose data types are not set. This method is only valid for simulation,
and must be enclosed in a #if defined(MATLAB_MEX_FILE)
statement.
If the block does not implement this method and the engine cannot
determine the data types of any of its ports, the engine sets the
data types of all the ports to double
. If the block
does not implement this method and the engine cannot determine the
data types of some, but not all, of its ports, the engine sets the
unknown ports to the data type of the port whose data type has the
largest size.
The engine invokes an error if the mdlSetDefaultPortDataType
method
attempts to modify the data type of a port when the data type was
previously specified by mdlSetInputPortDataType
or mdlSetOutputPortDataType
.
If an S-function has multiple input or output ports, mdlSetDefaultPortDataType
should
check if the data type of a port is still dynamic before attempting
to set the type. For example, the mdlSetDefaultPortDataType
uses
the following lines to check if the data type of the second input
port is still unknown.
if (ssGetInputPortDataType(S, 1) == DYNAMICALLY_TYPED) { ssSetInputPortDataType(S, 1, SS_UINT8 ); }