ssGetBusElementDimensions

Get the dimensions of a bus element

Syntax

const int_T* ssGetBusElementDimensions(SimStruct* S, int_T busTypeID, int_T elemIdx)

Arguments

S

SimStruct that represents an S-Function block

busTypeID

The bus data type identifier that represents the bus signal

elemIdx

The zero-based bus element index

Returns

const int_T*

Description

Obtain the dimensions (const int_T*) for the bus element that you specify. To iterate over the integer array that ssGetBusElementDimensions returns, use ssGetBusElementNumDimensions.

Bus S-function Usage Guidelines

Use this S-function in simulations. You cannot use this S-function for code generation.

This S-function does not support bus elements that have any of the following characteristics:

  • Variable dimensions

  • Frames

  • Enumerated (enum) data types

To use this S-function and other bus-related S-functions, before you run the simulation, execute the following MATLAB® command:

set_param(block_handle, 'EnableBusSupport', 'on')

To automate setting the EnableBusSupport parameter, use one of the following approaches:

  • Add the command to the model initialization callback.

  • Mask the S-Function block and add the command to the mask initialization callback

Languages

C, C++

Example

static void mdlOutputs(SimStruct *S, int_T tid)
 {
    DTypeId    dType    = ssGetOutputPortDataType(S, 0);
    const void *u       = ssGetInputPortSignal(S, 0);
    int        numElems = ssGetNumBusElements(S, dType);
    int        i;
    
    for(i=0; i<numElems; i++) {
        int_T       numDims   = ssGetBusElementNumDimensions(S, dType, i);
        const int_T *dims     = ssGetBusElementDimensions(S, dType, i);
        int         width     = 1;
        int         j;
        
        /* Compute width of the bus element */
        for(j=0; j<numDims; j++) {
            width *= dims[j];
        }
      }
    }
Was this topic helpful?