Is the enclosing element for data type definitions.
/component_viewer/typedefs/typedef
Define complex data types that may be used in read, readlist, and var elements.
Parent Element | Element Chain |
typedefs | /component_viewer/typedefs |
Attributes | Description | Type | Use |
name | Define the name of a data type. This name is used in read, readlist, and var elements. | xs:anySimpleType | required |
size | Size to read in target memory in [Bytes]. You can enter Expressions to calculate the size or use Built-in Functions. | xs:anySimpleType | optional |
const | Value for a constant variable. Default value is 0. You can enter Expressions and use Built-in Functions. | xs:anySimpleType | optional |
info | Descriptive text with additional information (comment). | xs:anySimpleType | optional |
Child Element | Description | Type | Occurrence |
member | Name of a member variable in target memory. | MemberType | 0..* |
var | Temporary variables for local calculations in component viewer. | VarType | 0..* |
Example: Using var
<typedefs>
<!-- Structure reflecting an array -->
<typedef name="TypeArray1" size="8">
<member name="type_ref" type="uint32_t" offset="0" info="Pointer to array"/>
<member name="id1" type="uint8_t" offset="4" info="Type ID"/>
<member name="attr" type="uint8_t" offset="5" info="Type Attribute"/>
<var name="idx" type="uint32_t" info="Index in array"/>
</typedef>
<!-- Helper variables for Stack-usage calculation -->
<typedef name="TypeArray2" size="8">
<var name="XcurSP" type="uint32_t" value="0"/>
<var name="bSimpleStk" type="int32_t"/>
</typedef>
</typedefs>
Example: Using read
main.c file
struct MyComp_info_t {
int version;
int channels;
int buffersize;
};
struct MyComp_info_t MyComp_info;
void MyComp_initialize (void) {
MyComp_info.version = 3;
MyComp_info.channels = 1;
MyComp_info.buffersize = sizeof(MyComp_data.buf);
}
*.SCVD file
<objects>
<object name="MyComponent">
<read name="MyComp_info" type="MyComp_info" symbol="MyComp_info"/>
<out name="MyComponent Overview">
<item property="Generic">
<item property="Version" value="%d[MyComp_info.version]"/>
<item property="Channels" value="%d[MyComp_info.channels]"/>
<item property="Max. Transmit Size" value="%d[MyComp_info.buffersize] Bytes"/>
</item>
</out>
</object>
</objects>
Example: Using import
main.c File
#define CONDITION_0 (0)
#define CONFIG_NAME_SZ (8)
#define CONDITION_1 (0)
typedef struct {
uint32_t Member_0;
uint32_t Member_1;
} StructA_t;
typedef struct {
uint32_t Var_0;
#if (CONDITION_0 == 1)
StructA_t Sample0;
#endif
StructA_t Sample1;
char Name[CONFIG_NAME_SZ];
#if (CONDITION_1 == 1)
uint32_t Var_1;
#endif
uint32_t Var_2;
} StructOfVarSz;
StructofVarSz MyVarStruct;
SCVD File
<component_viewer schemaVersion="0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="Component_Viewer.xsd">
<component name="MyView2" version="0.0.1"/> <!-- name and version of the component -->
<typedefs>
<typedef name="StructOfVarSz" size="32" import="MyVarStruct" info="Structure Of Variable Size">
<member name="Var_0" type="uint32_t" offset="0" info="Variable 0 (always present)"/>
<!-- StructA_t inlined -->
<member name="Sample0_Member0" type="uint32_t" info="Structure Sample0, member Member0 (included conditionally)"/>
<member name="Sample0_Member1" type="uint32_t" info="Structure Sample0, member Member1 (included conditionally)"/>
<!-- StructA_t inlined -->
<member name="Sample1_Member0" type="uint16_t" info="Structure Sample1, member Member0 (always included)"/>
<member name="Sample1_Member1" type="uint16_t" info="Structure Sample1, member Member1 (always included)"/>
<member name="Name" type="uint8_t" size="4" info="Array Name, actual size=CONFIG_NAME_SZ"/>
<member name="Var_1" type="uint32_t" info="Variable 1 (conditionally included)"/>
<member name="Var_2" type="uint32_t" info="Variable 2 (always present)"/>
</typedef>
<typedef name="StructOfVarSz" size="28" import="MyVarStruct" info="Size is updated">
<member name="Var_0" type="uint32_t" offset="0" info=""/>
<!-- StructA_t inlined -->
<member name="Sample0_Member0" type="uint32_t" offset="-1" info=""/>
<member name="Sample0_Member1" type="uint32_t" offset="-1" info=""/>
<!-- StructA_t inlined -->
<member name="Sample1_Member0" type="uint16_t" offset="4" info=""/>
<member name="Sample1_Member1" type="uint16_t" offset="8" info=""/>
<member name="Name" type="uint8_t" size="8" offset="12" info="Size is updated (if possible)"/>
<member name="Var_1" type="uint32_t" offset="-1" info=""/>
<member name="Var_2" type="uint32_t" offset="20" info=""/>
</typedef>
</component_viewer>