Get Generated Type and Name of Inport Structures
To obtain the generated type and name of inport and outport structures, use the code descriptor API. The code generator stores this information within a DataImplementation
object field on a DataInterface
object when it generates the code.
To interface your generated code with other components of your application, use the code descriptor API.
Open and Build Model
Open the model.
myModel = "SumModel";
open_system(myModel);
Build the model.
evalc("slbuild(myModel)");
The generated code includes a structure representing the inports.
/* External inputs (root inport signals with default storage) */ ExtU rtU;
Get Code Descriptor and Inport Structure Names and Types
Get the code descriptor object.
codeDescObj = coder.getCodeDescriptor(myModel)
codeDescObj = CodeDescriptor with properties: ModelName: 'SumModel' BuildDir: '/tmp/Bdoc24b_2679053_785618/tpb0321bce/simulinkcoder-ex78186698/SumModel_ert_rtw'
Get the list of data interface types in the generated code.
dataInterfaceTypes = codeDescObj.getDataInterfaceTypes()
dataInterfaceTypes = 2x1 cell
{'Inports' }
{'Outports'}
Get the DataInterface
object that represents the inports.
inports = codeDescObj.getDataInterfaces('Inports')
inports = 1x2 DataInterface array with properties: Type SID GraphicalName VariantInfo Implementation Timing Unit Range
Get the Implementation
object that represents the first inport. In this example, the inports are each represented as a StructExpression
, which is a subclass of DataImplementation
.
impl = inports(1).Implementation
impl = StructExpression with properties: Type: [1x1 coder.descriptor.types.Type] BaseRegion: [1x1 coder.descriptor.TypedRegion] ElementIdentifier: 'In1' Variant: ''
Get the Type
of the first inport. The Type
of the inport is real_T
.
implType = impl.Type
implType = Double with properties: Identifier: 'real_T' Name: 'double' ReadOnly: 0 Volatile: 0 WordLength: 64 Signed: 1
Get the BaseRegion
of the first inport. BaseRegion
represents the structure that contains the inport. The BaseRegion
is rtU
.
baseRegion = impl.BaseRegion
baseRegion = Variable with properties: Type: [1x1 coder.descriptor.types.Type] Identifier: 'rtU' VarOwner: 'SumModel' StorageSpecifier: 'extern'
Get the Type
of the BaseRegion
. The Type
of the BaseRegion
is ExtU
.
baseRegionType = baseRegion.Type
baseRegionType = Struct with properties: Identifier: 'ExtU' Name: 'ExtU' ReadOnly: 0 Volatile: 0 Elements: [1x2 coder.descriptor.types.AggregateElement Sequence] Checksum: [1x0 Integer Sequence]
Close Model
bdclose(myModel);