Main Content

ssGetInputPortSignal

Get the address of a contiguous signal entering an input port

Syntax

const void *ssGetInputPortSignal(SimStruct *S, int_T inputPortIdx)

Arguments

S

SimStruct that represents an S-Function block.

inputPortIdx

Index of the port whose address is required.

Returns

A pointer (void *) to the input port specified by the index inputPortIdx.

Description

Use to get the address of a contiguous signal entering an input port. Your S-function should use this macro only if mdlInitializeSizes has specified that the elements of the input signal be contiguous, using ssSetInputPortRequiredContiguous. For noncontiguous input, use the ssGetInputPortSignalPtrs function.

Note

If you have specified that the input ports are reusable using ssSetInputPortOptimOpts, then you cannot use ssGetInputPortSignal anywhere except in mdlOutputs. For example, if the inputs have been specified as reusable with the SS_REUSABLE_AND_LOCAL flag, the mdlUpdate routine errors out because it tries to access input memory that is unavailable.

Note

The ssGetInputPortSignal macro becomes a function when you compile your S-function in debug mode (mex -g).

Languages

C, C++

Examples

The following code demonstrates the use of ssGetInputPortSignal.

nInputPorts = ssGetNumInputPorts(S);
	for (i = 0; i < nInputPorts; i++) {
		int_T nu = ssGetInputPortWidth(S,i);

	if ( ssGetInputPortRequiredContiguous(S,i) ) {
  
		const void *u = ssGetInputPortSignal(S,i);
		UseInputVectorInSomeFunction(u, nu);

		} else {

		InputPtrsType u  = ssGetInputPortSignalPtrs(S,i);
			for (j = 0; j < nu; j++) {
			UseInputInSomeFunction(*u[j]);
			}
		}
	}

If you know that the inputs are always real_T signals, the ssGetInputPortSignal line in the above code snippet would be

const real_T *u = ssGetInputPortRealSignal(S,i);

Version History

Introduced before R2006a