Main Content

find

Get model elements for the category of model code mappings

Since R2020b

    Description

    modelElementsFound = find(coderMapObj,elementCategory) returns the elements in the model code mappings of the specified category as an array of objects.

    modelElementsFound= find(coderMapObj,elementCategory,Name=Value) returns the elements in the model code mappings of the specified category that match specified property and value criteria.

    example

    Examples

    collapse all

    Use the programmatic interface to find model elements that are related to the code mappings.

    To interactively observe how your commands are reflected in the Code Mappings editor, make sure the Code Mappings editor is open with the Inports 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 this model.

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

    Find input port handles of ports with ImportedExtern storage class and input ports with ImportedExternPointer storage class.

    importedExternInportHandles = find(codeMapObj,"Inports",StorageClass="ImportedExtern")'
    importedExternInportHandles = 2×1
    
      154.0031
      156.0033
    
    
    importedExternPointerInportHandles = find(codeMapObj,"Inports",StorageClass="ImportedExternPointer")'
    importedExternPointerInportHandles = 2×1
    
      158.0029
      160.0020
    
    

    Get the names of the input ports.

    importedExterInportNames = string(get_param(importedExternInportHandles,"Name"))
    importedExterInportNames = 2x1 string
        "in_port_1"
        "in_port_2"
    
    
    importedExternPointerInportNames = string(get_param(importedExternPointerInportHandles,"Name"))
    importedExternPointerInportNames = 2x1 string
        "in_port_3"
        "in_port_4"
    
    

    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 private 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:

    /* Imported (extern) block signals */
    extern real_T in_port_1;               /* '<Root>/in_port_1' */
    extern real_T in_port_2;               /* '<Root>/in_port_2' */
    
    /* Imported (extern) pointer block signals */
    extern real_T *in_port_3;              /* '<Root>/in_port_3' */
    extern real_T *in_port_4;              /* '<Root>/in_port_4' */
    

    The storage classes of the ports match the storage classes passed to the find function.

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

    edit(priv_h_file)
    

    To see the ImportedExtern inports highlighted in the model canvas and in the Code Mappings editor, enter this command:

    arrayfun(@(pHandle) set_param(pHandle,Selected="on"),importedExternInportHandles);

    Input Arguments

    collapse all

    Code mapping object returned by a call to function coder.mapping.api.get

    Example: coderMapObj = coder.mapping.api.get(bdroot)

    Model element category that you search for in the model code mappings, specified as one of these values:

    • "DataStores"

    • "DataTransfers"

    • "ExportedFunctions"

    • "Functions"

    • "FunctionCallers"

    • "Inports"

    • "ModelParameters"

    • "ModelParameterArguments"

    • "Outports"

    • "PartitionFunctions"

    • "PartitionUpdateFunctions"

    • "PeriodicFunctions"

    • "PeriodicUpdateFunctions"

    • "ResetFunctions"

    • "Signals"

    • "SimulinkFunctions"

    • "States"

    Name-Value Arguments

    Specify optional pairs of arguments as Name1=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: find(coderMapObj,StorageClass="Bitfield")

    Data Interfaces

    collapse all

    The name of data element storage class to include in the search criteria, specified as one of these values:

    • "Auto"

    • "ExportedGlobal"

    • "ImportedExtern"

    • "ImportedExternPointer"

    The list of available storage classes vary depending on the specified category.

    Name that the code generator uses to identify a data element in generated code. Applies to storage classes other than "Auto".

    Data Types: char | string

    Output Arguments

    collapse all

    Model elements found, returned as a string array or a handle array, depending on the specified element category.

    Element CategoryType of Object Returned
    "Inports", "Outports", and "States"Block handle
    "Signals"Port handle
    "DataStores"Block handle
    "ModelParameters"Model parameter name
    "ModelParameterArguments"Model parameter argument name

    Version History

    Introduced in R2020b

    expand all