diff --git a/.github/workflows/build-export-publish.yml b/.github/workflows/build-export-publish.yml
index d4eae47..631dfd0 100644
--- a/.github/workflows/build-export-publish.yml
+++ b/.github/workflows/build-export-publish.yml
@@ -86,23 +86,36 @@ jobs:
output: ${{ env.EXPORT_DIR }}
as-install: ${{ steps.find-as.outputs.install-path }}
- # Inject the release version into package.json and publish
+ # The export action writes to {output}/{library}/V{version}/. Capture
+ # that path so downstream steps can write package.json into it and run
+ # `npm publish` from there.
+ - name: Locate exported version directory
+ id: export-dir
+ shell: pwsh
+ run: |
+ $path = Get-ChildItem "$env:EXPORT_DIR/$env:LIBRARY" -Directory |
+ Select-Object -First 1 -ExpandProperty FullName
+ if (-not $path) {
+ Write-Error "No exported version directory found under $env:EXPORT_DIR/$env:LIBRARY"
+ exit 1
+ }
+ Write-Host "Exported version directory: $path"
+ "path=$path" | Out-File -Append -Encoding utf8 -FilePath $env:GITHUB_OUTPUT
+
+ - name: Generate package.json
+ uses: loupeteam/br-actions/prepare-lpm-package@v1
+ with:
+ library-dir: ${{ env.LIBRARY_DIR }}
+ output-dir: ${{ steps.export-dir.outputs.path }}
+ version: ${{ steps.version.outputs.version }}
+
- name: Publish to GitHub Packages
shell: pwsh
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
- # Locate the exported version directory (e.g. export/StringExt/V0.16.0/)
- $versionDir = Get-ChildItem "$env:EXPORT_DIR/$env:LIBRARY" -Directory |
- Select-Object -First 1 -ExpandProperty FullName
-
- # Read the package.json template from source, update version, write to export
- $pkg = Get-Content "$env:LIBRARY_DIR/package.json" | ConvertFrom-Json
- $pkg.version = "${{ steps.version.outputs.version }}"
- $pkg | ConvertTo-Json -Depth 10 | Set-Content (Join-Path $versionDir "package.json")
-
Write-Host "Publishing @loupeteam/$($env:LIBRARY.ToLower())@${{ steps.version.outputs.version }}"
- Push-Location $versionDir
+ Push-Location "${{ steps.export-dir.outputs.path }}"
npm publish
Pop-Location
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index bdaf528..e5eaa64 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -11,6 +11,23 @@ on:
options:
- Build
- Rebuild
+ # Build on PRs targeting any branch.
+ #
+ # SECURITY NOTE: this uses the standard `pull_request` trigger, which checks
+ # out the PR head but runs with read-only token and no access to secrets when
+ # the PR comes from a fork. Combined with the repo setting
+ # Settings → Actions → General →
+ # "Require approval for all outside collaborators"
+ # (or "Require approval for first-time contributors"), this means workflows
+ # from external contributors will not run on a self-hosted runner until a
+ # maintainer reviews the PR and clicks "Approve and run".
+ # Do NOT switch this to `pull_request_target` — that runs in the context of
+ # the base branch with full permissions and would expose the runner.
+ pull_request:
+ paths-ignore:
+ - '**/*.md'
+ - 'docs/**'
+ - 'LICENSE'
jobs:
build:
diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index a3bb079..0000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,11 +0,0 @@
-
-library "jenkinsLibrary@develop"
-
-buildPublishPipeline(
- slackChannel: "sandbox-github",
- asProjectRepo: "stringext",
- asProjectVersion: "main",
- asProjectPath: "example/AsProject",
- skipLpmInstall: true,
- packagesToPublish: ['src/Ar/stringext']
-)
diff --git a/example/As6Project/AsProject.apj b/example/As6Project/AsProject.apj
new file mode 100644
index 0000000..4658f96
--- /dev/null
+++ b/example/As6Project/AsProject.apj
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Logical/Global.typ b/example/As6Project/Logical/Global.typ
new file mode 100644
index 0000000..5dc40af
--- /dev/null
+++ b/example/As6Project/Logical/Global.typ
@@ -0,0 +1,4 @@
+
+TYPE
+
+END_TYPE
diff --git a/example/As6Project/Logical/Global.var b/example/As6Project/Logical/Global.var
new file mode 100644
index 0000000..3e8a206
--- /dev/null
+++ b/example/As6Project/Logical/Global.var
@@ -0,0 +1,8 @@
+
+VAR
+
+END_VAR
+
+VAR CONSTANT
+
+END_VAR
diff --git a/example/As6Project/Logical/Libraries/Loupe/Package.pkg b/example/As6Project/Logical/Libraries/Loupe/Package.pkg
new file mode 100644
index 0000000..21115c3
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/Loupe/Package.pkg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Logical/Libraries/Package.pkg b/example/As6Project/Logical/Libraries/Package.pkg
new file mode 100644
index 0000000..1668338
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/Package.pkg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.fun b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.fun
new file mode 100644
index 0000000..87ba979
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.fun
@@ -0,0 +1,80 @@
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsftoa : UINT (*converts a REAL value into a character string*)
+ VAR_INPUT
+ value :REAL; (*REAL (FLOAT) value to be converted into a character string*)
+ pString :UDINT; (*pointer to the destination character string*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsatof : REAL (*converts a character string into a REAL (FLOAT) value*)
+ VAR_INPUT
+ pString :UDINT; (*pointer to the character string to be converted*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsatod : LREAL (*converts a character string into a LREAL (DOUBLE) value*)
+ VAR_INPUT
+ pString :UDINT; (*pointer to the character string to be converted*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsitoa : UINT (*converts a DINT value into a character string*)
+ VAR_INPUT
+ value :DINT; (*numerical value to be converted into a string*)
+ pString :UDINT; (*pointer to the destination character string*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsatoi : DINT (*converts a character string into a DINT value*)
+ VAR_INPUT
+ pString :UDINT; (*pointer to the character string to be converted*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemset : UDINT (*fills the memory area with specific values*)
+ VAR_INPUT
+ pDest :UDINT; (*pointer to the destination memory*)
+ value :USINT; (*initialization value*)
+ length :UDINT; (*number of bytes to be initialized*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemcpy : UDINT (*copies the memory area*)
+ VAR_INPUT
+ pDest :UDINT; (*pointer to the destination memory*)
+ pSrc :UDINT; (*pointer to the data to be copied*)
+ length :UDINT; (*size of bytes to be copied*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemmove : UDINT (*copies the memory area (even if the memory areas overlap)*)
+ VAR_INPUT
+ pDest :UDINT; (*pointer to the destination memory*)
+ pSrc :UDINT; (*pointer to the data to be copied*)
+ length :UDINT; (*size of bytes to be copied*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemcmp : DINT (*compares memory areas*)
+ VAR_INPUT
+ pMem1 :UDINT; (*pointer to the memory area 1*)
+ pMem2 :UDINT; (*pointer to the memory area 2*)
+ length :UDINT; (*size of bytes to be checked*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrcat : UDINT (*attaches character strings to one another*)
+ VAR_INPUT
+ pDest :UDINT; (*pointer to the destination character string*)
+ pSrc :UDINT; (*pointer to the source character string*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrlen : UDINT (*provides the length of a character string*)
+ VAR_INPUT
+ pString :UDINT; (*pointer to the source character string*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrcpy : UDINT (*copies one character string into another*)
+ VAR_INPUT
+ pDest :UDINT; (*pointer to the destination character string*)
+ pSrc :UDINT; (*pointer to the source character string*)
+ END_VAR
+END_FUNCTION
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrcmp : DINT (*compares two character strings*)
+ VAR_INPUT
+ pString1 :UDINT; (*pointer to the first character string*)
+ pString2 :UDINT; (*pointer to the second character string*)
+ END_VAR
+END_FUNCTION
+
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.typ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.typ
new file mode 100644
index 0000000..1657f43
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.typ
@@ -0,0 +1,4 @@
+
+TYPE
+
+END_TYPE
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.var b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.var
new file mode 100644
index 0000000..30b816c
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/AsBrStr.var
@@ -0,0 +1,4 @@
+
+VAR CONSTANT
+
+END_VAR
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG3/AsBrStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG3/AsBrStr.h
new file mode 100644
index 0000000..3f4c4bc
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG3/AsBrStr.h
@@ -0,0 +1,39 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _ASBRSTR_
+#define _ASBRSTR_
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include
+
+#ifndef _IEC_CONST
+#define _IEC_CONST _WEAK const
+#endif
+
+
+
+
+/* Prototyping of functions and function blocks */
+unsigned short brsftoa(float value, unsigned long pString);
+float brsatof(unsigned long pString);
+unsigned short brsitoa(signed long value, unsigned long pString);
+signed long brsatoi(unsigned long pString);
+unsigned long brsmemset(unsigned long pDest, unsigned char value, unsigned long length);
+unsigned long brsmemcpy(unsigned long pDest, unsigned long pSrc, unsigned long length);
+unsigned long brsmemmove(unsigned long pDest, unsigned long pSrc, unsigned long length);
+signed long brsmemcmp(unsigned long pMem1, unsigned long pMem2, unsigned long length);
+unsigned long brsstrcat(unsigned long pDest, unsigned long pSrc);
+unsigned long brsstrlen(unsigned long pString);
+unsigned long brsstrcpy(unsigned long pDest, unsigned long pSrc);
+signed long brsstrcmp(unsigned long pString1, unsigned long pString2);
+
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _ASBRSTR_ */
+
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG4/AsBrStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG4/AsBrStr.h
new file mode 100644
index 0000000..daa7324
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SG4/AsBrStr.h
@@ -0,0 +1,39 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _ASBRSTR_
+#define _ASBRSTR_
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include
+
+#ifndef _BUR_PUBLIC
+#define _BUR_PUBLIC
+#endif
+
+
+
+/* Prototyping of functions and function blocks */
+_BUR_PUBLIC unsigned short brsftoa(float value, unsigned long pString);
+_BUR_PUBLIC float brsatof(unsigned long pString);
+_BUR_PUBLIC double brsatod(unsigned long pString);
+_BUR_PUBLIC unsigned short brsitoa(signed long value, unsigned long pString);
+_BUR_PUBLIC signed long brsatoi(unsigned long pString);
+_BUR_PUBLIC unsigned long brsmemset(unsigned long pDest, unsigned char value, unsigned long length);
+_BUR_PUBLIC unsigned long brsmemcpy(unsigned long pDest, unsigned long pSrc, unsigned long length);
+_BUR_PUBLIC unsigned long brsmemmove(unsigned long pDest, unsigned long pSrc, unsigned long length);
+_BUR_PUBLIC signed long brsmemcmp(unsigned long pMem1, unsigned long pMem2, unsigned long length);
+_BUR_PUBLIC unsigned long brsstrcat(unsigned long pDest, unsigned long pSrc);
+_BUR_PUBLIC unsigned long brsstrlen(unsigned long pString);
+_BUR_PUBLIC unsigned long brsstrcpy(unsigned long pDest, unsigned long pSrc);
+_BUR_PUBLIC signed long brsstrcmp(unsigned long pString1, unsigned long pString2);
+
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _ASBRSTR_ */
+
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/SGC/AsBrStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SGC/AsBrStr.h
new file mode 100644
index 0000000..3f4c4bc
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/SGC/AsBrStr.h
@@ -0,0 +1,39 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _ASBRSTR_
+#define _ASBRSTR_
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include
+
+#ifndef _IEC_CONST
+#define _IEC_CONST _WEAK const
+#endif
+
+
+
+
+/* Prototyping of functions and function blocks */
+unsigned short brsftoa(float value, unsigned long pString);
+float brsatof(unsigned long pString);
+unsigned short brsitoa(signed long value, unsigned long pString);
+signed long brsatoi(unsigned long pString);
+unsigned long brsmemset(unsigned long pDest, unsigned char value, unsigned long length);
+unsigned long brsmemcpy(unsigned long pDest, unsigned long pSrc, unsigned long length);
+unsigned long brsmemmove(unsigned long pDest, unsigned long pSrc, unsigned long length);
+signed long brsmemcmp(unsigned long pMem1, unsigned long pMem2, unsigned long length);
+unsigned long brsstrcat(unsigned long pDest, unsigned long pSrc);
+unsigned long brsstrlen(unsigned long pString);
+unsigned long brsstrcpy(unsigned long pDest, unsigned long pSrc);
+signed long brsstrcmp(unsigned long pString1, unsigned long pString2);
+
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _ASBRSTR_ */
+
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrStr/binary.lby b/example/As6Project/Logical/Libraries/_AS/AsBrStr/binary.lby
new file mode 100644
index 0000000..2090ed1
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrStr/binary.lby
@@ -0,0 +1,9 @@
+
+
+
+
+ AsBrStr.fun
+ AsBrStr.typ
+ AsBrStr.var
+
+
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.fun b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.fun
new file mode 100644
index 0000000..8de4cc5
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.fun
@@ -0,0 +1,71 @@
+
+{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsconv : UDINT (*converts one string to a different format*)
+ VAR_INPUT
+ pDestination :REFERENCE TO USINT; (*string to be appended to, given as a pointer*)
+ pSource :REFERENCE TO USINT; (*string to be appended, given as a pointer*)
+ level :USINT; (*brwU8toUC (= 0) if converting from U8 to UC; brwUCtoU8 (= 1) if converting from UC to U8*)
+ END_VAR
+END_FUNCTION
+{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsncpy : UDINT (*copies a maximum of n characters from the pSource WC string to the pDestination address*)
+ VAR_INPUT
+ pDestination :REFERENCE TO UINT; (*pointer to the target memory for the string*)
+ pSource :REFERENCE TO UINT; (*string to be copied, given as a pointer*)
+ n :UDINT; (*max. number of characters to be copied*)
+ END_VAR
+END_FUNCTION
+{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsncat : UDINT (*appends a maximum of n characters from the pSource string to the pDestination string*)
+ VAR_INPUT
+ pDestination :REFERENCE TO UINT; (*string to be appended to, given as a pointer*)
+ pSource :REFERENCE TO UINT; (*string to be appended, given as a pointer*)
+ n :UDINT; (*maximum number of characters to be added from pSource to pDestination*)
+ END_VAR
+END_FUNCTION
+{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcscat : UDINT (*connects two WC strings to each other (concatenation)*)
+ VAR_INPUT
+ pDestination :REFERENCE TO UINT; (*string to be appended to, given as a pointer*)
+ pSource :REFERENCE TO UINT; (*string to be appended, given as a pointer*)
+ END_VAR
+END_FUNCTION
+{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcscmp : DINT (*compares two 16-bit character strings*)
+ VAR_INPUT
+ pUcstr1 :REFERENCE TO UINT; (*first string, given as a pointer*)
+ pUcstr2 :REFERENCE TO UINT; (*second string, given as a pointer*)
+ END_VAR
+END_FUNCTION
+{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcslen : UDINT (*determines the length of a WC string*)
+ VAR_INPUT
+ pwcString :REFERENCE TO UINT; (*string whose length should be determined, given as a pointer*)
+ END_VAR
+END_FUNCTION
+{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsset : UDINT (*appends the pSource string to the pDestination string*)
+ VAR_INPUT
+ pDestination :REFERENCE TO UINT; (*string being written, given as a pointer*)
+ len :UDINT; (*number of characters to be written*)
+ symbol :UINT; (*character used to overwrite*)
+ END_VAR
+END_FUNCTION
+{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsncmp : DINT (*compares two 16-bit strings*)
+ VAR_INPUT
+ pwcString1 :REFERENCE TO UINT; (*first string given as a pointer*)
+ pwcString2 :REFERENCE TO UINT; (*second string given as a pointer*)
+ n :UDINT; (*max. number of characters from pUcstr1 to be compared with pUcstr2*)
+ END_VAR
+END_FUNCTION
+{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcscpy : UDINT (*copies a WC string*)
+ VAR_INPUT
+ pDestination :REFERENCE TO UINT; (*pointer to the target memory for the string*)
+ pSource :REFERENCE TO UINT; (*string to be copied, given as a pointer*)
+ END_VAR
+END_FUNCTION
+{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcsrchr : UDINT (*searches for the last occurrence of a certain character in a WC string*)
+ VAR_INPUT
+ pDestination :REFERENCE TO UINT; (*character string being searched, given as a pointer*)
+ symbol :UINT; (*character being looked for*)
+ END_VAR
+END_FUNCTION
+{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION brwcschr : UDINT (*searches for the first occurrence of a certain character*)
+ VAR_INPUT
+ pDestination :REFERENCE TO UINT; (*string given as a pointer*)
+ symbol :UINT; (*character being looked for*)
+ END_VAR
+END_FUNCTION
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.typ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.typ
new file mode 100644
index 0000000..1657f43
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.typ
@@ -0,0 +1,4 @@
+
+TYPE
+
+END_TYPE
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.var b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.var
new file mode 100644
index 0000000..7af0668
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/AsBrWStr.var
@@ -0,0 +1,5 @@
+
+VAR CONSTANT
+ brwUCtoU8 : USINT := 1; (*instructs the wcsconv function to convert a WC character string into an ANSI string*)
+ brwU8toUC : USINT := 0; (*instructs the wcsconv function to convert an ANSI character string into a WC string*)
+END_VAR
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG3/AsBrWStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG3/AsBrWStr.h
new file mode 100644
index 0000000..456b6dd
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG3/AsBrWStr.h
@@ -0,0 +1,50 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _ASBRWSTR_
+#define _ASBRWSTR_
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include
+
+#ifndef _IEC_CONST
+#define _IEC_CONST _WEAK const
+#endif
+
+/* Constants */
+#ifdef _REPLACE_CONST
+ #define brwUCtoU8 1U
+ #define brwU8toUC 0U
+#else
+ _IEC_CONST unsigned char brwUCtoU8 = 1U;
+ _IEC_CONST unsigned char brwU8toUC = 0U;
+#endif
+
+
+
+
+
+
+
+/* Prototyping of functions and function blocks */
+unsigned long brwcsconv(unsigned char* pDestination, unsigned char* pSource, unsigned char level);
+unsigned long brwcsncpy(unsigned short* pDestination, unsigned short* pSource, unsigned long n);
+unsigned long brwcsncat(unsigned short* pDestination, unsigned short* pSource, unsigned long n);
+unsigned long brwcscat(unsigned short* pDestination, unsigned short* pSource);
+signed long brwcscmp(unsigned short* pUcstr1, unsigned short* pUcstr2);
+unsigned long brwcslen(unsigned short* pwcString);
+unsigned long brwcsset(unsigned short* pDestination, unsigned long len, unsigned short symbol);
+signed long brwcsncmp(unsigned short* pwcString1, unsigned short* pwcString2, unsigned long n);
+unsigned long brwcscpy(unsigned short* pDestination, unsigned short* pSource);
+unsigned long brwcsrchr(unsigned short* pDestination, unsigned short symbol);
+unsigned long brwcschr(unsigned short* pDestination, unsigned short symbol);
+
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _ASBRWSTR_ */
+
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h
new file mode 100644
index 0000000..c05a10d
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SG4/AsBrWStr.h
@@ -0,0 +1,49 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _ASBRWSTR_
+#define _ASBRWSTR_
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include
+
+#ifndef _BUR_PUBLIC
+#define _BUR_PUBLIC
+#endif
+
+
+
+/* Prototyping of functions and function blocks */
+_BUR_PUBLIC unsigned long brwcsconv(unsigned char* pDestination, unsigned char* pSource, unsigned char level);
+_BUR_PUBLIC unsigned long brwcsncpy(unsigned short* pDestination, unsigned short* pSource, unsigned long n);
+_BUR_PUBLIC unsigned long brwcsncat(unsigned short* pDestination, unsigned short* pSource, unsigned long n);
+_BUR_PUBLIC unsigned long brwcscat(unsigned short* pDestination, unsigned short* pSource);
+_BUR_PUBLIC signed long brwcscmp(unsigned short* pUcstr1, unsigned short* pUcstr2);
+_BUR_PUBLIC unsigned long brwcslen(unsigned short* pwcString);
+_BUR_PUBLIC unsigned long brwcsset(unsigned short* pDestination, unsigned long len, unsigned short symbol);
+_BUR_PUBLIC signed long brwcsncmp(unsigned short* pwcString1, unsigned short* pwcString2, unsigned long n);
+_BUR_PUBLIC unsigned long brwcscpy(unsigned short* pDestination, unsigned short* pSource);
+_BUR_PUBLIC unsigned long brwcsrchr(unsigned short* pDestination, unsigned short symbol);
+_BUR_PUBLIC unsigned long brwcschr(unsigned short* pDestination, unsigned short symbol);
+
+
+/* Constants */
+#ifdef _REPLACE_CONST
+ #define brwU8toUC 0U
+ #define brwUCtoU8 1U
+#else
+ _GLOBAL_CONST unsigned char brwU8toUC;
+ _GLOBAL_CONST unsigned char brwUCtoU8;
+#endif
+
+
+
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _ASBRWSTR_ */
+
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SGC/AsBrWStr.h b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SGC/AsBrWStr.h
new file mode 100644
index 0000000..456b6dd
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/SGC/AsBrWStr.h
@@ -0,0 +1,50 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _ASBRWSTR_
+#define _ASBRWSTR_
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include
+
+#ifndef _IEC_CONST
+#define _IEC_CONST _WEAK const
+#endif
+
+/* Constants */
+#ifdef _REPLACE_CONST
+ #define brwUCtoU8 1U
+ #define brwU8toUC 0U
+#else
+ _IEC_CONST unsigned char brwUCtoU8 = 1U;
+ _IEC_CONST unsigned char brwU8toUC = 0U;
+#endif
+
+
+
+
+
+
+
+/* Prototyping of functions and function blocks */
+unsigned long brwcsconv(unsigned char* pDestination, unsigned char* pSource, unsigned char level);
+unsigned long brwcsncpy(unsigned short* pDestination, unsigned short* pSource, unsigned long n);
+unsigned long brwcsncat(unsigned short* pDestination, unsigned short* pSource, unsigned long n);
+unsigned long brwcscat(unsigned short* pDestination, unsigned short* pSource);
+signed long brwcscmp(unsigned short* pUcstr1, unsigned short* pUcstr2);
+unsigned long brwcslen(unsigned short* pwcString);
+unsigned long brwcsset(unsigned short* pDestination, unsigned long len, unsigned short symbol);
+signed long brwcsncmp(unsigned short* pwcString1, unsigned short* pwcString2, unsigned long n);
+unsigned long brwcscpy(unsigned short* pDestination, unsigned short* pSource);
+unsigned long brwcsrchr(unsigned short* pDestination, unsigned short symbol);
+unsigned long brwcschr(unsigned short* pDestination, unsigned short symbol);
+
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _ASBRWSTR_ */
+
diff --git a/example/As6Project/Logical/Libraries/_AS/AsBrWStr/binary.lby b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/binary.lby
new file mode 100644
index 0000000..de98f4d
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/AsBrWStr/binary.lby
@@ -0,0 +1,9 @@
+
+
+
+
+ AsBrWStr.fun
+ AsBrWStr.typ
+ AsBrWStr.var
+
+
diff --git a/example/As6Project/Logical/Libraries/_AS/Package.pkg b/example/As6Project/Logical/Libraries/_AS/Package.pkg
new file mode 100644
index 0000000..4f748b7
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/Package.pkg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Logical/Libraries/_AS/astime/SG3/astime.h b/example/As6Project/Logical/Libraries/_AS/astime/SG3/astime.h
new file mode 100644
index 0000000..b0c328a
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/astime/SG3/astime.h
@@ -0,0 +1,130 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _ASTIME_
+#define _ASTIME_
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include
+
+#include
+
+#ifndef _IEC_CONST
+#define _IEC_CONST _WEAK const
+#endif
+
+/* Constants */
+#ifdef _REPLACE_CONST
+ #define timERR_AR 33213U
+ #define timERR_INVALID_DTSTRUCTURE 33212U
+ #define timERR_INVALID_LEN 33211U
+ #define timERR_INVALID_PARAMETER 33210U
+ #define timTIME_SERVER 2U
+ #define timREAL_TIME_CLOCK 1U
+ #define timNO_DST 3U
+ #define timDAYLIGHT_SAVING_TIME 2U
+ #define timNORMAL_TIME 1U
+ #define TIME_MAX 2073600000
+ #define TIME_MIN (-2073600000)
+ #define DATE_AND_TIME_MAX 4102444799U
+ #define timEXSETTIME_NO_OPTION 0U
+ #define timEXSETTIME_NO_LOGENTRY 1U
+#else
+ _IEC_CONST unsigned short timERR_AR = 33213U;
+ _IEC_CONST unsigned short timERR_INVALID_DTSTRUCTURE = 33212U;
+ _IEC_CONST unsigned short timERR_INVALID_LEN = 33211U;
+ _IEC_CONST unsigned short timERR_INVALID_PARAMETER = 33210U;
+ _IEC_CONST unsigned char timTIME_SERVER = 2U;
+ _IEC_CONST unsigned char timREAL_TIME_CLOCK = 1U;
+ _IEC_CONST unsigned char timNO_DST = 3U;
+ _IEC_CONST unsigned char timDAYLIGHT_SAVING_TIME = 2U;
+ _IEC_CONST unsigned char timNORMAL_TIME = 1U;
+ _IEC_CONST signed long TIME_MAX = 2073600000;
+ _IEC_CONST signed long TIME_MIN = -2073600000;
+ _IEC_CONST unsigned long DATE_AND_TIME_MAX = 4102444799U;
+ _IEC_CONST unsigned char timEXSETTIME_NO_OPTION = 0U;
+ _IEC_CONST unsigned char timEXSETTIME_NO_LOGENTRY = 1U;
+#endif
+
+
+
+
+/* Datatypes and datatypes of function blocks */
+typedef struct TIMEStructure
+{ signed char day;
+ unsigned char hour;
+ unsigned char minute;
+ unsigned char second;
+ unsigned short millisec;
+ unsigned short microsec;
+} TIMEStructure;
+
+typedef struct DTStructure
+{ unsigned short year;
+ unsigned char month;
+ unsigned char day;
+ unsigned char wday;
+ unsigned char hour;
+ unsigned char minute;
+ unsigned char second;
+ unsigned short millisec;
+ unsigned short microsec;
+} DTStructure;
+
+typedef struct DTExSetTime
+{
+ /* VAR_INPUT (analog) */
+ plcdt DT1;
+ unsigned char Option;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTExSetTime_typ;
+
+typedef struct DTSetTime
+{
+ /* VAR_INPUT (analog) */
+ plcdt DT1;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTSetTime_typ;
+
+typedef struct DTGetTime
+{
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ plcdt DT1;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTGetTime_typ;
+
+
+
+/* Prototyping of functions and function blocks */
+void DTExSetTime(struct DTExSetTime* inst);
+void DTSetTime(struct DTSetTime* inst);
+void DTGetTime(struct DTGetTime* inst);
+unsigned long ascTIMEStructure(unsigned long pTIMEStructure, unsigned long pStr, unsigned long len);
+unsigned long ascDTStructure(unsigned long pDTStructure, unsigned long pStr, unsigned long len);
+unsigned long ascTIME(plctime TIME1, unsigned long pStr, unsigned long len);
+unsigned long ascDT(plcdt DT1, unsigned long pStr, unsigned long len);
+plctime TIMEStructure_TO_TIME(unsigned long pTIMEStructure);
+unsigned long TIME_TO_TIMEStructure(plctime TIME1, unsigned long pTIMEStructure);
+plcdt DTStructure_TO_DT(unsigned long pDTStructure);
+unsigned long DT_TO_DTStructure(plcdt DT1, unsigned long pDTStructure);
+unsigned long DiffT(plctime TIME2, plctime TIME1);
+unsigned long DiffDT(plcdt DT2, plcdt DT1);
+
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _ASTIME_ */
+
+
diff --git a/example/As6Project/Logical/Libraries/_AS/astime/SG4/astime.h b/example/As6Project/Logical/Libraries/_AS/astime/SG4/astime.h
new file mode 100644
index 0000000..ffa4415
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/astime/SG4/astime.h
@@ -0,0 +1,362 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _ASTIME_
+#define _ASTIME_
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include
+
+#include
+
+#ifndef _BUR_PUBLIC
+#define _BUR_PUBLIC
+#endif
+/* Datatypes and datatypes of function blocks */
+typedef struct TIMEStructure
+{ signed char day;
+ unsigned char hour;
+ unsigned char minute;
+ unsigned char second;
+ unsigned short millisec;
+ unsigned short microsec;
+} TIMEStructure;
+
+typedef struct DTStructure
+{ unsigned short year;
+ unsigned char month;
+ unsigned char day;
+ unsigned char wday;
+ unsigned char hour;
+ unsigned char minute;
+ unsigned char second;
+ unsigned short millisec;
+ unsigned short microsec;
+} DTStructure;
+
+typedef struct DTExSetTime
+{
+ /* VAR_INPUT (analog) */
+ plcdt DT1;
+ unsigned char Option;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTExSetTime_typ;
+
+typedef struct DTSetTime
+{
+ /* VAR_INPUT (analog) */
+ plcdt DT1;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTSetTime_typ;
+
+typedef struct DTGetTime
+{
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ plcdt DT1;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTGetTime_typ;
+
+typedef struct UtcDTGetTime
+{
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ plcdt DT1;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} UtcDTGetTime_typ;
+
+typedef struct UtcDTSetTime
+{
+ /* VAR_INPUT (analog) */
+ plcdt DT1;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR (analog) */
+ unsigned short i_state;
+ unsigned short i_result;
+ unsigned long i_tmp;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} UtcDTSetTime_typ;
+
+typedef struct UtcDTExSetTime
+{
+ /* VAR_INPUT (analog) */
+ plcdt DT1;
+ unsigned char Option;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR (analog) */
+ unsigned short i_state;
+ unsigned short i_result;
+ unsigned long i_tmp;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} UtcDTExSetTime_typ;
+
+typedef struct DTStructureGetTime
+{
+ /* VAR_INPUT (analog) */
+ unsigned long pDTStructure;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTStructureGetTime_typ;
+
+typedef struct DTStructureSetTime
+{
+ /* VAR_INPUT (analog) */
+ unsigned long pDTStructure;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTStructureSetTime_typ;
+
+typedef struct DTStructureExSetTime
+{
+ /* VAR_INPUT (analog) */
+ unsigned long pDTStructure;
+ unsigned char Option;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTStructureExSetTime_typ;
+
+typedef struct UtcDTStructureGetTime
+{
+ /* VAR_INPUT (analog) */
+ unsigned long pDTStructure;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} UtcDTStructureGetTime_typ;
+
+typedef struct UtcDTStructureSetTime
+{
+ /* VAR_INPUT (analog) */
+ unsigned long pDTStructure;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR (analog) */
+ unsigned short i_state;
+ unsigned short i_result;
+ unsigned long i_tmp;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} UtcDTStructureSetTime_typ;
+
+typedef struct UtcDTStructureExSetTime
+{
+ /* VAR_INPUT (analog) */
+ unsigned long pDTStructure;
+ unsigned char Option;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR (analog) */
+ unsigned short i_state;
+ unsigned short i_result;
+ unsigned long i_tmp;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} UtcDTStructureExSetTime_typ;
+
+typedef struct UtcDT_TO_LocalDTStructure
+{
+ /* VAR_INPUT (analog) */
+ plcdt DT1;
+ unsigned long pDTStructure;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR (analog) */
+ unsigned short i_state;
+ unsigned short i_result;
+ unsigned long i_tmp;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} UtcDT_TO_LocalDTStructure_typ;
+
+typedef struct LocalDT_TO_UtcDTStructure
+{
+ /* VAR_INPUT (analog) */
+ plcdt DT1;
+ unsigned long pDTStructure;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR (analog) */
+ unsigned short i_state;
+ unsigned short i_result;
+ unsigned long i_tmp;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} LocalDT_TO_UtcDTStructure_typ;
+
+typedef struct UtcDTStructure_TO_LocalDT
+{
+ /* VAR_INPUT (analog) */
+ unsigned long pDTStructure;
+ /* VAR_OUTPUT (analog) */
+ plcdt DT1;
+ unsigned short status;
+ /* VAR (analog) */
+ unsigned short i_state;
+ unsigned short i_result;
+ unsigned long i_tmp;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} UtcDTStructure_TO_LocalDT_typ;
+
+typedef struct LocalDTStructure_TO_UtcDT
+{
+ /* VAR_INPUT (analog) */
+ unsigned long pDTStructure;
+ /* VAR_OUTPUT (analog) */
+ plcdt DT1;
+ unsigned short status;
+ /* VAR (analog) */
+ unsigned short i_state;
+ unsigned short i_result;
+ unsigned long i_tmp;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} LocalDTStructure_TO_UtcDT_typ;
+
+typedef struct TimeDeviceGetInfo
+{
+ /* VAR_INPUT (analog) */
+ unsigned long pServer;
+ unsigned char len;
+ /* VAR_OUTPUT (analog) */
+ unsigned char timeDevice;
+ float avgDeviation;
+ unsigned short status;
+ /* VAR (analog) */
+ unsigned short i_state;
+ unsigned short i_result;
+ unsigned long i_tmp;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} TimeDeviceGetInfo_typ;
+
+typedef struct DstGetInfo
+{
+ /* VAR_INPUT (analog) */
+ unsigned long pDTStructure;
+ /* VAR_OUTPUT (analog) */
+ unsigned char dstState;
+ unsigned short status;
+ /* VAR (analog) */
+ unsigned short i_state;
+ unsigned short i_result;
+ unsigned long i_tmp;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DstGetInfo_typ;
+
+typedef struct DstGetInfoDT
+{
+ /* VAR_INPUT (analog) */
+ plcdt DT1;
+ /* VAR_OUTPUT (analog) */
+ unsigned char dstState;
+ unsigned short status;
+ /* VAR (analog) */
+ unsigned short i_state;
+ unsigned short i_result;
+ unsigned long i_tmp;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DstGetInfoDT_typ;
+
+
+
+/* Prototyping of functions and function blocks */
+_BUR_PUBLIC void DTExSetTime(struct DTExSetTime* inst);
+_BUR_PUBLIC void DTSetTime(struct DTSetTime* inst);
+_BUR_PUBLIC void DTGetTime(struct DTGetTime* inst);
+_BUR_PUBLIC void UtcDTGetTime(struct UtcDTGetTime* inst);
+_BUR_PUBLIC void UtcDTSetTime(struct UtcDTSetTime* inst);
+_BUR_PUBLIC void UtcDTExSetTime(struct UtcDTExSetTime* inst);
+_BUR_PUBLIC void DTStructureGetTime(struct DTStructureGetTime* inst);
+_BUR_PUBLIC void DTStructureSetTime(struct DTStructureSetTime* inst);
+_BUR_PUBLIC void DTStructureExSetTime(struct DTStructureExSetTime* inst);
+_BUR_PUBLIC void UtcDTStructureGetTime(struct UtcDTStructureGetTime* inst);
+_BUR_PUBLIC void UtcDTStructureSetTime(struct UtcDTStructureSetTime* inst);
+_BUR_PUBLIC void UtcDTStructureExSetTime(struct UtcDTStructureExSetTime* inst);
+_BUR_PUBLIC void UtcDT_TO_LocalDTStructure(struct UtcDT_TO_LocalDTStructure* inst);
+_BUR_PUBLIC void LocalDT_TO_UtcDTStructure(struct LocalDT_TO_UtcDTStructure* inst);
+_BUR_PUBLIC void UtcDTStructure_TO_LocalDT(struct UtcDTStructure_TO_LocalDT* inst);
+_BUR_PUBLIC void LocalDTStructure_TO_UtcDT(struct LocalDTStructure_TO_UtcDT* inst);
+_BUR_PUBLIC void TimeDeviceGetInfo(struct TimeDeviceGetInfo* inst);
+_BUR_PUBLIC void DstGetInfo(struct DstGetInfo* inst);
+_BUR_PUBLIC void DstGetInfoDT(struct DstGetInfoDT* inst);
+_BUR_PUBLIC plctime clock_ms(void);
+_BUR_PUBLIC unsigned long ascTIMEStructure(unsigned long pTIMEStructure, unsigned long pStr, unsigned long len);
+_BUR_PUBLIC unsigned long ascDTStructure(unsigned long pDTStructure, unsigned long pStr, unsigned long len);
+_BUR_PUBLIC unsigned long ascTIME(plctime TIME1, unsigned long pStr, unsigned long len);
+_BUR_PUBLIC unsigned long ascDT(plcdt DT1, unsigned long pStr, unsigned long len);
+_BUR_PUBLIC plctime TIMEStructure_TO_TIME(unsigned long pTIMEStructure);
+_BUR_PUBLIC unsigned long TIME_TO_TIMEStructure(plctime TIME1, unsigned long pTIMEStructure);
+_BUR_PUBLIC plcdt DTStructure_TO_DT(unsigned long pDTStructure);
+_BUR_PUBLIC unsigned long DT_TO_DTStructure(plcdt DT1, unsigned long pDTStructure);
+_BUR_PUBLIC unsigned long DiffT(plctime TIME2, plctime TIME1);
+_BUR_PUBLIC unsigned long DiffDT(plcdt DT2, plcdt DT1);
+
+
+/* Constants */
+#ifdef _REPLACE_CONST
+ #define timERR_AR 33213U
+ #define timERR_INVALID_DTSTRUCTURE 33212U
+ #define timERR_INVALID_LEN 33211U
+ #define timERR_INVALID_PARAMETER 33210U
+ #define timREDUND_INTERFACE 3U
+ #define timTIME_SERVER 2U
+ #define timREAL_TIME_CLOCK 1U
+ #define timNO_DST 3U
+ #define timDAYLIGHT_SAVING_TIME 2U
+ #define timNORMAL_TIME 1U
+ #define TIME_MAX 2073600000
+ #define TIME_MIN (-2073600000)
+ #define DATE_AND_TIME_MAX 4102444799U
+ #define timEXSETTIME_NO_OPTION 0U
+ #define timEXSETTIME_NO_LOGENTRY 1U
+#else
+ _GLOBAL_CONST unsigned short timERR_AR;
+ _GLOBAL_CONST unsigned short timERR_INVALID_DTSTRUCTURE;
+ _GLOBAL_CONST unsigned short timERR_INVALID_LEN;
+ _GLOBAL_CONST unsigned short timERR_INVALID_PARAMETER;
+ _GLOBAL_CONST unsigned char timREDUND_INTERFACE;
+ _GLOBAL_CONST unsigned char timTIME_SERVER;
+ _GLOBAL_CONST unsigned char timREAL_TIME_CLOCK;
+ _GLOBAL_CONST unsigned char timNO_DST;
+ _GLOBAL_CONST unsigned char timDAYLIGHT_SAVING_TIME;
+ _GLOBAL_CONST unsigned char timNORMAL_TIME;
+ _GLOBAL_CONST signed long TIME_MAX;
+ _GLOBAL_CONST signed long TIME_MIN;
+ _GLOBAL_CONST unsigned long DATE_AND_TIME_MAX;
+ _GLOBAL_CONST unsigned char timEXSETTIME_NO_OPTION;
+ _GLOBAL_CONST unsigned char timEXSETTIME_NO_LOGENTRY;
+#endif
+
+
+
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _ASTIME_ */
+
diff --git a/example/As6Project/Logical/Libraries/_AS/astime/SGC/astime.h b/example/As6Project/Logical/Libraries/_AS/astime/SGC/astime.h
new file mode 100644
index 0000000..b0c328a
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/astime/SGC/astime.h
@@ -0,0 +1,130 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _ASTIME_
+#define _ASTIME_
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include
+
+#include
+
+#ifndef _IEC_CONST
+#define _IEC_CONST _WEAK const
+#endif
+
+/* Constants */
+#ifdef _REPLACE_CONST
+ #define timERR_AR 33213U
+ #define timERR_INVALID_DTSTRUCTURE 33212U
+ #define timERR_INVALID_LEN 33211U
+ #define timERR_INVALID_PARAMETER 33210U
+ #define timTIME_SERVER 2U
+ #define timREAL_TIME_CLOCK 1U
+ #define timNO_DST 3U
+ #define timDAYLIGHT_SAVING_TIME 2U
+ #define timNORMAL_TIME 1U
+ #define TIME_MAX 2073600000
+ #define TIME_MIN (-2073600000)
+ #define DATE_AND_TIME_MAX 4102444799U
+ #define timEXSETTIME_NO_OPTION 0U
+ #define timEXSETTIME_NO_LOGENTRY 1U
+#else
+ _IEC_CONST unsigned short timERR_AR = 33213U;
+ _IEC_CONST unsigned short timERR_INVALID_DTSTRUCTURE = 33212U;
+ _IEC_CONST unsigned short timERR_INVALID_LEN = 33211U;
+ _IEC_CONST unsigned short timERR_INVALID_PARAMETER = 33210U;
+ _IEC_CONST unsigned char timTIME_SERVER = 2U;
+ _IEC_CONST unsigned char timREAL_TIME_CLOCK = 1U;
+ _IEC_CONST unsigned char timNO_DST = 3U;
+ _IEC_CONST unsigned char timDAYLIGHT_SAVING_TIME = 2U;
+ _IEC_CONST unsigned char timNORMAL_TIME = 1U;
+ _IEC_CONST signed long TIME_MAX = 2073600000;
+ _IEC_CONST signed long TIME_MIN = -2073600000;
+ _IEC_CONST unsigned long DATE_AND_TIME_MAX = 4102444799U;
+ _IEC_CONST unsigned char timEXSETTIME_NO_OPTION = 0U;
+ _IEC_CONST unsigned char timEXSETTIME_NO_LOGENTRY = 1U;
+#endif
+
+
+
+
+/* Datatypes and datatypes of function blocks */
+typedef struct TIMEStructure
+{ signed char day;
+ unsigned char hour;
+ unsigned char minute;
+ unsigned char second;
+ unsigned short millisec;
+ unsigned short microsec;
+} TIMEStructure;
+
+typedef struct DTStructure
+{ unsigned short year;
+ unsigned char month;
+ unsigned char day;
+ unsigned char wday;
+ unsigned char hour;
+ unsigned char minute;
+ unsigned char second;
+ unsigned short millisec;
+ unsigned short microsec;
+} DTStructure;
+
+typedef struct DTExSetTime
+{
+ /* VAR_INPUT (analog) */
+ plcdt DT1;
+ unsigned char Option;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTExSetTime_typ;
+
+typedef struct DTSetTime
+{
+ /* VAR_INPUT (analog) */
+ plcdt DT1;
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTSetTime_typ;
+
+typedef struct DTGetTime
+{
+ /* VAR_OUTPUT (analog) */
+ unsigned short status;
+ plcdt DT1;
+ /* VAR_INPUT (digital) */
+ plcbit enable;
+} DTGetTime_typ;
+
+
+
+/* Prototyping of functions and function blocks */
+void DTExSetTime(struct DTExSetTime* inst);
+void DTSetTime(struct DTSetTime* inst);
+void DTGetTime(struct DTGetTime* inst);
+unsigned long ascTIMEStructure(unsigned long pTIMEStructure, unsigned long pStr, unsigned long len);
+unsigned long ascDTStructure(unsigned long pDTStructure, unsigned long pStr, unsigned long len);
+unsigned long ascTIME(plctime TIME1, unsigned long pStr, unsigned long len);
+unsigned long ascDT(plcdt DT1, unsigned long pStr, unsigned long len);
+plctime TIMEStructure_TO_TIME(unsigned long pTIMEStructure);
+unsigned long TIME_TO_TIMEStructure(plctime TIME1, unsigned long pTIMEStructure);
+plcdt DTStructure_TO_DT(unsigned long pDTStructure);
+unsigned long DT_TO_DTStructure(plcdt DT1, unsigned long pDTStructure);
+unsigned long DiffT(plctime TIME2, plctime TIME1);
+unsigned long DiffDT(plcdt DT2, plcdt DT1);
+
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _ASTIME_ */
+
+
diff --git a/example/As6Project/Logical/Libraries/_AS/astime/astime.fun b/example/As6Project/Logical/Libraries/_AS/astime/astime.fun
new file mode 100644
index 0000000..23a6cf6
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/astime/astime.fun
@@ -0,0 +1,333 @@
+
+{REDUND_OK} FUNCTION_BLOCK DTExSetTime (*sets the current time using the DATE_AND_TIME data type*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ DT1 :DATE_AND_TIME; (*date and time to be written*)
+ Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_OK} FUNCTION_BLOCK DTSetTime (*sets current time in DATE_AND_TIME data type*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ DT1 :DATE_AND_TIME; (*date and time to be written*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_OK} FUNCTION_BLOCK DTGetTime (*reads the current time in the DATE_AND_TIME data type*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
+ DT1 :DATE_AND_TIME; (*date and time read*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_OK} FUNCTION clock_ms : TIME (*provides a continuous millisecond counter in the TIME data type*)
+END_FUNCTION
+
+{REDUND_OK} FUNCTION_BLOCK UtcDTGetTime (*reads the current UTC-time in the DATE_AND_TIME data type*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
+ DT1 :DATE_AND_TIME; (*UTC date and time read*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTSetTime (*sets current UTC-time in DATE_AND_TIME data type*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ DT1 :DATE_AND_TIME; (*UTC date and time to be written*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
+ END_VAR
+ VAR
+ i_state : UINT; (*internal variable*)
+ i_result : UINT; (*internal variable*)
+ i_tmp : UDINT; (*internal variable*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTExSetTime (*sets current UTC-time in DATE_AND_TIME data type*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ DT1 :DATE_AND_TIME; (*UTC date and time to be written*)
+ Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
+ END_VAR
+ VAR
+ i_state : UINT; (*internal variable*)
+ i_result : UINT; (*internal variable*)
+ i_tmp : UDINT; (*internal variable*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DTStructureGetTime (*reads the current time in the calendar structure*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DTStructureSetTime (*sets current time in calendar structure*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DTStructureExSetTime (*sets current time in calendar structure*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTStructureGetTime (*reads the UTC time in the calendar structure*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTStructureSetTime (*sets UTC time in calendar structure*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
+ END_VAR
+ VAR
+ i_state : UINT; (*internal variable*)
+ i_result : UINT; (*internal variable*)
+ i_tmp : UDINT; (*internal variable*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTStructureExSetTime (*sets UTC time in calendar structure*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
+ END_VAR
+ VAR
+ i_state : UINT; (*internal variable*)
+ i_result : UINT; (*internal variable*)
+ i_tmp : UDINT; (*internal variable*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDT_TO_LocalDTStructure (*sets current UTC-time in DATE_AND_TIME data type*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ DT1 :DATE_AND_TIME; (*UTC date and time*)
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
+ END_VAR
+ VAR
+ i_state : UINT; (*internal variable*)
+ i_result : UINT; (*internal variable*)
+ i_tmp : UDINT; (*internal variable*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK LocalDT_TO_UtcDTStructure (*sets current UTC-time in DATE_AND_TIME data type*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ DT1 :DATE_AND_TIME; (*Local date and time*)
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ END_VAR
+ VAR_OUTPUT
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
+ END_VAR
+ VAR
+ i_state : UINT; (*internal variable*)
+ i_result : UINT; (*internal variable*)
+ i_tmp : UDINT; (*internal variable*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK UtcDTStructure_TO_LocalDT (*sets current UTC-time in DATE_AND_TIME data type*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ END_VAR
+ VAR_OUTPUT
+ DT1 :DATE_AND_TIME; (*Local date and time*)
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
+ END_VAR
+ VAR
+ i_state : UINT; (*internal variable*)
+ i_result : UINT; (*internal variable*)
+ i_tmp : UDINT; (*internal variable*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK LocalDTStructure_TO_UtcDT (*sets current UTC-time in DATE_AND_TIME data type*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ END_VAR
+ VAR_OUTPUT
+ DT1 :DATE_AND_TIME; (*UTC date and time*)
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
+ END_VAR
+ VAR
+ i_state : UINT; (*internal variable*)
+ i_result : UINT; (*internal variable*)
+ i_tmp : UDINT; (*internal variable*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ascTIMEStructure : UDINT (*converts a "time" structure to a character string in the format "15:14:13\0"*)
+ VAR_INPUT
+ pTIMEStructure :UDINT; (*address of the time structure*)
+ pStr :UDINT; (*address of the character field*)
+ len :UDINT; (*length of the character field *)
+ END_VAR
+END_FUNCTION
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ascDTStructure : UDINT (*converts a "date" structure to a character string in the format "Sun Jan 3 15:14:13 1988\0"*)
+ VAR_INPUT
+ pDTStructure :UDINT; (*address of the calendar structure *)
+ pStr :UDINT; (*address of the character field*)
+ len :UDINT; (*length of the character field*)
+ END_VAR
+END_FUNCTION
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ascTIME : UDINT (*converts the TIME data type to a character string in the format "15:14:13\0"*)
+ VAR_INPUT
+ TIME1 :TIME; (*time*)
+ pStr :UDINT; (*address of the character field*)
+ len :UDINT; (*length of the character field*)
+ END_VAR
+END_FUNCTION
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ascDT : UDINT (*converts the DATE_AND_TIME data type to character string in the format "Sun Jan 3 15:14:13 1988\0"*)
+ VAR_INPUT
+ DT1 :DATE_AND_TIME; (*date and time*)
+ pStr :UDINT; (*address of the character field*)
+ len :UDINT; (*length of the character field*)
+ END_VAR
+END_FUNCTION
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION TIMEStructure_TO_TIME : TIME (*converts a "time" structure to the TIME data type*)
+ VAR_INPUT
+ pTIMEStructure :UDINT; (*address of the time structure*)
+ END_VAR
+END_FUNCTION
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION TIME_TO_TIMEStructure : UDINT (*converts the TIME data type to a "time" structure*)
+ VAR_INPUT
+ TIME1 :TIME; (*time*)
+ pTIMEStructure :UDINT; (*address of the calendar structure*)
+ END_VAR
+END_FUNCTION
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION DTStructure_TO_DT : DATE_AND_TIME (*converts a "date" structure to the DATE_AND_TIME data type*)
+ VAR_INPUT
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ END_VAR
+END_FUNCTION
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION DT_TO_DTStructure : UDINT (*converts the DATE_AND_TIME data type to a "date" structure*)
+ VAR_INPUT
+ DT1 :DATE_AND_TIME; (*date and time*)
+ pDTStructure :UDINT; (*address of the calendar structure*)
+ END_VAR
+END_FUNCTION
+
+{REDUND_OK} FUNCTION DiffT : UDINT (*shows the difference between two times (TIME data type) expressed in milliseconds*)
+ VAR_INPUT
+ TIME2 :TIME; (*time 2*)
+ TIME1 :TIME; (*time 1*)
+ END_VAR
+END_FUNCTION
+
+{REDUND_OK} FUNCTION DiffDT : UDINT (*shows the difference between two times (DATE_AND_TIME data type) expressed in seconds*)
+ VAR_INPUT
+ DT2 :DATE_AND_TIME; (*date and time 2*)
+ DT1 :DATE_AND_TIME; (*date and time 1*)
+ END_VAR
+END_FUNCTION
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK TimeDeviceGetInfo (*read information about time device*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ pServer :UDINT; (*Pointer to string*)
+ len :USINT; (*length of pServer*)
+ END_VAR
+ VAR_OUTPUT
+ timeDevice :USINT; (*sntpREAL_TIME_CLOCK or sntpTIME_SERVER*)
+ avgDeviation :REAL; (*average deviation between software time and time device*)
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
+ END_VAR
+ VAR
+ i_state :UINT; (*internal variable*)
+ i_result :UINT; (*internal variable*)
+ i_tmp :UDINT; (*internal variable*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DstGetInfo (*read information about time device*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ pDTStructure :UDINT; (*Pointer to DTStructure*)
+ END_VAR
+ VAR_OUTPUT
+ dstState :USINT; (*timDAYLIGHT_SAVING_TIME, timNORMAL_TIME or timNO_DST*)
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
+ END_VAR
+ VAR
+ i_state :UINT; (*internal variable*)
+ i_result :UINT; (*internal variable*)
+ i_tmp :UDINT; (*internal variable*)
+ END_VAR
+END_FUNCTION_BLOCK
+
+{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DstGetInfoDT (*read information about time device*)
+ VAR_INPUT
+ enable :BOOL; (*enables execution*)
+ DT1 :DATE_AND_TIME; (*date and time in UTC*)
+ END_VAR
+ VAR_OUTPUT
+ dstState :USINT; (*timDAYLIGHT_SAVING_TIME, timNORMAL_TIME or timNO_DST*)
+ status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
+ END_VAR
+ VAR
+ i_state :UINT; (*internal variable*)
+ i_result :UINT; (*internal variable*)
+ i_tmp :UDINT; (*internal variable*)
+ END_VAR
+END_FUNCTION_BLOCK
diff --git a/example/As6Project/Logical/Libraries/_AS/astime/astime.typ b/example/As6Project/Logical/Libraries/_AS/astime/astime.typ
new file mode 100644
index 0000000..3609d6e
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/astime/astime.typ
@@ -0,0 +1,22 @@
+
+TYPE
+ TIMEStructure : STRUCT (*time structure*)
+ day : SINT ; (*day (1-31)*)
+ hour : USINT ; (*hours (0-23)*)
+ minute : USINT ; (*minutes (0-59)*)
+ second : USINT ; (*seconds (0-59)*)
+ millisec : UINT ; (*milliseconds (0-999)*)
+ microsec : UINT ; (*microseconds (0-999)*)
+ END_STRUCT;
+ DTStructure : STRUCT (*date structure*)
+ year : UINT ; (*year*)
+ month : USINT ; (*month (1-12)*)
+ day : USINT ; (*day (1-31)*)
+ wday : USINT ; (*day of the week (0-6), e.g. 0 = Sunday, 6 = Saturday*)
+ hour : USINT ; (*hours (0-23)*)
+ minute : USINT ; (*minutes (0-59)*)
+ second : USINT ; (*seconds (0-59)*)
+ millisec : UINT ; (*milliseconds (0-999)*)
+ microsec : UINT ; (*microseconds (0-999)*)
+ END_STRUCT;
+END_TYPE
diff --git a/example/As6Project/Logical/Libraries/_AS/astime/astime.var b/example/As6Project/Logical/Libraries/_AS/astime/astime.var
new file mode 100644
index 0000000..70e0c26
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/astime/astime.var
@@ -0,0 +1,18 @@
+
+VAR CONSTANT
+ timEXSETTIME_NO_LOGENTRY : USINT := 1;
+ timEXSETTIME_NO_OPTION : USINT := 0;
+ DATE_AND_TIME_MAX : UDINT := 4102444799;
+ TIME_MIN : DINT := -2073600000;
+ TIME_MAX : DINT := 2073600000;
+ timNORMAL_TIME : USINT := 1;
+ timDAYLIGHT_SAVING_TIME : USINT := 2;
+ timNO_DST : USINT := 3;
+ timREAL_TIME_CLOCK : USINT := 1;
+ timTIME_SERVER : USINT := 2;
+ timREDUND_INTERFACE : USINT := 3;
+ timERR_INVALID_PARAMETER : UINT := 33210;
+ timERR_INVALID_LEN : UINT := 33211;
+ timERR_INVALID_DTSTRUCTURE : UINT := 33212;
+ timERR_AR : UINT := 33213;
+END_VAR
diff --git a/example/As6Project/Logical/Libraries/_AS/astime/binary.lby b/example/As6Project/Logical/Libraries/_AS/astime/binary.lby
new file mode 100644
index 0000000..4ce250f
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/astime/binary.lby
@@ -0,0 +1,12 @@
+
+
+
+
+ astime.fun
+ astime.typ
+ astime.var
+
+
+
+
+
diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/SG3/runtime.h b/example/As6Project/Logical/Libraries/_AS/runtime/SG3/runtime.h
new file mode 100644
index 0000000..360394e
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/runtime/SG3/runtime.h
@@ -0,0 +1,80 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _RUNTIME_
+#define _RUNTIME_
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include
+
+#ifndef _IEC_CONST
+#define _IEC_CONST _WEAK const
+#endif
+
+/* Constants */
+#ifdef _REPLACE_CONST
+ #define ERR_OK 0
+ #define ERR_NOTIMPLEMENTED 9999
+ #define ERR_FUB_ENABLE_FALSE 0xFFFE
+ #define ERR_FUB_BUSY 0xFFFF
+
+/* IEC 61131-3 Datentypen */
+ #define IEC_DATATYPE_BOOL 1
+ #define IEC_DATATYPE_SINT 2
+ #define IEC_DATATYPE_INT 3
+ #define IEC_DATATYPE_DINT 4
+ #define IEC_DATATYPE_USINT 5
+ #define IEC_DATATYPE_UINT 6
+ #define IEC_DATATYPE_UDINT 7
+ #define IEC_DATATYPE_REAL 8
+ #define IEC_DATATYPE_STRING 9
+ #define IEC_DATATYPE_ULINT 10
+ #define IEC_DATATYPE_DATE_AND_TIME 11
+ #define IEC_DATATYPE_TIME 12
+ #define IEC_DATATYPE_DATE 13
+ #define IEC_DATATYPE_LREAL 14
+ #define IEC_DATATYPE_TIME_OF_DAY 16
+ #define IEC_DATATYPE_BYTE 17
+ #define IEC_DATATYPE_WORD 18
+ #define IEC_DATATYPE_DWORD 19
+ #define IEC_DATATYPE_LWORD 20
+ #define IEC_DATATYPE_WSTRING 21
+ #define IEC_DATATYPE_LINT 23
+
+#else
+ _IEC_CONST unsigned short ERR_OK = 0U;
+ _IEC_CONST unsigned short ERR_NOTIMPLEMENTED = 9999U;
+ _IEC_CONST unsigned short ERR_FUB_ENABLE_FALSE = 0xFFFEU;
+ _IEC_CONST unsigned short ERR_FUB_BUSY = 0xFFFFU;
+
+ /* IEC 61131-3 Datentypen */
+ _IEC_CONST unsigned short IEC_DATATYPE_BOOL = 1;
+ _IEC_CONST unsigned short IEC_DATATYPE_SINT = 2;
+ _IEC_CONST unsigned short IEC_DATATYPE_INT = 3;
+ _IEC_CONST unsigned short IEC_DATATYPE_DINT = 4;
+ _IEC_CONST unsigned short IEC_DATATYPE_USINT = 5;
+ _IEC_CONST unsigned short IEC_DATATYPE_UINT = 6;
+ _IEC_CONST unsigned short IEC_DATATYPE_UDINT = 7;
+ _IEC_CONST unsigned short IEC_DATATYPE_REAL = 8;
+ _IEC_CONST unsigned short IEC_DATATYPE_STRING = 9;
+ _IEC_CONST unsigned short IEC_DATATYPE_ULINT = 10;
+ _IEC_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME = 11;
+ _IEC_CONST unsigned short IEC_DATATYPE_TIME = 12;
+ _IEC_CONST unsigned short IEC_DATATYPE_DATE = 13;
+ _IEC_CONST unsigned short IEC_DATATYPE_LREAL = 14;
+ _IEC_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY = 16;
+ _IEC_CONST unsigned short IEC_DATATYPE_BYTE = 17;
+ _IEC_CONST unsigned short IEC_DATATYPE_WORD = 18;
+ _IEC_CONST unsigned short IEC_DATATYPE_DWORD = 19;
+ _IEC_CONST unsigned short IEC_DATATYPE_LWORD = 20;
+ _IEC_CONST unsigned short IEC_DATATYPE_WSTRING = 21;
+ _IEC_CONST unsigned short IEC_DATATYPE_LINT = 23;
+#endif
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _RUNTIME_ */
+
diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/SG4/runtime.h b/example/As6Project/Logical/Libraries/_AS/runtime/SG4/runtime.h
new file mode 100644
index 0000000..fa683ca
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/runtime/SG4/runtime.h
@@ -0,0 +1,486 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _RUNTIME_
+#define _RUNTIME_
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include
+
+#ifndef _BUR_PUBLIC
+#define _BUR_PUBLIC
+#endif
+/* Datatypes and datatypes of function blocks */
+typedef struct SFCActionControl
+{
+ /* VAR_INPUT (analog) */
+ plctime T;
+ /* VAR (analog) */
+ unsigned char S_FF_SET;
+ unsigned char S_FF_R1;
+ unsigned char S_FF_Q;
+ unsigned char dummy1;
+ plctime L_TMR_PT;
+ plctime L_TMR_ET;
+ plctime L_TMR_STAR;
+ unsigned char L_TMR_IN;
+ unsigned char L_TMR_Q;
+ unsigned char L_TMR_M;
+ unsigned char dummy2;
+ plctime D_TMR_PT;
+ plctime D_TMR_ET;
+ plctime D_TMR_STAR;
+ unsigned char D_TMR_IN;
+ unsigned char D_TMR_Q;
+ unsigned char D_TMR_M;
+ unsigned char dummy3;
+ unsigned char P_TRIG_CLK;
+ unsigned char P_TRIG_Q;
+ unsigned char P_TRIG_M;
+ unsigned char dummy4;
+ plctime SD_TMR_PT;
+ plctime SD_TMR_ET;
+ plctime SD_TMR_STA;
+ unsigned char SD_TMR_IN;
+ unsigned char SD_TMR_Q;
+ unsigned char SD_TMR_M;
+ unsigned char dummy5;
+ unsigned char SD_FF_SET;
+ unsigned char SD_FF_R1;
+ unsigned char SD_FF_Q;
+ unsigned char DS_FF_SET;
+ unsigned char DS_FF_R1;
+ unsigned char DS_FF_Q;
+ plctime DS_TMR_PT;
+ plctime DS_TMR_ET;
+ plctime DS_TMR_STA;
+ unsigned char DS_TMR_IN;
+ unsigned char DS_TMR_Q;
+ unsigned char DS_TMR_M;
+ unsigned char dummy6;
+ unsigned char SL_FF_SET;
+ unsigned char SL_FF_R1;
+ unsigned char SL_FF_Q;
+ unsigned char dummy7;
+ plctime SL_TMR_PT;
+ plctime SL_TMR_ET;
+ plctime SL_TMR_STA;
+ unsigned char SL_TMR_IN;
+ unsigned char SL_TMR_Q;
+ unsigned char SL_TMR_M;
+ unsigned char dummy8;
+ /* VAR_INPUT (digital) */
+ plcbit N;
+ plcbit R0;
+ plcbit S0;
+ plcbit L;
+ plcbit D;
+ plcbit P;
+ plcbit SD;
+ plcbit DS;
+ plcbit SL;
+ /* VAR_OUTPUT (digital) */
+ plcbit Q;
+} SFCActionControl_typ;
+
+typedef struct SFCActionType
+{ plcbit x;
+ plcbit _x;
+ plctime t;
+ plctime _t;
+ struct SFCActionControl AC;
+} SFCActionType;
+
+typedef struct SFCAC2
+{
+ /* VAR_INPUT (analog) */
+ plctime T;
+ /* VAR (analog) */
+ unsigned char S_FF_SET;
+ unsigned char S_FF_R1;
+ unsigned char S_FF_Q;
+ plctime L_TMR_PT;
+ plctime L_TMR_ET;
+ plctime L_TMR_STAR;
+ unsigned char L_TMR_IN;
+ unsigned char L_TMR_Q;
+ unsigned char L_TMR_M;
+ plctime D_TMR_PT;
+ plctime D_TMR_ET;
+ plctime D_TMR_STAR;
+ unsigned char D_TMR_IN;
+ unsigned char D_TMR_Q;
+ unsigned char D_TMR_M;
+ plctime SD_TMR_PT;
+ plctime SD_TMR_ET;
+ plctime SD_TMR_STA;
+ unsigned char SD_TMR_IN;
+ unsigned char SD_TMR_Q;
+ unsigned char SD_TMR_M;
+ unsigned char SD_FF_SET;
+ unsigned char SD_FF_R1;
+ unsigned char SD_FF_Q1;
+ unsigned char DS_FF_SET;
+ unsigned char DS_FF_R1;
+ unsigned char DS_FF_Q1;
+ plctime DS_TMR_PT;
+ plctime DS_TMR_ET;
+ plctime DS_TMR_STA;
+ unsigned char DS_TMR_IN;
+ unsigned char DS_TMR_Q;
+ unsigned char DS_TMR_M;
+ unsigned char SL_FF_SET;
+ unsigned char SL_FF_R1;
+ unsigned char SL_FF_Q;
+ plctime SL_TMR_PT;
+ plctime SL_TMR_ET;
+ plctime SL_TMR_STA;
+ unsigned char SL_TMR_IN;
+ unsigned char SL_TMR_Q;
+ unsigned char SL_TMR_M;
+ unsigned char P_TRIG_Q;
+ unsigned char P_TRIG_M;
+ unsigned char Q_TRIG_Q;
+ unsigned char Q_TRIG_M;
+ unsigned char P1_TRIG_Q;
+ unsigned char P1_TRIG_M;
+ unsigned char P0_TRIG_Q;
+ unsigned char P0_TRIG_M;
+ /* VAR_INPUT (digital) */
+ plcbit N;
+ plcbit R0;
+ plcbit S0;
+ plcbit L;
+ plcbit D;
+ plcbit P;
+ plcbit P1;
+ plcbit P0;
+ plcbit SD;
+ plcbit DS;
+ plcbit SL;
+ /* VAR_OUTPUT (digital) */
+ plcbit Q;
+ plcbit A;
+} SFCAC2_typ;
+
+typedef struct SFCActionType2
+{ plcbit x;
+ plcbit _x;
+ struct SFCAC2 AC;
+} SFCActionType2;
+
+typedef struct SFCActionCType
+{ plcbit x;
+ plcbit _x;
+ plcbit force;
+ plcbit _force;
+ plcbit active;
+ plcbit _active;
+ plcbit error;
+ struct SFCActionControl AC;
+} SFCActionCType;
+
+typedef struct SFCActionCType2
+{ plcbit x;
+ plcbit _x;
+ plcbit force;
+ plcbit _force;
+ plcbit active;
+ plcbit _active;
+ plcbit error;
+ struct SFCAC2 AC;
+} SFCActionCType2;
+
+typedef struct TimerType
+{ double ptime;
+ double etime;
+ double start;
+ unsigned char in;
+ unsigned char q;
+} TimerType;
+
+typedef struct SFCAC3
+{
+ /* VAR_INPUT (analog) */
+ double T;
+ double T_ACT;
+ /* VAR (analog) */
+ struct TimerType L_TMR;
+ struct TimerType D_TMR;
+ struct TimerType SD_TMR;
+ struct TimerType DS_TMR;
+ struct TimerType SL_TMR;
+ unsigned char S_FF_Q1;
+ unsigned char SD_FF_Q1;
+ unsigned char DS_FF_Q1;
+ unsigned char SL_FF_Q1;
+ unsigned char P_R_TRIG_Q;
+ unsigned char P_R_TRIG_M;
+ unsigned char Q_F_TRIG_Q;
+ unsigned char Q_F_TRIG_M;
+ unsigned char P1_R_TRIG_Q;
+ unsigned char P1_R_TRIG_M;
+ unsigned char P0_F_TRIG_Q;
+ unsigned char P0_F_TRIG_M;
+ /* VAR_INPUT (digital) */
+ plcbit N;
+ plcbit R0;
+ plcbit S0;
+ plcbit L;
+ plcbit D;
+ plcbit P;
+ plcbit P1;
+ plcbit P0;
+ plcbit SD;
+ plcbit DS;
+ plcbit SL;
+ plcbit PAUSE;
+ /* VAR_OUTPUT (digital) */
+ plcbit Q;
+ plcbit A;
+} SFCAC3_typ;
+
+typedef struct SFCActionCType3
+{ double t;
+ double _t;
+ double tp;
+ plcbit x;
+ plcbit _x;
+ plcbit force;
+ plcbit _force;
+ plcbit active;
+ plcbit _active;
+ plcbit error;
+ struct SFCAC3 AC;
+} SFCActionCType3;
+
+typedef struct SFCStepType
+{ plcbit x;
+ plctime t;
+ plcbit _x;
+ plctime _t;
+} SFCStepType;
+
+typedef struct SFCStepCType
+{ plctime t;
+ plctime _t;
+ unsigned long inactive_actions;
+ unsigned long _inactive_actions;
+ unsigned long error_actions;
+ plcbit x;
+ plcbit _x;
+ plcbit x_activate;
+ plcbit force;
+ plcbit _force;
+ plcbit active;
+ plcbit _active;
+ plcbit error;
+ plcbit tip;
+ plcbit tip_disable_duration;
+ plcbit tip_disable_action;
+} SFCStepCType;
+
+typedef struct SFCStepCType3
+{ double t;
+ double _t;
+ double tp;
+ unsigned long inactive_actions;
+ unsigned long _inactive_actions;
+ unsigned long error_actions;
+ plcbit x;
+ plcbit _x;
+ plcbit x_activate;
+ plcbit force;
+ plcbit _force;
+ plcbit active;
+ plcbit _active;
+ plcbit error;
+ plcbit tip;
+ plcbit tip_disable_duration;
+ plcbit tip_disable_action;
+} SFCStepCType3;
+
+typedef struct SFCSimpleStepCType
+{ plctime t;
+ plctime _t;
+ plcbit x;
+ plcbit _x;
+ plcbit x_activate;
+ plcbit force;
+ plcbit _force;
+ plcbit active;
+ plcbit _active;
+ plcbit error;
+ plcbit tip;
+ plcbit tip_disable_duration;
+ plcbit tip_disable_action;
+} SFCSimpleStepCType;
+
+typedef struct SFCSimpleStepCType3
+{ double t;
+ double _t;
+ double tp;
+ plcbit x;
+ plcbit _x;
+ plcbit x_activate;
+ plcbit force;
+ plcbit _force;
+ plcbit active;
+ plcbit _active;
+ plcbit error;
+ plcbit tip;
+ plcbit tip_disable_duration;
+ plcbit tip_disable_action;
+} SFCSimpleStepCType3;
+
+typedef struct SFCTransitionCType
+{ plcbit force;
+ plcbit _force;
+ plcbit active;
+ plcbit _active;
+} SFCTransitionCType;
+
+typedef struct ArFBStateInternalType
+{ unsigned long ExecuteRef;
+ unsigned long BusyRef;
+ unsigned long DoneRef;
+ unsigned long ErrorRef;
+ unsigned long ActiveRef;
+ unsigned long StatusRef;
+ unsigned long FBCyclic;
+ unsigned long AsyfumaState;
+ unsigned long FBResetOut;
+ unsigned long Argument;
+ unsigned long State;
+ plcbit ExecutePrev;
+} ArFBStateInternalType;
+
+typedef struct ArFBAsyFuMaInternalType
+{ unsigned short State;
+ signed long Result;
+} ArFBAsyFuMaInternalType;
+
+typedef struct r_trig
+{
+ /* VAR_INPUT (digital) */
+ plcbit CLK;
+ /* VAR_OUTPUT (digital) */
+ plcbit Q;
+ /* VAR (digital) */
+ plcbit M;
+} r_trig_typ;
+
+typedef struct f_trig
+{
+ /* VAR_INPUT (digital) */
+ plcbit CLK;
+ /* VAR_OUTPUT (digital) */
+ plcbit Q;
+ /* VAR (digital) */
+ plcbit M;
+} f_trig_typ;
+
+typedef struct rf_trig
+{
+ /* VAR_INPUT (digital) */
+ plcbit CLK;
+ /* VAR_OUTPUT (digital) */
+ plcbit Q;
+ /* VAR (digital) */
+ plcbit M;
+} rf_trig_typ;
+
+
+
+/* Prototyping of functions and function blocks */
+_BUR_PUBLIC void r_trig(struct r_trig* inst);
+_BUR_PUBLIC void f_trig(struct f_trig* inst);
+_BUR_PUBLIC void rf_trig(struct rf_trig* inst);
+_BUR_PUBLIC void SFCActionControl(struct SFCActionControl* inst);
+_BUR_PUBLIC void SFCAC2(struct SFCAC2* inst);
+_BUR_PUBLIC void SFCAC3(struct SFCAC3* inst);
+_BUR_PUBLIC plctime GetTime(void);
+_BUR_PUBLIC double RealTan(double x);
+_BUR_PUBLIC double RealAtan(double x);
+_BUR_PUBLIC double RealAsin(double x);
+_BUR_PUBLIC double RealAcos(double x);
+_BUR_PUBLIC double RealExp(double x);
+_BUR_PUBLIC double RealLn(double x);
+_BUR_PUBLIC double RealLog(double x);
+_BUR_PUBLIC double RealExpt(double x, double y);
+_BUR_PUBLIC double RealAbs(double x);
+_BUR_PUBLIC double RealSin(double x);
+_BUR_PUBLIC double RealCos(double x);
+_BUR_PUBLIC double RealSqrt(double x);
+
+
+/* Constants */
+#ifdef _REPLACE_CONST
+ #define IEC_DATATYPE_LINT 23U
+ #define IEC_DATATYPE_WSTRING 21U
+ #define IEC_DATATYPE_LWORD 20U
+ #define IEC_DATATYPE_DWORD 19U
+ #define IEC_DATATYPE_WORD 18U
+ #define IEC_DATATYPE_BYTE 17U
+ #define IEC_DATATYPE_TIME_OF_DAY 16U
+ #define IEC_DATATYPE_LREAL 14U
+ #define IEC_DATATYPE_DATE 13U
+ #define IEC_DATATYPE_TIME 12U
+ #define IEC_DATATYPE_DATE_AND_TIME 11U
+ #define IEC_DATATYPE_ULINT 10U
+ #define IEC_DATATYPE_STRING 9U
+ #define IEC_DATATYPE_REAL 8U
+ #define IEC_DATATYPE_UDINT 7U
+ #define IEC_DATATYPE_UINT 6U
+ #define IEC_DATATYPE_USINT 5U
+ #define IEC_DATATYPE_DINT 4U
+ #define IEC_DATATYPE_INT 3U
+ #define IEC_DATATYPE_SINT 2U
+ #define IEC_DATATYPE_BOOL 1U
+ #define ERR_FB_NOT_IMPLEMENTED (-1070585592)
+ #define ERR_FUB_REDUNDANT 35688U
+ #define ERR_FUB_BUSY 65535U
+ #define ERR_FUB_ENABLE_FALSE 65534U
+ #define ERR_NOTIMPLEMENTED 9999U
+ #define ERR_OK 0U
+#else
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_LINT;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_WSTRING;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_LWORD;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_DWORD;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_WORD;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_BYTE;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_LREAL;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_DATE;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_TIME;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_ULINT;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_STRING;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_REAL;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_UDINT;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_UINT;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_USINT;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_DINT;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_INT;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_SINT;
+ _GLOBAL_CONST unsigned short IEC_DATATYPE_BOOL;
+ _GLOBAL_CONST signed long ERR_FB_NOT_IMPLEMENTED;
+ _GLOBAL_CONST unsigned short ERR_FUB_REDUNDANT;
+ _GLOBAL_CONST unsigned short ERR_FUB_BUSY;
+ _GLOBAL_CONST unsigned short ERR_FUB_ENABLE_FALSE;
+ _GLOBAL_CONST unsigned short ERR_NOTIMPLEMENTED;
+ _GLOBAL_CONST unsigned short ERR_OK;
+#endif
+
+
+
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _RUNTIME_ */
+
diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/SGC/runtime.h b/example/As6Project/Logical/Libraries/_AS/runtime/SGC/runtime.h
new file mode 100644
index 0000000..360394e
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/runtime/SGC/runtime.h
@@ -0,0 +1,80 @@
+/* Automation Studio generated header file */
+/* Do not edit ! */
+
+#ifndef _RUNTIME_
+#define _RUNTIME_
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include
+
+#ifndef _IEC_CONST
+#define _IEC_CONST _WEAK const
+#endif
+
+/* Constants */
+#ifdef _REPLACE_CONST
+ #define ERR_OK 0
+ #define ERR_NOTIMPLEMENTED 9999
+ #define ERR_FUB_ENABLE_FALSE 0xFFFE
+ #define ERR_FUB_BUSY 0xFFFF
+
+/* IEC 61131-3 Datentypen */
+ #define IEC_DATATYPE_BOOL 1
+ #define IEC_DATATYPE_SINT 2
+ #define IEC_DATATYPE_INT 3
+ #define IEC_DATATYPE_DINT 4
+ #define IEC_DATATYPE_USINT 5
+ #define IEC_DATATYPE_UINT 6
+ #define IEC_DATATYPE_UDINT 7
+ #define IEC_DATATYPE_REAL 8
+ #define IEC_DATATYPE_STRING 9
+ #define IEC_DATATYPE_ULINT 10
+ #define IEC_DATATYPE_DATE_AND_TIME 11
+ #define IEC_DATATYPE_TIME 12
+ #define IEC_DATATYPE_DATE 13
+ #define IEC_DATATYPE_LREAL 14
+ #define IEC_DATATYPE_TIME_OF_DAY 16
+ #define IEC_DATATYPE_BYTE 17
+ #define IEC_DATATYPE_WORD 18
+ #define IEC_DATATYPE_DWORD 19
+ #define IEC_DATATYPE_LWORD 20
+ #define IEC_DATATYPE_WSTRING 21
+ #define IEC_DATATYPE_LINT 23
+
+#else
+ _IEC_CONST unsigned short ERR_OK = 0U;
+ _IEC_CONST unsigned short ERR_NOTIMPLEMENTED = 9999U;
+ _IEC_CONST unsigned short ERR_FUB_ENABLE_FALSE = 0xFFFEU;
+ _IEC_CONST unsigned short ERR_FUB_BUSY = 0xFFFFU;
+
+ /* IEC 61131-3 Datentypen */
+ _IEC_CONST unsigned short IEC_DATATYPE_BOOL = 1;
+ _IEC_CONST unsigned short IEC_DATATYPE_SINT = 2;
+ _IEC_CONST unsigned short IEC_DATATYPE_INT = 3;
+ _IEC_CONST unsigned short IEC_DATATYPE_DINT = 4;
+ _IEC_CONST unsigned short IEC_DATATYPE_USINT = 5;
+ _IEC_CONST unsigned short IEC_DATATYPE_UINT = 6;
+ _IEC_CONST unsigned short IEC_DATATYPE_UDINT = 7;
+ _IEC_CONST unsigned short IEC_DATATYPE_REAL = 8;
+ _IEC_CONST unsigned short IEC_DATATYPE_STRING = 9;
+ _IEC_CONST unsigned short IEC_DATATYPE_ULINT = 10;
+ _IEC_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME = 11;
+ _IEC_CONST unsigned short IEC_DATATYPE_TIME = 12;
+ _IEC_CONST unsigned short IEC_DATATYPE_DATE = 13;
+ _IEC_CONST unsigned short IEC_DATATYPE_LREAL = 14;
+ _IEC_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY = 16;
+ _IEC_CONST unsigned short IEC_DATATYPE_BYTE = 17;
+ _IEC_CONST unsigned short IEC_DATATYPE_WORD = 18;
+ _IEC_CONST unsigned short IEC_DATATYPE_DWORD = 19;
+ _IEC_CONST unsigned short IEC_DATATYPE_LWORD = 20;
+ _IEC_CONST unsigned short IEC_DATATYPE_WSTRING = 21;
+ _IEC_CONST unsigned short IEC_DATATYPE_LINT = 23;
+#endif
+
+#ifdef __cplusplus
+};
+#endif
+#endif /* _RUNTIME_ */
+
diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/binary.lby b/example/As6Project/Logical/Libraries/_AS/runtime/binary.lby
new file mode 100644
index 0000000..92ad626
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/runtime/binary.lby
@@ -0,0 +1,9 @@
+
+
+
+
+ runtime.fun
+ runtime.typ
+ runtime.var
+
+
diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/runtime.fun b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.fun
new file mode 100644
index 0000000..4d2564d
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.fun
@@ -0,0 +1,282 @@
+
+{REDUND_OK} FUNCTION_BLOCK r_trig (*for internal use only - do not use this function in user programs*)
+ VAR_INPUT
+ CLK :BOOL;
+ END_VAR
+ VAR_OUTPUT
+ Q :BOOL;
+ END_VAR
+ VAR
+ M :BOOL;
+ END_VAR
+END_FUNCTION_BLOCK
+{REDUND_OK} FUNCTION_BLOCK f_trig (*for internal use only - do not use this function in user programs*)
+ VAR_INPUT
+ CLK :BOOL;
+ END_VAR
+ VAR_OUTPUT
+ Q :BOOL;
+ END_VAR
+ VAR
+ M :BOOL;
+ END_VAR
+END_FUNCTION_BLOCK
+{REDUND_OK} FUNCTION_BLOCK rf_trig (*for internal use only - do not use this function in user programs*)
+ VAR_INPUT
+ CLK :BOOL;
+ END_VAR
+ VAR_OUTPUT
+ Q :BOOL;
+ END_VAR
+ VAR
+ M :BOOL;
+ END_VAR
+END_FUNCTION_BLOCK
+FUNCTION GetTime : TIME (*for internal use only - do not use this function in user programs*)
+END_FUNCTION
+{REDUND_OK} FUNCTION_BLOCK SFCActionControl (*for internal use only - do not use this function in user programs*)
+ VAR_INPUT
+ N :BOOL;
+ R0 :BOOL;
+ S0 :BOOL;
+ L :BOOL;
+ D :BOOL;
+ P :BOOL;
+ SD :BOOL;
+ DS :BOOL;
+ SL :BOOL;
+ T :TIME;
+ END_VAR
+ VAR_OUTPUT
+ Q :BOOL;
+ END_VAR
+ VAR
+ S_FF_SET :USINT;
+ S_FF_R1 :USINT;
+ S_FF_Q :USINT;
+ dummy1 :USINT;
+ L_TMR_PT :TIME;
+ L_TMR_ET :TIME;
+ L_TMR_STAR :TIME;
+ L_TMR_IN :USINT;
+ L_TMR_Q :USINT;
+ L_TMR_M :USINT;
+ dummy2 :USINT;
+ D_TMR_PT :TIME;
+ D_TMR_ET :TIME;
+ D_TMR_STAR :TIME;
+ D_TMR_IN :USINT;
+ D_TMR_Q :USINT;
+ D_TMR_M :USINT;
+ dummy3 :USINT;
+ P_TRIG_CLK :USINT;
+ P_TRIG_Q :USINT;
+ P_TRIG_M :USINT;
+ dummy4 :USINT;
+ SD_TMR_PT :TIME;
+ SD_TMR_ET :TIME;
+ SD_TMR_STA :TIME;
+ SD_TMR_IN :USINT;
+ SD_TMR_Q :USINT;
+ SD_TMR_M :USINT;
+ dummy5 :USINT;
+ SD_FF_SET :USINT;
+ SD_FF_R1 :USINT;
+ SD_FF_Q :USINT;
+ DS_FF_SET :USINT;
+ DS_FF_R1 :USINT;
+ DS_FF_Q :USINT;
+ DS_TMR_PT :TIME;
+ DS_TMR_ET :TIME;
+ DS_TMR_STA :TIME;
+ DS_TMR_IN :USINT;
+ DS_TMR_Q :USINT;
+ DS_TMR_M :USINT;
+ dummy6 :USINT;
+ SL_FF_SET :USINT;
+ SL_FF_R1 :USINT;
+ SL_FF_Q :USINT;
+ dummy7 :USINT;
+ SL_TMR_PT :TIME;
+ SL_TMR_ET :TIME;
+ SL_TMR_STA :TIME;
+ SL_TMR_IN :USINT;
+ SL_TMR_Q :USINT;
+ SL_TMR_M :USINT;
+ dummy8 :USINT;
+ END_VAR
+END_FUNCTION_BLOCK
+{REDUND_OK} FUNCTION_BLOCK SFCAC2 (*for internal use only - do not use this function in user programs*)
+ VAR_INPUT
+ N : {REDUND_UNREPLICABLE} BOOL;
+ R0 : {REDUND_UNREPLICABLE} BOOL;
+ S0 : {REDUND_UNREPLICABLE} BOOL;
+ L : {REDUND_UNREPLICABLE} BOOL;
+ D : {REDUND_UNREPLICABLE} BOOL;
+ P : {REDUND_UNREPLICABLE} BOOL;
+ P1 : {REDUND_UNREPLICABLE} BOOL;
+ P0 : {REDUND_UNREPLICABLE} BOOL;
+ SD : {REDUND_UNREPLICABLE} BOOL;
+ DS : {REDUND_UNREPLICABLE} BOOL;
+ SL : {REDUND_UNREPLICABLE} BOOL;
+ T :TIME;
+ END_VAR
+ VAR_OUTPUT
+ Q :BOOL;
+ A :BOOL;
+ END_VAR
+ VAR
+ S_FF_SET :USINT;
+ S_FF_R1 :USINT;
+ S_FF_Q :USINT;
+ L_TMR_PT :TIME;
+ L_TMR_ET :TIME;
+ L_TMR_STAR :TIME;
+ L_TMR_IN :USINT;
+ L_TMR_Q :USINT;
+ L_TMR_M :USINT;
+ D_TMR_PT :TIME;
+ D_TMR_ET :TIME;
+ D_TMR_STAR :TIME;
+ D_TMR_IN :USINT;
+ D_TMR_Q :USINT;
+ D_TMR_M :USINT;
+ SD_TMR_PT :TIME;
+ SD_TMR_ET :TIME;
+ SD_TMR_STA :TIME;
+ SD_TMR_IN :USINT;
+ SD_TMR_Q :USINT;
+ SD_TMR_M :USINT;
+ SD_FF_SET :USINT;
+ SD_FF_R1 :USINT;
+ SD_FF_Q1 :USINT;
+ DS_FF_SET :USINT;
+ DS_FF_R1 :USINT;
+ DS_FF_Q1 :USINT;
+ DS_TMR_PT :TIME;
+ DS_TMR_ET :TIME;
+ DS_TMR_STA :TIME;
+ DS_TMR_IN :USINT;
+ DS_TMR_Q :USINT;
+ DS_TMR_M :USINT;
+ SL_FF_SET :USINT;
+ SL_FF_R1 :USINT;
+ SL_FF_Q :USINT;
+ SL_TMR_PT :TIME;
+ SL_TMR_ET :TIME;
+ SL_TMR_STA :TIME;
+ SL_TMR_IN :USINT;
+ SL_TMR_Q :USINT;
+ SL_TMR_M :USINT;
+ P_TRIG_Q :USINT;
+ P_TRIG_M :USINT;
+ Q_TRIG_Q :USINT;
+ Q_TRIG_M :USINT;
+ P1_TRIG_Q :USINT;
+ P1_TRIG_M :USINT;
+ P0_TRIG_Q :USINT;
+ P0_TRIG_M :USINT;
+ END_VAR
+END_FUNCTION_BLOCK
+{REDUND_OK} FUNCTION RealTan : LREAL
+ VAR_INPUT
+ x :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION RealAtan : LREAL
+ VAR_INPUT
+ x :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION RealAsin : LREAL
+ VAR_INPUT
+ x :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION RealAcos : LREAL
+ VAR_INPUT
+ x :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION RealExp : LREAL
+ VAR_INPUT
+ x :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION RealLn : LREAL
+ VAR_INPUT
+ x :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION RealLog : LREAL
+ VAR_INPUT
+ x :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION RealExpt : LREAL
+ VAR_INPUT
+ x :LREAL;
+ y :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION RealAbs : LREAL
+ VAR_INPUT
+ x :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION RealSin : LREAL
+ VAR_INPUT
+ x :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION RealCos : LREAL
+ VAR_INPUT
+ x :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION RealSqrt : LREAL
+ VAR_INPUT
+ x :LREAL;
+ END_VAR
+END_FUNCTION
+{REDUND_OK} FUNCTION_BLOCK SFCAC3 (*for internal use only - do not use this function in user programs*)
+ VAR_INPUT
+ N : {REDUND_UNREPLICABLE} BOOL;
+ R0 : {REDUND_UNREPLICABLE} BOOL;
+ S0 : {REDUND_UNREPLICABLE} BOOL;
+ L : {REDUND_UNREPLICABLE} BOOL;
+ D : {REDUND_UNREPLICABLE} BOOL;
+ P : {REDUND_UNREPLICABLE} BOOL;
+ P1 : {REDUND_UNREPLICABLE} BOOL;
+ P0 : {REDUND_UNREPLICABLE} BOOL;
+ SD : {REDUND_UNREPLICABLE} BOOL;
+ DS : {REDUND_UNREPLICABLE} BOOL;
+ SL : {REDUND_UNREPLICABLE} BOOL;
+ T :LREAL;
+ T_ACT : {REDUND_UNREPLICABLE} LREAL;
+ PAUSE : {REDUND_UNREPLICABLE} BOOL;
+ END_VAR
+ VAR_OUTPUT
+ Q : {REDUND_UNREPLICABLE} BOOL;
+ A :BOOL;
+ END_VAR
+ VAR
+ L_TMR :TimerType;
+ D_TMR :TimerType;
+ SD_TMR :TimerType;
+ DS_TMR :TimerType;
+ SL_TMR :TimerType;
+ S_FF_Q1 :USINT;
+ SD_FF_Q1 :USINT;
+ DS_FF_Q1 :USINT;
+ SL_FF_Q1 :USINT;
+ P_R_TRIG_Q : {REDUND_UNREPLICABLE} USINT;
+ P_R_TRIG_M :USINT;
+ Q_F_TRIG_Q : {REDUND_UNREPLICABLE} USINT;
+ Q_F_TRIG_M :USINT;
+ P1_R_TRIG_Q : {REDUND_UNREPLICABLE} USINT;
+ P1_R_TRIG_M :USINT;
+ P0_F_TRIG_Q : {REDUND_UNREPLICABLE} USINT;
+ P0_F_TRIG_M :USINT;
+ END_VAR
+END_FUNCTION_BLOCK
diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/runtime.typ b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.typ
new file mode 100644
index 0000000..4bf1514
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.typ
@@ -0,0 +1,156 @@
+
+TYPE
+ SFCActionType : STRUCT (*internal use*)
+ x : BOOL;
+ _x : BOOL;
+ t : TIME;
+ _t : TIME;
+ AC : SFCActionControl;
+ END_STRUCT;
+ SFCActionType2 : STRUCT (*internal use*)
+ x : BOOL;
+ _x : BOOL;
+ AC : SFCAC2;
+ END_STRUCT;
+ SFCActionCType : STRUCT (*internal use*)
+ x : BOOL;
+ _x : BOOL;
+ force : BOOL;
+ _force : BOOL;
+ active : BOOL;
+ _active : BOOL;
+ error : BOOL;
+ AC : SFCActionControl;
+ END_STRUCT;
+ SFCActionCType2 : STRUCT (*internal use*)
+ x : BOOL;
+ _x : BOOL;
+ force : BOOL;
+ _force : BOOL;
+ active : BOOL;
+ _active : BOOL;
+ error : BOOL;
+ AC : SFCAC2;
+ END_STRUCT;
+ SFCActionCType3 : STRUCT (*internal use*)
+ t : LREAL;
+ _t : LREAL;
+ tp : LREAL;
+ x : BOOL;
+ _x : BOOL;
+ force : BOOL;
+ _force : BOOL;
+ active : BOOL;
+ _active : BOOL;
+ error : BOOL;
+ AC : SFCAC3;
+ END_STRUCT;
+ SFCStepType : STRUCT (*internal use*)
+ x : BOOL;
+ t : TIME;
+ _x : BOOL;
+ _t : TIME;
+ END_STRUCT;
+ SFCStepCType : STRUCT (*internal use*)
+ t : TIME;
+ _t : TIME;
+ inactive_actions : UDINT;
+ _inactive_actions : UDINT;
+ error_actions : UDINT;
+ x : BOOL;
+ _x : BOOL;
+ x_activate : BOOL;
+ force : BOOL;
+ _force : BOOL;
+ active : BOOL;
+ _active : BOOL;
+ error : BOOL;
+ tip : BOOL;
+ tip_disable_duration: BOOL;
+ tip_disable_action : BOOL;
+ END_STRUCT;
+ SFCStepCType3 : STRUCT (*internal use*)
+ t : LREAL;
+ _t : LREAL;
+ tp : LREAL;
+ inactive_actions : UDINT;
+ _inactive_actions : UDINT;
+ error_actions : UDINT;
+ x : BOOL;
+ _x : BOOL;
+ x_activate : {REDUND_UNREPLICABLE} BOOL;
+ force : BOOL;
+ _force : BOOL;
+ active : BOOL;
+ _active : BOOL;
+ error : BOOL;
+ tip : BOOL;
+ tip_disable_duration : BOOL;
+ tip_disable_action : BOOL;
+ END_STRUCT;
+ SFCSimpleStepCType : STRUCT (*internal use*)
+ t : TIME;
+ _t : TIME;
+ x : BOOL;
+ _x : BOOL;
+ x_activate : BOOL;
+ force : BOOL;
+ _force : BOOL;
+ active : BOOL;
+ _active : BOOL;
+ error : BOOL;
+ tip : BOOL;
+ tip_disable_duration : BOOL;
+ tip_disable_action : BOOL;
+ END_STRUCT;
+ SFCSimpleStepCType3 : STRUCT (*internal use*)
+ t : LREAL;
+ _t : LREAL;
+ tp : LREAL;
+ x : BOOL;
+ _x : BOOL;
+ x_activate : {REDUND_UNREPLICABLE} BOOL;
+ force : BOOL;
+ _force : BOOL;
+ active : BOOL;
+ _active : BOOL;
+ error : BOOL;
+ tip : BOOL;
+ tip_disable_duration : BOOL;
+ tip_disable_action : BOOL;
+ END_STRUCT;
+ SFCTransitionCType : STRUCT (*internal use*)
+ force : BOOL;
+ _force : BOOL;
+ active : BOOL;
+ _active : BOOL;
+ END_STRUCT;
+ TimerType : STRUCT (*internal use*)
+ ptime : LREAL;
+ etime : LREAL;
+ start : LREAL;
+ in : USINT;
+ q : USINT;
+ END_STRUCT;
+
+ ArFBStateInternalType : STRUCT (*fb state machine internal context*)
+ ExecuteRef : UDINT;
+ BusyRef : UDINT;
+ DoneRef : UDINT;
+ ErrorRef : UDINT;
+ ActiveRef : UDINT;
+ StatusRef : UDINT;
+ FBCyclic : UDINT;
+ AsyfumaState : UDINT;
+ FBResetOut : UDINT;
+ Argument : UDINT;
+ State : UDINT;
+ ExecutePrev : BOOL;
+ END_STRUCT;
+
+ ArFBAsyFuMaInternalType : STRUCT (*asynchronous function manager internal context*)
+ State : UINT;
+ Result : DINT;
+ END_STRUCT;
+
+END_TYPE
diff --git a/example/As6Project/Logical/Libraries/_AS/runtime/runtime.var b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.var
new file mode 100644
index 0000000..c955341
--- /dev/null
+++ b/example/As6Project/Logical/Libraries/_AS/runtime/runtime.var
@@ -0,0 +1,35 @@
+
+ (*Common Functionblock Status*)
+VAR CONSTANT
+ ERR_OK : UINT := 0; (*no error*)
+ ERR_NOTIMPLEMENTED : UINT := 9999; (*function or function block not implemented*)
+ ERR_FUB_ENABLE_FALSE : UINT := 16#FFFE; (*function block parameter "enable" is FALSE*)
+ ERR_FUB_BUSY : UINT := 16#FFFF; (*function block still working*)
+ ERR_FUB_REDUNDANT : UINT := 35688; (*This FUB can not be used on the standby CPU*)
+ ERR_FB_NOT_IMPLEMENTED: DINT := -1070585592;(*function or function block not implemented for the target system*)
+END_VAR
+
+(*IEC 61131-3 Datatypes*)
+VAR CONSTANT
+ IEC_DATATYPE_BOOL : UINT := 1; (*8 Bit containing a boolean value FALSE=0 or TRUE=1*)
+ IEC_DATATYPE_SINT : UINT := 2; (*8 Bit signed integer*)
+ IEC_DATATYPE_INT : UINT := 3; (*16 Bit signed integer*)
+ IEC_DATATYPE_DINT : UINT := 4; (*32 Bit signed integer*)
+ IEC_DATATYPE_USINT : UINT := 5; (*8 Bit unsigned integer*)
+ IEC_DATATYPE_UINT : UINT := 6; (*16 Bit unsigned integer*)
+ IEC_DATATYPE_UDINT : UINT := 7; (*32 Bit unsigned integer*)
+ IEC_DATATYPE_REAL : UINT := 8; (*32 Bit floating point number*)
+ IEC_DATATYPE_STRING : UINT := 9; (*Variable-length single-byte character string*)
+ IEC_DATATYPE_ULINT : UINT := 10; (*64 Bit unsigned integer*)
+ IEC_DATATYPE_DATE_AND_TIME : UINT := 11; (*32 Bit of Date in Seconds since 01.01.1970 00:00:00*)
+ IEC_DATATYPE_TIME : UINT := 12; (*32 Bit of Time in ms*)
+ IEC_DATATYPE_DATE : UINT := 13; (*32 Bit of Date (only)*)
+ IEC_DATATYPE_LREAL : UINT := 14; (*64 Bit floating point number*)
+ IEC_DATATYPE_TIME_OF_DAY: UINT := 16; (*32 Bit Time of day (only)*)
+ IEC_DATATYPE_BYTE : UINT := 17; (*Bit string of length 8*)
+ IEC_DATATYPE_WORD : UINT := 18; (*Bit string of length 16*)
+ IEC_DATATYPE_DWORD : UINT := 19; (*Bit string of length 32*)
+ IEC_DATATYPE_LWORD : UINT := 20; (*Bit string of length 64*)
+ IEC_DATATYPE_WSTRING : UINT := 21; (*Variable-length double-byte character string*)
+ IEC_DATATYPE_LINT : UINT := 23; (*64 Bit signed integer*)
+END_VAR
diff --git a/example/As6Project/Logical/Package.pkg b/example/As6Project/Logical/Package.pkg
new file mode 100644
index 0000000..7a1c7ee
--- /dev/null
+++ b/example/As6Project/Logical/Package.pkg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Logical/Programs/Default/ANSIC.prg b/example/As6Project/Logical/Programs/Default/ANSIC.prg
new file mode 100644
index 0000000..30934ba
--- /dev/null
+++ b/example/As6Project/Logical/Programs/Default/ANSIC.prg
@@ -0,0 +1,9 @@
+
+
+
+
+ Main.c
+ Types.typ
+ Variables.var
+
+
\ No newline at end of file
diff --git a/example/As6Project/Logical/Programs/Default/Main.c b/example/As6Project/Logical/Programs/Default/Main.c
new file mode 100644
index 0000000..0f4fb8b
--- /dev/null
+++ b/example/As6Project/Logical/Programs/Default/Main.c
@@ -0,0 +1,37 @@
+
+#include
+
+#ifdef _DEFAULT_INCLUDES
+ #include
+#endif
+
+#include "string.h"
+#include
+
+void _INIT ProgramInit(void)
+{
+}
+
+
+void _CYCLIC ProgramCyclic(void)
+{
+ if(calldtoa) {
+ calldtoa = 0;
+
+ pString = stringdtoa(val, (char*)buffer, ndigits, sizeof(buffer));
+ if(pString) {
+ len = strlen((char*)pString);
+ strcpy((char*)string, (char*)pString);
+ }
+
+ }
+
+
+
+}
+
+void _EXIT ProgramExit(void)
+{
+
+}
+
diff --git a/example/As6Project/Logical/Programs/Default/Types.typ b/example/As6Project/Logical/Programs/Default/Types.typ
new file mode 100644
index 0000000..5dc40af
--- /dev/null
+++ b/example/As6Project/Logical/Programs/Default/Types.typ
@@ -0,0 +1,4 @@
+
+TYPE
+
+END_TYPE
diff --git a/example/As6Project/Logical/Programs/Default/Variables.var b/example/As6Project/Logical/Programs/Default/Variables.var
new file mode 100644
index 0000000..b203071
--- /dev/null
+++ b/example/As6Project/Logical/Programs/Default/Variables.var
@@ -0,0 +1,9 @@
+VAR
+ ndigits : UDINT;
+ val : LREAL;
+ calldtoa : BOOL;
+ len : UDINT;
+ string : ARRAY[0..3] OF STRING[80];
+ buffer : ARRAY[0..3] OF STRING[80];
+ pString : UDINT;
+END_VAR
diff --git a/example/As6Project/Logical/Programs/Package.pkg b/example/As6Project/Logical/Programs/Package.pkg
new file mode 100644
index 0000000..9f53426
--- /dev/null
+++ b/example/As6Project/Logical/Programs/Package.pkg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/Config.pkg b/example/As6Project/Physical/ARM/Config.pkg
new file mode 100644
index 0000000..2f67f96
--- /dev/null
+++ b/example/As6Project/Physical/ARM/Config.pkg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/Hardware.hw b/example/As6Project/Physical/ARM/Hardware.hw
new file mode 100644
index 0000000..3892886
--- /dev/null
+++ b/example/As6Project/Physical/ARM/Hardware.hw
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/Hardware.hwl b/example/As6Project/Physical/ARM/Hardware.hwl
new file mode 100644
index 0000000..6c94f55
--- /dev/null
+++ b/example/As6Project/Physical/ARM/Hardware.hwl
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/Hardware.jpg b/example/As6Project/Physical/ARM/Hardware.jpg
new file mode 100644
index 0000000..12bc267
Binary files /dev/null and b/example/As6Project/Physical/ARM/Hardware.jpg differ
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg
new file mode 100644
index 0000000..973c732
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg
new file mode 100644
index 0000000..683b25c
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg
new file mode 100644
index 0000000..66601a5
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg
new file mode 100644
index 0000000..08d5735
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg
new file mode 100644
index 0000000..b03ca4c
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/Package.pkg
new file mode 100644
index 0000000..3748db4
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/Package.pkg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg
new file mode 100644
index 0000000..7ea4734
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg
new file mode 100644
index 0000000..0c531bc
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Package.pkg
new file mode 100644
index 0000000..591a078
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Package.pkg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Rules.firewallRules b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Rules.firewallRules
new file mode 100644
index 0000000..8748b19
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Firewall/Rules.firewallRules
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Package.pkg
new file mode 100644
index 0000000..d88458a
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/Package.pkg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/TransportLayerSecurity/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/TransportLayerSecurity/Package.pkg
new file mode 100644
index 0000000..58a4ff8
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/TransportLayerSecurity/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/BRRole.brrole b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/BRRole.brrole
new file mode 100644
index 0000000..6795c17
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/BRRole.brrole
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Package.pkg
new file mode 100644
index 0000000..9dd97ab
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Package.pkg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Role.role b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Role.role
new file mode 100644
index 0000000..a4ef7ad
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/Role.role
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/User.user b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/User.user
new file mode 100644
index 0000000..593efe2
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/AccessAndSecurity/UserRoleSystem/User.user
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/Connectivity/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/Connectivity/Package.pkg
new file mode 100644
index 0000000..bfea000
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/Connectivity/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/Cpu.per b/example/As6Project/Physical/ARM/X20CP0410/Cpu.per
new file mode 100644
index 0000000..14f5eae
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/Cpu.per
@@ -0,0 +1,4 @@
+
+VAR_CONFIG
+
+END_VAR
diff --git a/example/As6Project/Physical/ARM/X20CP0410/Cpu.pkg b/example/As6Project/Physical/ARM/X20CP0410/Cpu.pkg
new file mode 100644
index 0000000..28d3d1d
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/Cpu.pkg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/Cpu.sw b/example/As6Project/Physical/ARM/X20CP0410/Cpu.sw
new file mode 100644
index 0000000..0b9d0dd
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/Cpu.sw
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/IoMap.iom b/example/As6Project/Physical/ARM/X20CP0410/IoMap.iom
new file mode 100644
index 0000000..14f5eae
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/IoMap.iom
@@ -0,0 +1,4 @@
+
+VAR_CONFIG
+
+END_VAR
diff --git a/example/As6Project/Physical/ARM/X20CP0410/PvMap.vvm b/example/As6Project/Physical/ARM/X20CP0410/PvMap.vvm
new file mode 100644
index 0000000..14f5eae
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/PvMap.vvm
@@ -0,0 +1,4 @@
+
+VAR_CONFIG
+
+END_VAR
diff --git a/example/As6Project/Physical/ARM/X20CP0410/TextSystem/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/TextSystem/Package.pkg
new file mode 100644
index 0000000..24b827e
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/TextSystem/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/UnitSystem/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/UnitSystem/Package.pkg
new file mode 100644
index 0000000..f45ab49
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/UnitSystem/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappCockpit/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappCockpit/Package.pkg
new file mode 100644
index 0000000..f031b15
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/mappCockpit/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappControl/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappControl/Package.pkg
new file mode 100644
index 0000000..e5d9739
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/mappControl/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappMotion/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappMotion/Package.pkg
new file mode 100644
index 0000000..0d34e88
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/mappMotion/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappSafety/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/Package.pkg
new file mode 100644
index 0000000..5ba4780
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/Package.pkg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeApplication/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeApplication/Package.pkg
new file mode 100644
index 0000000..9efcef1
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeApplication/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeCommissioning/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeCommissioning/Package.pkg
new file mode 100644
index 0000000..d23129f
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/mappSafety/SafeCommissioning/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappServices/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappServices/Package.pkg
new file mode 100644
index 0000000..bdbbebd
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/mappServices/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappView/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappView/Package.pkg
new file mode 100644
index 0000000..2900995
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/mappView/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/ARM/X20CP0410/mappVision/Package.pkg b/example/As6Project/Physical/ARM/X20CP0410/mappVision/Package.pkg
new file mode 100644
index 0000000..7c77cf1
--- /dev/null
+++ b/example/As6Project/Physical/ARM/X20CP0410/mappVision/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg
new file mode 100644
index 0000000..10e1bab
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateRevocationLists/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg
new file mode 100644
index 0000000..1c929de
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/CertificateSigningRequests/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg
new file mode 100644
index 0000000..fbb044b
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Certificates/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg
new file mode 100644
index 0000000..af9e8e4
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/Package.pkg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg
new file mode 100644
index 0000000..6a55aa2
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/OwnCertificates/PrivateKeys/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/Package.pkg
new file mode 100644
index 0000000..a2b3a11
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/Package.pkg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg
new file mode 100644
index 0000000..11603db
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/Package.pkg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg
new file mode 100644
index 0000000..c53e656
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/CertificateStore/ThirdPartyCertificates/SoftwareCertificates/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Package.pkg
new file mode 100644
index 0000000..0d836d3
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Package.pkg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Rules.firewallRules b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Rules.firewallRules
new file mode 100644
index 0000000..add65ef
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Firewall/Rules.firewallRules
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Package.pkg
new file mode 100644
index 0000000..2648337
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/Package.pkg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/TransportLayerSecurity/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/TransportLayerSecurity/Package.pkg
new file mode 100644
index 0000000..f820e78
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/TransportLayerSecurity/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/BRRole.brrole b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/BRRole.brrole
new file mode 100644
index 0000000..6795c17
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/BRRole.brrole
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Package.pkg
new file mode 100644
index 0000000..9dd97ab
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Package.pkg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Role.role b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Role.role
new file mode 100644
index 0000000..39281ec
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/Role.role
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/User.user b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/User.user
new file mode 100644
index 0000000..a6b973c
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/AccessAndSecurity/UserRoleSystem/User.user
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUaCs/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUaCs/Package.pkg
new file mode 100644
index 0000000..c43b450
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/OpcUaCs/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/Package.pkg
new file mode 100644
index 0000000..666b638
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Connectivity/Package.pkg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.per b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.per
new file mode 100644
index 0000000..14f5eae
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.per
@@ -0,0 +1,4 @@
+
+VAR_CONFIG
+
+END_VAR
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg
new file mode 100644
index 0000000..31a52f2
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.pkg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.sw b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.sw
new file mode 100644
index 0000000..8c13688
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/Cpu.sw
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/IoMap.iom b/example/As6Project/Physical/Intel/5PC900_TS17_04/IoMap.iom
new file mode 100644
index 0000000..14f5eae
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/IoMap.iom
@@ -0,0 +1,4 @@
+
+VAR_CONFIG
+
+END_VAR
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/PvMap.vvm b/example/As6Project/Physical/Intel/5PC900_TS17_04/PvMap.vvm
new file mode 100644
index 0000000..14f5eae
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/PvMap.vvm
@@ -0,0 +1,4 @@
+
+VAR_CONFIG
+
+END_VAR
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/TextSystem/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/TextSystem/Package.pkg
new file mode 100644
index 0000000..321c2b6
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/TextSystem/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/UnitSystem/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/UnitSystem/Package.pkg
new file mode 100644
index 0000000..dbd64ad
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/UnitSystem/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappCockpit/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappCockpit/Package.pkg
new file mode 100644
index 0000000..35a14eb
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappCockpit/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappControl/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappControl/Package.pkg
new file mode 100644
index 0000000..9dbadad
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappControl/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappMotion/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappMotion/Package.pkg
new file mode 100644
index 0000000..ecc31c8
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappMotion/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappServices/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappServices/Package.pkg
new file mode 100644
index 0000000..3d375fc
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappServices/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappView/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappView/Package.pkg
new file mode 100644
index 0000000..480d4d9
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappView/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/5PC900_TS17_04/mappVision/Package.pkg b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappVision/Package.pkg
new file mode 100644
index 0000000..62837d9
--- /dev/null
+++ b/example/As6Project/Physical/Intel/5PC900_TS17_04/mappVision/Package.pkg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/Config.pkg b/example/As6Project/Physical/Intel/Config.pkg
new file mode 100644
index 0000000..97f3cc1
--- /dev/null
+++ b/example/As6Project/Physical/Intel/Config.pkg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/Hardware.hw b/example/As6Project/Physical/Intel/Hardware.hw
new file mode 100644
index 0000000..f6f4d37
--- /dev/null
+++ b/example/As6Project/Physical/Intel/Hardware.hw
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/Hardware.hwl b/example/As6Project/Physical/Intel/Hardware.hwl
new file mode 100644
index 0000000..fa5970d
--- /dev/null
+++ b/example/As6Project/Physical/Intel/Hardware.hwl
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/Physical/Intel/Hardware.jpg b/example/As6Project/Physical/Intel/Hardware.jpg
new file mode 100644
index 0000000..5ae7e40
Binary files /dev/null and b/example/As6Project/Physical/Intel/Hardware.jpg differ
diff --git a/example/As6Project/Physical/Physical.pkg b/example/As6Project/Physical/Physical.pkg
new file mode 100644
index 0000000..351df13
--- /dev/null
+++ b/example/As6Project/Physical/Physical.pkg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/example/As6Project/README.md b/example/As6Project/README.md
new file mode 100644
index 0000000..a26d5f0
--- /dev/null
+++ b/example/As6Project/README.md
@@ -0,0 +1,3 @@
+# ASStarter (Build me up)
+
+ASStarter is a minimal Automation studio project used by the Buttercup framework to automatically create starter projects.
\ No newline at end of file
diff --git a/example/As6Project/package-lock.json b/example/As6Project/package-lock.json
new file mode 100644
index 0000000..49e47e4
--- /dev/null
+++ b/example/As6Project/package-lock.json
@@ -0,0 +1,29 @@
+{
+ "name": "@loupeteam/librarybuilderproject",
+ "version": "0.2.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "@loupeteam/librarybuilderproject",
+ "version": "0.2.0",
+ "license": "MIT",
+ "dependencies": {
+ "@loupeteam/librarybuilderproject": "^0.3.0",
+ "@loupeteam/stringext": "^0.14.4"
+ }
+ },
+ "node_modules/@loupeteam/librarybuilderproject": {
+ "version": "0.3.0",
+ "resolved": "https://npm.pkg.github.com/download/@loupeteam/librarybuilderproject/0.3.0/9c3c1fc98350439d618573f3b465d94e3ae1e000",
+ "integrity": "sha512-kUOwhpPoqQ1DikLGFBH3c8+nsb28ayX2IpQRC0UaEg34cV4GrRoI0FvkSovc3tgrGohpyvxFPRy5C6TM5wj7JA==",
+ "license": "MIT"
+ },
+ "node_modules/@loupeteam/stringext": {
+ "version": "0.14.4",
+ "resolved": "https://npm.pkg.github.com/download/@loupeteam/stringext/0.14.4/94cecc972c68673d69c605dba4b7904618e24cfc",
+ "integrity": "sha512-IhMDGSyclNrv5mYs+kyqN5OHLQrSsktZFvULrWgwr3lg0/Bl+xiO6EvehLWRbZNWZUGWFeaYhBSevv73tIZqow==",
+ "license": "Loupe Software License Agreement"
+ }
+ }
+}
diff --git a/example/As6Project/package.json b/example/As6Project/package.json
new file mode 100644
index 0000000..4ef4aec
--- /dev/null
+++ b/example/As6Project/package.json
@@ -0,0 +1,22 @@
+{
+ "name": "@loupeteam/librarybuilderproject",
+ "version": "0.2.0",
+ "description": "LibraryBuilderProject is a minimal Automation studio project used to build libraries for Intel and ARM configurations",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/loupeteam/StarterAsProject.git"
+ },
+ "author": "Loupe",
+ "license": "MIT",
+ "lpmConfig": {
+ "deploymentConfigs": [
+ "Intel",
+ "ARM"
+ ],
+ "gitClient": "GitExtensions"
+ },
+ "dependencies": {
+ "@loupeteam/librarybuilderproject": "^0.3.0",
+ "@loupeteam/stringext": "^0.14.4"
+ }
+}
diff --git a/example/AsProject/AsProject.apj b/example/AsProject/AsProject.apj
index ec5b008..37df849 100644
--- a/example/AsProject/AsProject.apj
+++ b/example/AsProject/AsProject.apj
@@ -7,7 +7,4 @@
-
-
-
\ No newline at end of file
diff --git a/example/AsProject/Physical/Intel/5PC900_TS17_04/Cpu.pkg b/example/AsProject/Physical/Intel/5PC900_TS17_04/Cpu.pkg
index a6e3a52..bb60475 100644
--- a/example/AsProject/Physical/Intel/5PC900_TS17_04/Cpu.pkg
+++ b/example/AsProject/Physical/Intel/5PC900_TS17_04/Cpu.pkg
@@ -22,6 +22,6 @@
-
+
\ No newline at end of file
diff --git a/src/Ar/StringExt/ANSIC.lby b/src/Ar/StringExt/ANSIC.lby
index 6a3bc28..b1f05b0 100644
--- a/src/Ar/StringExt/ANSIC.lby
+++ b/src/Ar/StringExt/ANSIC.lby
@@ -1,6 +1,6 @@
-
+
@@ -25,8 +25,7 @@
-
-
+
diff --git a/src/Ar/StringExt/bur_heap_size.c b/src/Ar/StringExt/bur_heap_size.c
new file mode 100644
index 0000000..8661755
--- /dev/null
+++ b/src/Ar/StringExt/bur_heap_size.c
@@ -0,0 +1,13 @@
+#include
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ #include "StringExt.h"
+
+#ifdef __cplusplus
+};
+#endif
+
+unsigned long bur_heap_size = 0xFFFF; // Set heap size to maximum possible value (65535) to allow for dynamic memory allocation in the StringExt library.
\ No newline at end of file
diff --git a/src/Ar/StringExt/gdtoa/arith.h b/src/Ar/StringExt/gdtoa/arith.h
index f229979..1a235be 100644
--- a/src/Ar/StringExt/gdtoa/arith.h
+++ b/src/Ar/StringExt/gdtoa/arith.h
@@ -6,7 +6,6 @@
#ifndef ARITH_H_INCLUDED
#define ARITH_H_INCLUDED
-#include "../tlsf.h"
#include "../internal.h"
#define IEEE_8087
@@ -24,8 +23,6 @@
#define MULTIPLE_THREADS
-#define ACQUIRE_DTOA_LOCK(n) lockSelect(n)
-#define FREE_DTOA_LOCK(n) freeSelect(n)
// We likely want to use tlsf here but I dont see how as we can define FREE currently
// Will the heap_redirect take care of this for us ?
diff --git a/src/Ar/StringExt/gdtoa/misc.c b/src/Ar/StringExt/gdtoa/misc.c
index b3ce7c9..2926a9c 100644
--- a/src/Ar/StringExt/gdtoa/misc.c
+++ b/src/Ar/StringExt/gdtoa/misc.c
@@ -54,7 +54,6 @@ Balloc
unsigned int len;
#endif
- ACQUIRE_DTOA_LOCK(0);
if ( (rv = freelist[k]) !=0) {
freelist[k] = rv->next;
}
@@ -75,7 +74,6 @@ Balloc
rv->k = k;
rv->maxwds = x;
}
- FREE_DTOA_LOCK(0);
rv->sign = rv->wds = 0;
return rv;
}
@@ -89,10 +87,8 @@ Bfree
#endif
{
if (v) {
- ACQUIRE_DTOA_LOCK(0);
v->next = freelist[v->k];
freelist[v->k] = v;
- FREE_DTOA_LOCK(0);
}
}
@@ -383,12 +379,10 @@ pow5mult
if ((p5 = p5s) == 0) {
/* first time */
#ifdef MULTIPLE_THREADS
- ACQUIRE_DTOA_LOCK(1);
if (!(p5 = p5s)) {
p5 = p5s = i2b(625);
p5->next = 0;
}
- FREE_DTOA_LOCK(1);
#else
p5 = p5s = i2b(625);
p5->next = 0;
@@ -404,12 +398,10 @@ pow5mult
break;
if ((p51 = p5->next) == 0) {
#ifdef MULTIPLE_THREADS
- ACQUIRE_DTOA_LOCK(1);
if (!(p51 = p5->next)) {
p51 = p5->next = mult(p5,p5);
p51->next = 0;
}
- FREE_DTOA_LOCK(1);
#else
p51 = p5->next = mult(p5,p5);
p51->next = 0;
diff --git a/src/Ar/StringExt/heap_redirect.c b/src/Ar/StringExt/heap_redirect.c
deleted file mode 100644
index 7f32616..0000000
--- a/src/Ar/StringExt/heap_redirect.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * File: heap_redirect.c
- * Copyright (c) 2023 Loupe
- * https://loupe.team
- *
- * This file is part of Chopper, licensed under the MIT License.
- *
- */
-
-#include
-#include "tlsf.h"
-
-//Redirect memory allocation calls:
-struct _reent;
-#define REENT struct _reent * _r __attribute__((__unused__))
-
-void * malloc(size_t size) { return tlsf_malloc(size); }
-void free(void* ptr) { tlsf_free(ptr); }
-void * realloc(void* ptr, size_t size) { return tlsf_realloc(ptr, size); }
-void * calloc(size_t items, size_t size) { return tlsf_calloc(items, size); }
-
-#ifndef __CYGWIN__
-void * _malloc_r(REENT, size_t size) { return tlsf_malloc(size); }
-void _free_r(REENT, void* ptr) { tlsf_free(ptr); }
-void * _realloc_r(REENT, void* ptr, size_t size) { return tlsf_realloc(ptr, size); }
-void * _calloc_r(REENT, size_t items, size_t size) { return tlsf_calloc(items, size); }
-#endif
-
-int const _force_tlfs_malloc = (int) malloc;
-
-__attribute__((weak,visibility("hidden"))) size_t bur_heap_size = 0; /* variable 'bur_heap_size' as dummy */
\ No newline at end of file
diff --git a/src/Ar/StringExt/internal.c b/src/Ar/StringExt/internal.c
index 136db29..a46a507 100644
--- a/src/Ar/StringExt/internal.c
+++ b/src/Ar/StringExt/internal.c
@@ -5,42 +5,16 @@ extern "C"
{
#endif
-#include "includes/rtkBase.h"
#ifdef __cplusplus
};
#endif
-// semaphores cause cycle time violations
-//#define USE_SEMAPHORE
-
-#ifdef USE_SEMAPHORE
-#include "includes/rtkSemaphore.h"
-
-static __thread RTK_SEM_H criticalSection[2] = {0};
-
-#define CREATE(name, max, section) RtkCreateSemaphore(name, max, section)
-#define ACQUIRE(section, wait) RtkAcquireSemaphore(section, wait)
-#define RELEASE(section) RtkReleaseSemaphore(section)
-
-#else // if USE_SEMAPHORE
-#include "includes/rtkCriticalSection.h"
-
-static __thread RTK_CRIT_SEC_H criticalSection[2] = {0};
-
-#define CREATE(name, max, section) RtkCreateCriticalSection(name, section)
-#define ACQUIRE(section, wait) RtkEnterCriticalSection(section)
-#define RELEASE(section) RtkLeaveCriticalSection(section)
-#endif // if USE_SEMAPHORE
void lockSelect(n) {
- if(n > (sizeof(criticalSection)/sizeof(criticalSection[0]) - 1)) return;
- if(!criticalSection[n]) CREATE(0, 1, &criticalSection[n]);
- RTK_ERROR err = ACQUIRE(criticalSection[n], 500L);
+ return;
}
void freeSelect(n) {
- if(n > (sizeof(criticalSection)/sizeof(criticalSection[0]) - 1)) return;
- if(!criticalSection[n]) return;
- RTK_ERROR err = RELEASE(criticalSection[n]);
+ return;
}
diff --git a/src/Ar/StringExt/package.json b/src/Ar/StringExt/package.json
new file mode 100644
index 0000000..11f373a
--- /dev/null
+++ b/src/Ar/StringExt/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "@loupeteam/stringext",
+ "version": "0.0.0",
+ "description": "String manipulation functions for B&R Automation Studio (ANSIC library)",
+ "homepage": "https://loupeteam.github.io/LoupeDocs/libraries/stringext.html",
+ "scripts": {},
+ "keywords": [],
+ "author": "Loupe",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/loupeteam/stringext"
+ },
+ "lpm": {
+ "type": "library"
+ },
+ "dependencies": {}
+}
\ No newline at end of file
diff --git a/src/Ar/StringExt/time.cpp b/src/Ar/StringExt/time.cpp
index 0b59533..2da4973 100644
--- a/src/Ar/StringExt/time.cpp
+++ b/src/Ar/StringExt/time.cpp
@@ -19,20 +19,29 @@
#include "string.h"
+//TODO: These time functions don't seem to be supported in AS6
+// 1. Figure out if we can use them
+// 2. Check if AS4 somehow, since they seem to at least build there
+#ifndef __arm__
#define __XSI_VISIBLE 1
+#endif
#include "time.h"
unsigned long stringfTime(unsigned long dest, unsigned long destSize, unsigned long format, DATE_AND_TIME time) {
if(!dest || !destSize || !format) return 0; // Return if null pointers or if destSize is 0
tm t = {};
+#ifndef __arm__
gmtime_r((time_t*)&time, &t);
+#endif
return strftime((char*)dest, destSize, (char*)format, &t);
}
DATE_AND_TIME stringpTime(unsigned long src, unsigned long format) {
if(!src || !format) return 0; // Return if null pointers
tm t = {};
+#ifndef __arm__
strptime((char*)src, (char*)format, &t);
+#endif
return mktime(&t);
}
diff --git a/src/Ar/StringExt/tlsf.h b/src/Ar/StringExt/tlsf.h
deleted file mode 100644
index 40326e8..0000000
--- a/src/Ar/StringExt/tlsf.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/** @file
- *******************************************************************************
- **
- ** @brief
- ** Two Levels Segregate Fit memory allocator (TLSF)
- ** Written by Miguel Masmano Tello
- **
- ** This code is released using a dual license strategy: GPL/LGPL
- **
- *******************************************************************************
- ** $Header: https://brateggevsvn1.br-automation.co.at/svn/motion_gmc/trunk/GMC/Core/sys/tlsf.h 2314 2013-11-26 09:33:41Z eisenmannm $
- *******************************************************************************
- **
- ** @remark
- ** This file is part of the common AR C++ System environment.
- **
- ** @copyright
- **
- ** Bernecker + Rainer Industrie-Elektronik Ges.m.b.H.
- **
- ** @date 2012-06-21 File has been adopted by Markus Eisenmann
- **
- ******************************************************************************/
-
-#ifndef _ARSYS_TLSF_H_INCLUDED_
-#define _ARSYS_TLSF_H_INCLUDED_
-
-#ifndef _SIZE_T_DEFINED
-#include
-#endif
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/** @cond COMPILER_SPECIFICS */
-#ifndef DECLSPEC_NOTHROW
-#if defined(__GNUC__) && ((__GNUC__ > 3) || \
- ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
-#define DECLSPEC_NOTHROW __attribute__((__nothrow__))
-#elif (_MSC_VER >= 1200) && defined(__cplusplus)
-#define DECLSPEC_NOTHROW __declspec(nothrow)
-#else
-#define DECLSPEC_NOTHROW
-#endif
-#endif
-
-#if defined(__ELF__) && (__GNUC__ >= 4)
-#pragma GCC visibility push(hidden)
-#define BURTLSF_DLLAPI __attribute__((visibility("default"), __nothrow__))
-#else
-#if defined(_WIN32) || defined(__WINDOWS__) || defined(__MINGW32__) || defined(__CYGWIN__)
-#if defined(_ARSVCREG_EXPORT) || defined(BURTLSF_EXPORTS)
-#define BURTLSF_DLLAPI __declspec(dllexport) DECLSPEC_NOTHROW
-#else
-#define BURTLSF_DLLAPI __declspec(dllimport) DECLSPEC_NOTHROW
-#endif
-#else /* not Windows */
-#define BURTLSF_DLLAPI extern DECLSPEC_NOTHROW
-#endif /* end Windows */
-#endif
- /** @endcond */
-
- DECLSPEC_NOTHROW size_t _tlsf_init_memory_pool(size_t mem_pool_size, void *mem_pool);
- DECLSPEC_NOTHROW size_t _tlsf_add_new_area(void *area, size_t area_size, void *mem_pool);
-#if !defined(NDEBUG) && (defined(DEBUG) || defined(_DEBUG))
- DECLSPEC_NOTHROW size_t _tlsf_get_used_size(void *mem_pool);
- DECLSPEC_NOTHROW size_t _tlsf_get_max_size(void *mem_pool);
-#endif
- DECLSPEC_NOTHROW void _tlsf_destroy_memory_pool(void *mem_pool);
- DECLSPEC_NOTHROW void *_tlsf_malloc_ex(size_t size, void *mem_pool);
- DECLSPEC_NOTHROW void *_tlsf_free_ex(void *ptr, void *mem_pool);
- DECLSPEC_NOTHROW void *_tlsf_realloc_ex(void *ptr, size_t new_size, void *mem_pool);
- DECLSPEC_NOTHROW void *_tlsf_calloc_ex(size_t nelem, size_t elem_size, void *mem_pool);
-
-#if defined(__ELF__) && (__GNUC__ >= 4)
-#pragma GCC visibility pop
-#endif
-
- /*lint -esym(526, tlsf_*) prevent warning about undefined functions*/
- /*exos BURTLSF_DLLAPI*/ void *tlsf_malloc(size_t size);
- /*exos BURTLSF_DLLAPI*/ void tlsf_free(void *ptr);
- /*exos BURTLSF_DLLAPI*/ void *tlsf_realloc(void *ptr, size_t size);
- /*exos BURTLSF_DLLAPI*/ void *tlsf_calloc(size_t nelem, size_t elem_size);
-
- /** @cond HIDDEN_INTERNALS */
- extern int const _force_tlfs_malloc; /*link symbol to force use of TLSF*/
-
-#if defined(_ENFORCE_TLFS_REDIRECT) && !(defined(_CODECHECK_PASS) || defined(_CODEPARSE_PASS) || defined(__CDT_PARSER__) || defined(_lint) || defined(__DOXYGEN) || defined(_doxygen))
-#if (__GNUC__ >= 3) && !defined(WIN32)
- __extension__ void *malloc(size_t) __asm__("tlsf_malloc");
- __extension__ void free(void *) __asm__("tlsf_free");
- __extension__ void *realloc(void *, size_t) __asm__("tlsf_realloc");
- __extension__ void *calloc(size_t, size_t) __asm__("tlsf_calloc");
-#else
-#error "Forcing TSLF-redirection of DSA not supported!"
-#endif
-#endif
- /** @endcond */
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-#endif /*_ARSYS_TLSF_H_INCLUDED_*/
\ No newline at end of file