Call Legacy Lookup Table Functions Using C Function Block
This example shows how to use the C Function block to call legacy C functions that implement n-dimensional table lookups.
In this example the legacy C functions are defined in lookupTable.h, and implemented in directLookupTableND.c. The type definitions used in this example can be found in your_types.h.
In the model, the header file and the source file are specified in Model Configuration Parameters > Simulation Target. Now the C function can be called in the C Function block. The prototype of the function being called in this example is:
FLT directLookupTableND(const FLT *tableND, const UINT32 nbDims, const UINT32 *tableDims, const UINT32 *tableIdx)
where FLT is a type definition to a floating-point type, and UINT32 is a type definition to an unsigned 32-bit integer.
This example defines two macro functions that use the function directLookupTableND, which are called using the C Function blocks. They are:
DirectLookupTable3D- 3D lookup tableDirectLookupTable4D- 4D lookup table
Both these functions take the following input arguments:
const FLT *tableND- Tableconst UINT32 *tableDims- Size of the tableconst UINT32 *tableIdx- Table index
where the tableND and tableDims are mapped to C Function block parameters and tableIdx is the input to the block. The value returned by the legacy C function is the output of the block.
model = 'slexCFunctionLookupTable';
open_system(model);
sim(model);
