Skip to content

Commit ee6e780

Browse files
chore: Add F_ParseRawVarint32
1 parent c9f558e commit ee6e780

16 files changed

+680
-0
lines changed

.gitignore

+51
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,54 @@
1+
### TwinCAT3 ###
2+
# website: https://www.beckhoff.com/twincat3/
3+
4+
# TwinCAT PLC
5+
*.plcproj.bak
6+
*.plcproj.orig
7+
*.tpy
8+
*.tclrs
9+
*.library
10+
*.compiled-library
11+
*.compileinfo
12+
*.asm
13+
*.core
14+
*.noprjfile
15+
LineIDs.dbg
16+
LineIDs.dbg.bak
17+
18+
# TwinCAT C++ and shared types
19+
# ignoring the TMC file is only useful for plain PLC programming
20+
# as soon as shared data types (via tmc), C++ or in general TcCom-Module are used, the TMC file has to be part of the repository
21+
*.tmc
22+
*.tmcRefac
23+
24+
# TwinCAT project files
25+
*.tsproj.bak
26+
*.tsproj.b?k
27+
*.tsproj.orig
28+
*.xti.bak
29+
*.xti.bk?
30+
*.xti.orig
31+
*.xtv
32+
*.xtv.bak
33+
*.xtv.bk?
34+
35+
# Multiuser specific
36+
**/.TcGit/
37+
38+
# exclude not required folders
39+
**/_Boot/
40+
**/_CompileInfo/
41+
**/_Libraries/
42+
**/_ModuleInstall/
43+
**/_Deployment/
44+
**/_Repository/
45+
46+
# VS Shell project specific files and folders
47+
**/.vs/
48+
*.~u
49+
*.project.~u
50+
*.suo
51+
152
## Ignore Visual Studio temporary files, build results, and
253
## files generated by popular Visual Studio add-ons.
354
##

protobuf.sln

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# TcXaeShell Solution File, Format Version 11.00
4+
VisualStudioVersion = 17.12.35527.113
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{B1E792BE-AA5F-4E3C-8C82-674BF9C0715B}") = "protobuf", "src\protobuf\protobuf.tsproj", "{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}"
7+
EndProject
8+
Global
9+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
10+
Debug|TwinCAT OS (ARMV7-A) = Debug|TwinCAT OS (ARMV7-A)
11+
Debug|TwinCAT OS (ARMV7-M) = Debug|TwinCAT OS (ARMV7-M)
12+
Debug|TwinCAT OS (ARMV8-A) = Debug|TwinCAT OS (ARMV8-A)
13+
Debug|TwinCAT OS (x64) = Debug|TwinCAT OS (x64)
14+
Debug|TwinCAT RT (x64) = Debug|TwinCAT RT (x64)
15+
Debug|TwinCAT RT (x86) = Debug|TwinCAT RT (x86)
16+
Release|TwinCAT OS (ARMV7-A) = Release|TwinCAT OS (ARMV7-A)
17+
Release|TwinCAT OS (ARMV7-M) = Release|TwinCAT OS (ARMV7-M)
18+
Release|TwinCAT OS (ARMV8-A) = Release|TwinCAT OS (ARMV8-A)
19+
Release|TwinCAT OS (x64) = Release|TwinCAT OS (x64)
20+
Release|TwinCAT RT (x64) = Release|TwinCAT RT (x64)
21+
Release|TwinCAT RT (x86) = Release|TwinCAT RT (x86)
22+
EndGlobalSection
23+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
24+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT OS (ARMV7-A).ActiveCfg = Debug|TwinCAT OS (ARMV7-A)
25+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT OS (ARMV7-A).Build.0 = Debug|TwinCAT OS (ARMV7-A)
26+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT OS (ARMV7-M).ActiveCfg = Debug|TwinCAT OS (ARMV7-M)
27+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT OS (ARMV7-M).Build.0 = Debug|TwinCAT OS (ARMV7-M)
28+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT OS (ARMV8-A).ActiveCfg = Debug|TwinCAT OS (ARMV8-A)
29+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT OS (ARMV8-A).Build.0 = Debug|TwinCAT OS (ARMV8-A)
30+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT OS (x64).ActiveCfg = Debug|TwinCAT OS (x64)
31+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT OS (x64).Build.0 = Debug|TwinCAT OS (x64)
32+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
33+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
34+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
35+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
36+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT OS (ARMV7-A).ActiveCfg = Release|TwinCAT OS (ARMV7-A)
37+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT OS (ARMV7-A).Build.0 = Release|TwinCAT OS (ARMV7-A)
38+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT OS (ARMV7-M).ActiveCfg = Release|TwinCAT OS (ARMV7-M)
39+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT OS (ARMV7-M).Build.0 = Release|TwinCAT OS (ARMV7-M)
40+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT OS (ARMV8-A).ActiveCfg = Release|TwinCAT OS (ARMV8-A)
41+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT OS (ARMV8-A).Build.0 = Release|TwinCAT OS (ARMV8-A)
42+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT OS (x64).ActiveCfg = Release|TwinCAT OS (x64)
43+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT OS (x64).Build.0 = Release|TwinCAT OS (x64)
44+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
45+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
46+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
47+
{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
48+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT OS (ARMV7-A).ActiveCfg = Debug|TwinCAT OS (ARMV7-A)
49+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT OS (ARMV7-A).Build.0 = Debug|TwinCAT OS (ARMV7-A)
50+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT OS (ARMV7-M).ActiveCfg = Debug|TwinCAT OS (ARMV7-M)
51+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT OS (ARMV7-M).Build.0 = Debug|TwinCAT OS (ARMV7-M)
52+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT OS (ARMV8-A).ActiveCfg = Debug|TwinCAT OS (ARMV8-A)
53+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT OS (ARMV8-A).Build.0 = Debug|TwinCAT OS (ARMV8-A)
54+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT OS (x64).ActiveCfg = Debug|TwinCAT OS (x64)
55+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT OS (x64).Build.0 = Debug|TwinCAT OS (x64)
56+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64)
57+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64)
58+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86)
59+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86)
60+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT OS (ARMV7-A).ActiveCfg = Release|TwinCAT OS (ARMV7-A)
61+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT OS (ARMV7-A).Build.0 = Release|TwinCAT OS (ARMV7-A)
62+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT OS (ARMV7-M).ActiveCfg = Release|TwinCAT OS (ARMV7-M)
63+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT OS (ARMV7-M).Build.0 = Release|TwinCAT OS (ARMV7-M)
64+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT OS (ARMV8-A).ActiveCfg = Release|TwinCAT OS (ARMV8-A)
65+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT OS (ARMV8-A).Build.0 = Release|TwinCAT OS (ARMV8-A)
66+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT OS (x64).ActiveCfg = Release|TwinCAT OS (x64)
67+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT OS (x64).Build.0 = Release|TwinCAT OS (x64)
68+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64)
69+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64)
70+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86)
71+
{D5B790D6-E99D-45AD-83B4-72E8E9333F47}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86)
72+
EndGlobalSection
73+
GlobalSection(SolutionProperties) = preSolution
74+
HideSolutionNode = FALSE
75+
EndGlobalSection
76+
EndGlobal

