setDataDefault - Set default storage class and storage class property values for model data

  category - MATLAB ([original](https://www.mathworks.com/help/ecoder/ref/setdatadefault.html)) ([raw](?raw))

Set default storage class and storage class property values for model data category

Since R2020b

Syntax

Description

setDataDefault([coderMapObj](#mw%5F214a3026-7890-497a-ac4f-1105948519a5),[elemCategory](#mw%5F6a02ff79-ff10-4fc6-8291-29ef43bbd4d7),[Name=Value](#namevaluepairarguments)) sets the default storage class and storage class property values in the code mappings for the specified category of model data.

You cannot specify default data interfaces for models with an attached Embedded Coder Dictionary that defines a service interface configuration.

example

Examples

collapse all

Use the programmatic interface to get and set the data defaults in the code mappings configuration of a Simulink model.

To interactively observe how your commands are reflected in the Code Mappings editor, make sure the Code Mappings editor is open with the Data Defaults tab selected. To learn how to open the Code Mappings editor, see Open the Code Mappings Editor — C.

Open the model CoderMapAPI.

simulinkModel = "CoderMapAPI"; open_system(simulinkModel);

Retrieve the code mappings object of the model.

codeMapObj = coder.mapping.api.get(simulinkModel);

Set the storage class of all root-level ports to Model default so that their generated code is determined by the value you set for Data Defaults.

setInport(codeMapObj,find(codeMapObj,"Inport"),StorageClass="Model default") setOutport(codeMapObj,find(codeMapObj,"Outport"),StorageClass="Model default")

Determine the default storage classes for Input and output ports.

inPortDefaultStorageClass = getDataDefault(codeMapObj,"Inports","StorageClass")

inPortDefaultStorageClass = 'ImportedExtern'

outPortDefaultStorageClass = getDataDefault(codeMapObj,"Outports","StorageClass")

outPortDefaultStorageClass = 'ImportedExternPointer'

Generate code from the model.

evalc("slbuild(simulinkModel)");

Root-level ports with ImportedExtern and ImportedExternPointer storage classes are declared in the generated private header file of the model in separate sections.

Store the name of the header file.

priv_h_file = fullfile(simulinkModel+"_grt_rtw",simulinkModel+"_private.h")

priv_h_file = "CoderMapAPI_grt_rtw/CoderMapAPI_private.h"

These are the declarations of the root-level ports in the header file:

/* Data with Imported storage / extern real_T in_port_1; / '/in_port_1' / extern real_T in_port_2; / '/in_port_2' / extern real_T in_port_3; / '/in_port_3' / extern real_T in_port_4; / '/in_port_4' */

/* Data with Imported storage (pointer) */ extern real_T out_port_1; / '/out_port_1' */ extern real_T out_port_2; / '/out_port_2' */ extern real_T out_port_3; / '/out_port_3' */ extern real_T out_port_4; / '/out_port_4' */

To open the header file, enter this command in the MATLAB® Command Window.

Switch between the default storage class of input and output ports.

setDataDefault(codeMapObj,"Inports",StorageClass=outPortDefaultStorageClass); setDataDefault(codeMapObj,"Outports",StorageClass=inPortDefaultStorageClass);

Generate the code from the revised model.

evalc("slbuild(simulinkModel)");

The declarations of the root-level ports are updated in the header file according to the specified storage classes.

/* Data with Imported storage / extern real_T out_port_1; / '/out_port_1' / extern real_T out_port_2; / '/out_port_2' / extern real_T out_port_3; / '/out_port_3' / extern real_T out_port_4; / '/out_port_4' */

/* Data with Imported storage (pointer) */ extern real_T in_port_1; / '/in_port_1' */ extern real_T in_port_2; / '/in_port_2' */ extern real_T in_port_3; / '/in_port_3' */ extern real_T in_port_4; / '/in_port_4' */

Input Arguments

collapse all

Code mapping object (model code mappings) returned by a call to functioncoder.mapping.api.get.

Example: myCM

Category of model data element for which to set the storage class and storage class properties.

Example: "Inports"

Name-Value Arguments

collapse all

Specify optional pairs of arguments asName1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: StorageClass="ExportedGlobal"

Storage class to set for the specified data element category. The name of a predefined storage class or storage class that is defined in the Embedded Coder Dictionary associated with the model. Values that you can specify vary depending on the category that you specify. See Choose Storage Class for Controlling Data Representation in Generated Code.

Example: StorageClass="ImportedExtern"

File name for a C source file that contains definitions for global data read by data elements and external code. Applies to storage classes Const,ConstVolatile, ExportToFile, andVolatile.

Example: DefinitionFile="myDataDefs.c"

Data Types: char | string

Name of a get function that a data element calls in the generated code. Applies to storage class GetSet.

Example: GefFunction="myDataGetFunction"

Data Types: char | string

File name for a C header file that contains declarations for global data read by data elements and external code. Applies to storage classes Const,ConstVolatile, Define,ExportToFile, GetSet,ImportedDefine, ImportFromFile, andVolatile.

Example: HeaderFile="myDataDecl.h"

Data Types: char | string

Name of a memory section that is defined in the Embedded Coder Dictionary associated with the model.

Note

You cannot directly retrieve or configure the defaultMemorySection for theModelParameterArguments category using the code mapping object. To configure the default MemorySection forModelParameterArguments, define a customStorageClass with the MemorySection in a coder dictionary, and set this storage class as the default forModelParameterArguments.

Example: MemorySection="myFastMem"

Data Types: char | string

Name of the model that owns global data, which is used by other models in the same model hierarchy. The code generated for the model that owns the data includes the global data definition. Applies to storage classes Const,ConstVolatile, ExportToFile, andVolatile.

Example: Owner="myModelA"

Data Types: char | string

When model configuration parameter Array layout is set toRow-major, a flag that indicates whether to preserve dimensions of a data element represented in generated code as a multidimensional array. Applies to storage classes Const,ConstVolatile, , ExportToFile,FileScope, GetSet,ImportFromFile, Localizable, andVolatile.

Example: PreserveDimensions=true

Data Types: logical

Name of a set function that a data element calls in the generated code. Applies to storage class GetSet.

Example: SetFunction="myDataSetFunction"

Data Types: char | string

Name that the code generator uses to identify the structure for a data element in the generated code. Applies to storage classes Bitfield andStruct.

Example: StructName="myDataStruct"

Storage class property defined in the Embedded Coder Dictionary. Values that you can specify vary depending on the storage class definition.

Data Types: char | string

Version History

Introduced in R2020b