This example shows how to generate a function call by adding a subsystem, which implements the operations that you want.
void add_function(void) { y1 = u1 + u2; }
1. Open example model ex_function_call
.
The subsystem has two inputs and returns one output.
Selecting the Treat as atomic unit parameter enables parameters on the Code Generation tab. The Code Generation tab provides these customizations:
Function packaging set to Nonreusable function
Function name options set to User specified
Function name specified as add_function
File name options set to Use function name
2. To build the model and generate code, press Ctrl+B.
In ex_function_call.c
, the function is called from ex_function_call_step
:
/* Model step function */ void ex_function_call_step(void) { /* Outputs for Atomic SubSystem: '<Root>/Add_Subsystem' */ add_function(); /* End of Outputs for SubSystem: '<Root>/Add_Subsystem' */ }
The function prototype is externally declared through the subsystem file, add_function.h
:
extern void add_function(void);
The function definition is in the subsystem file add_function.c
:
void add_function(void) { /* Outport: '<Root>/y1' incorporates: * Inport: '<Root>/u1' * Inport: '<Root>/u2' * Sum: '<S1>/Sum' */ rtY.y1 = u1 + u2; }