Configure Model to Generate C API Code for Root-Level Ports
This example shows how to configure a model to include the C API for root-level input and output ports in the generated code.
Open the model CapiConfigDemo.
capiMdl = "CapiConfigDemo";
open_system(capiMdl);Enable C API Generation for Root-Level Ports
To enable C API code generation for root-level ports:
Open the Configuration Parameters dialog box.
Navigate to the Code Generation > Interface pane.
In the Data exchange interface > Generate C API for section, select root-level I/O.
Click OK.
![]()
Alternatively, enter this in the Command Window:
set_param(capiMdl,RTWCAPIRootIO=true)
Generate Model Code
Use the slbuild command to generate code from your model. Use evalc to suppress the output of the slbuild command.
evalc("slbuild(capiMdl,GenerateCodeOnly=true)");Verify That Root-Level Ports Are Included in C API
The C API structure arrays that correspond to model root-level ports are rtRootInputs and rtRootOutputs. To view the instantiation code for these structures, examine the generated C API source file CapiConfigDemo_capi.c (located in the folder CapiConfigDemo_grt_rtw).
This is the instantiation code for the structures in this file:
/* Root Inputs information */
static const rtwCAPI_Signals rtRootInputs[] = {
/* addrMapIndex, sysNum, blockPath,
* signalName, portNumber, dataTypeIndex, dimIndex, fxpIndex, sTimeIndex
*/
{ 0, 0, TARGET_STRING("CapiConfigDemo/Inport1"),
TARGET_STRING(""), 1, 0, 0, 0, 0 },
{ 1, 0, TARGET_STRING("CapiConfigDemo/Inport2"),
TARGET_STRING(""), 2, 0, 0, 0, 0 },
{
0, 0, (NULL), (NULL), 0, 0, 0, 0, 0
}
};
/* Root Outputs information */
static const rtwCAPI_Signals rtRootOutputs[] = {
/* addrMapIndex, sysNum, blockPath,
* signalName, portNumber, dataTypeIndex, dimIndex, fxpIndex, sTimeIndex
*/
{ 2, 0, TARGET_STRING("CapiConfigDemo/Outport1"),
TARGET_STRING(""), 1, 0, 0, 0, 0 },
{ 3, 0, TARGET_STRING("CapiConfigDemo/Outport2"),
TARGET_STRING(""), 2, 0, 0, 0, 0 },
{
0, 0, (NULL), (NULL), 0, 0, 0, 0, 0
}
};