src/protobuf/protobuf.tsproj

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<?xml version="1.0"?>
2+
<TcSmProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.11" TcProjectVariant="LIB">
3+
<Project ProjectGUID="{ACDC466E-3EC2-4D50-A4E9-DF92A9E0AC96}" Target64Bit="true" ShowHideConfigurations="#x3c7">
4+
<System>
5+
<Settings MaxCpus="2" NonWinCpus="1">
6+
<Cpu CpuId="1"/>
7+
<IoIdleTask Priority="4"/>
8+
</Settings>
9+
<Tasks>
10+
<Task Id="3" Priority="8" CycleTime="100000" AmsPort="350" AdtTasks="true">
11+
<Name>PlcTask</Name>
12+
<ProjectVariant PvUseDisable="true">
13+
<Variant>
14+
<Name>LIB</Name>
15+
<Disable>false</Disable>
16+
</Variant>
17+
<Variant>
18+
<Name>UNIT_TEST</Name>
19+
<Disable>true</Disable>
20+
</Variant>
21+
</ProjectVariant>
22+
</Task>
23+
<Task Id="4" Disabled="true" Priority="6" CycleTime="100000" AmsPort="351" AdtTasks="true">
24+
<Name>PlcTaskUnitTests</Name>
25+
<ProjectVariant PvUseDisable="true">
26+
<Variant>
27+
<Name>LIB</Name>
28+
<Disable>true</Disable>
29+
</Variant>
30+
<Variant>
31+
<Name>UNIT_TEST</Name>
32+
<Disable>false</Disable>
33+
</Variant>
34+
</ProjectVariant>
35+
</Task>
36+
</Tasks>
37+
</System>
38+
<Plc>
39+
<Project GUID="{D5B790D6-E99D-45AD-83B4-72E8E9333F47}" Name="protobuf" PrjFilePath="protobuf\protobuf.plcproj" TmcFilePath="protobuf\protobuf.tmc" EnableImplicitDefines="true" ReloadTmc="true" AmsPort="851" TargetArchiveSettings="#x0000" FileArchiveSettings="#x0000" BootProjectSettings="#x0000" SymbolicMapping="true">
40+
<ProjectVariant PvUseDefine="true">
41+
<Variant>
42+
<Name>LIB</Name>
43+
<Defines/>
44+
</Variant>
45+
<Variant>
46+
<Name>UNIT_TEST</Name>
47+
<Defines></Defines>
48+
</Variant>
49+
</ProjectVariant>
50+
<Instance Id="#x08502000" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" TmcHash="{8C624CBD-263D-1AB7-2E8A-ABC8CEC05F08}" TmcPath="protobuf\protobuf.tmc">
51+
<Name>protobuf Instance</Name>
52+
<CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID>
53+
<Contexts>
54+
<Context>
55+
<Id>0</Id>
56+
<Name>PlcTaskUnitTests</Name>
57+
<ManualConfig>
58+
<OTCID>#x02010040</OTCID>
59+
</ManualConfig>
60+
<Priority>6</Priority>
61+
<CycleTime>10000000</CycleTime>
62+
</Context>
63+
<Context>
64+
<Id>1</Id>
65+
<Name>PlcTask</Name>
66+
<ManualConfig>
67+
<OTCID>#x02010030</OTCID>
68+
</ManualConfig>
69+
<Priority>8</Priority>
70+
<CycleTime>10000000</CycleTime>
71+
</Context>
72+
</Contexts>
73+
<TaskPouOids>
74+
<TaskPouOid Prio="6" OTCID="#x08502002"/>
75+
<TaskPouOid Prio="8" OTCID="#x08502001"/>
76+
</TaskPouOids>
77+
</Instance>
78+
</Project>
79+
</Plc>
80+
<Variants SpecificLocalBootFolder="true">
81+
<Variant Save="true">
82+
<Name>LIB</Name>
83+
</Variant>
84+
<Variant>
85+
<Name>UNIT_TEST</Name>
86+
</Variant>
87+
</Variants>
88+
</Project>
89+
</TcSmProject>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<TcPlcObject Version="1.1.0.1">
3+
<DUT Name="ST_ParserInternalState" Id="{ab017140-f9c9-488e-a77f-7de05466f020}">
4+
<Declaration><![CDATA[TYPE ST_ParserInternalState :
5+
STRUCT
6+
nBufferSize : UDINT; // Size of the current buffer
7+
nBufferPos : UDINT; // The position within the current buffer (i.e. the next byte to read)
8+
END_STRUCT
9+
END_TYPE
10+
]]></Declaration>
11+
</DUT>
12+
</TcPlcObject>

src/protobuf/protobuf/POUs/MAIN.TcPOU

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<TcPlcObject Version="1.1.0.1">
3+
<POU Name="MAIN" Id="{f277e443-3cfc-4f4e-a5fe-9f10589c7ad1}">
4+
<Declaration><![CDATA[PROGRAM MAIN
5+
VAR
6+
END_VAR
7+
]]>
8+
</Declaration>
9+
<Implementation>
10+
<ST><![CDATA[]]></ST>
11+
</Implementation>
12+
</POU>
13+
</TcPlcObject>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<TcPlcObject Version="1.1.0.1">
3+
<POU Name="F_ParseRawVarint32" Id="{51c6c8a1-a14a-4443-b331-fa1787d7bb62}" SpecialFunc="None">
4+
<Declaration><![CDATA[FUNCTION F_ParseRawVarint32 : UDINT
5+
VAR_IN_OUT CONSTANT
6+
aBuffer : ARRAY [*] OF BYTE;
7+
END_VAR
8+
VAR_IN_OUT
9+
stState : ST_ParserInternalState;
10+
END_VAR
11+
VAR
12+
bTmpByte : BYTE;
13+
nResult : UDINT;
14+
nShift : UINT := 1;
15+
END_VAR]]></Declaration>
16+
<Implementation>
17+
<ST><![CDATA[
18+
IF UPPER_BOUND(aBuffer,1) > TO_DINT(stState.nBufferSize) THEN
19+
// TODO: Handle Errors
20+
RETURN;
21+
END_IF
22+
23+
bTmpByte := aBuffer[stState.nBufferPos];
24+
25+
IF bTmpByte < 16#80 THEN
26+
F_ParseRawVarint32 := TO_UDINT(bTmpByte);
27+
RETURN;
28+
END_IF
29+
30+
nResult := bTmpByte AND 16#7F;
31+
stState.nBufferPos := stState.nBufferPos + 1;
32+
33+
WHILE (bTmpByte > 16#7F) DO
34+
bTmpByte := aBuffer[stState.nBufferPos];
35+
nResult := nResult OR SHL((bTmpByte AND 16#7F), nShift * 7);
36+
nShift := nShift + 1;
37+
stState.nBufferPos := stState.nBufferPos + 1;
38+
END_WHILE
39+
40+
F_ParseRawVarint32 := nResult;]]></ST>
41+
</Implementation>
42+
</POU>
43+
</TcPlcObject>

src/protobuf/protobuf/PlcTask.TcTTO

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<TcPlcObject Version="1.1.0.1">
3+
<Task Name="PlcTask" Id="{b9ae151e-5c8a-4485-b83c-2cff172aca72}">
4+
<!--CycleTime in micro seconds.-->
5+
<CycleTime>10000</CycleTime>
6+
<Priority>8</Priority>
7+
<PouCall>
8+
<Name>MAIN</Name>
9+
</PouCall>
10+
<TaskFBGuid>{5611f403-7bcc-4183-8021-07de02a65956}</TaskFBGuid>
11+
<Fb_init>{57601bc7-e816-4960-9980-eebf3fcce588}</Fb_init>
12+
<Fb_exit>{03673e41-4a99-40b4-9010-8f571ea3f9ff}</Fb_exit>
13+
<CycleUpdate>{35b116ac-c354-4392-8a3a-eb7f81b4d8cf}</CycleUpdate>
14+
<PostCycleUpdate>{685db813-e229-4f44-908d-a773c4230286}</PostCycleUpdate>
15+
</Task>
16+
</TcPlcObject>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<TcPlcObject Version="1.1.0.1">
3+
<Task Name="PlcTaskUnitTests" Id="{0a6e8140-c8bd-4e84-94cb-340c35732e96}">
4+
<!--CycleTime in micro seconds.-->
5+
<CycleTime>10000</CycleTime>
6+
<Priority>6</Priority>
7+
<PouCall>
8+
<Name>PRG_UnitTests</Name>
9+
</PouCall>
10+
<TaskFBGuid>{6d19d7bc-89a6-4773-b545-7f980b1fb02f}</TaskFBGuid>
11+
<Fb_init>{a76c39e2-b067-4e1a-9cac-58fcd963c061}</Fb_init>
12+
<Fb_exit>{338debcb-ff36-4f03-932c-3022de208497}</Fb_exit>
13+
<CycleUpdate>{b269fb36-bf98-4b11-8f6b-ef595af3904e}</CycleUpdate>
14+
<PostCycleUpdate>{1466d01b-7c23-4a7e-bf22-462974d94a1f}</PostCycleUpdate>
15+
</Task>
16+
</TcPlcObject>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<TcPlcObject Version="1.1.0.1">
3+
<POU Name="F_GetCompany" Id="{f55eff76-56ef-4a09-b56a-b551dd477274}" SpecialFunc="None">
4+
<Declaration><![CDATA[// This function has been automatically generated from the project information.
5+
{attribute 'signature_flag' := '1073741824'}
6+
{attribute 'TcGenerated'}
7+
{attribute 'no-analysis'}
8+
FUNCTION F_GetCompany : WSTRING
9+
VAR_INPUT
10+
11+
END_VAR]]></Declaration>
12+
<Implementation>
13+
<ST><![CDATA[F_GetCompany := "TcHaxx";
14+
]]></ST>
15+
</Implementation>
16+
</POU>
17+
</TcPlcObject>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<TcPlcObject Version="1.1.0.1">
3+
<POU Name="F_GetTitle" Id="{949aaccc-af20-4dd4-8fe7-99b4090b12e0}" SpecialFunc="None">
4+
<Declaration><![CDATA[// This function has been automatically generated from the project information.
5+
{attribute 'signature_flag' := '1073741824'}
6+
{attribute 'TcGenerated'}
7+
{attribute 'no-analysis'}
8+
FUNCTION F_GetTitle : WSTRING
9+
VAR_INPUT
10+
11+
END_VAR]]></Declaration>
12+
<Implementation>
13+
<ST><![CDATA[F_GetTitle := "protobuf";
14+
]]></ST>
15+
</Implementation>
16+
</POU>
17+
</TcPlcObject>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<TcPlcObject Version="1.1.0.1">
3+
<POU Name="F_GetVersion" Id="{49871017-2be1-444c-98c8-fe695bb890f2}" SpecialFunc="None">
4+
<Declaration><![CDATA[// This function has been automatically generated from the project information.
5+
{attribute 'signature_flag' := '1073741824'}
6+
{attribute 'TcGenerated'}
7+
{attribute 'no-analysis'}
8+
FUNCTION F_GetVersion : ST_LibVersion
9+
VAR_INPUT
10+
11+
END_VAR]]></Declaration>
12+
<Implementation>
13+
<ST><![CDATA[F_GetVersion.iMajor := 0;
14+
F_GetVersion.iMinor := 0;
15+
F_GetVersion.iBuild := 0;
16+
F_GetVersion.iRevision := 0;
17+
F_GetVersion.sVersion := '0.0.0.0';
18+
F_GetVersion.nFlags := 0;
19+
]]></ST>
20+
</Implementation>
21+
</POU>
22+
</TcPlcObject>

0 commit comments

Comments
 (0)