Commit adc1a42e authored by Tiago Jorge's avatar Tiago Jorge
Browse files

Complex nested datatype support added in BRAVE mapper and bridge (C one).

parent 38e43195
grmon3> run
[calling_startup] Starting up ...
myroutes MDW
[ ********* gnc Init ********* ] Device driver init ...
myroutes MBAD
router = 0x8f15c0
[ ********* gnc2 Init ********* ] Device driver init ...
[calling_PI_changeMode] Current mode is modeX
[calling_PI_changeMode] Initiating mode change modeX => modeA ...
[get_bitfile_info] There are 3 headerfile entries.
[get_bitfile_info] Mode index 0 is modeA
[get_bitfile_info] Mode found in index 0 which is modeA
[calling_PI_changeMode] bitfile info is: global_status_var prev - disabled, offset - 0, size - 211460
[calling_PI_changeMode] global_status_var now is - reconfiguring
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc now is - reconfiguring
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc2 now is - disabled
[calling_PI_changeMode] FPGA STATUS before reconf = 1
[calling_PI_changeMode] FPGA STATUS after reconf = 1
[calling_PI_changeMode] New config loaded with success.
[calling_PI_changeMode] NEW mode is modeA
[calling_PI_pulse] Current mode is modeA
[calling_PI_pulse] Calling 'do_something'
[calling_PI_pulse] Sent: 0 0 0
[calling_PI_pulse] Sent: 1 1 1
[calling_PI_pulse] Sent: 2 2 2 2
[calling_PI_pulse] Sent: {3 3 3 3 - 4 4 4}
[calling_PI_pulse] Received: 2 2 2 2 13 13 13 13
[calling_PI_pulse] Received: {13 13 13 13 13 13 13}
[calling_PI_changeMode] Current mode is modeA
[calling_PI_changeMode] Initiating mode change modeA => modeC ...
[get_bitfile_info] There are 3 headerfile entries.
[get_bitfile_info] Mode index 0 is modeA
[get_bitfile_info] Mode index 1 is modeB
[get_bitfile_info] Mode index 2 is modeC
[get_bitfile_info] Mode found in index 2 which is modeC
[calling_PI_changeMode] bitfile info is: global_status_var prev - disabled, offset - 1526250, size - 177088
[calling_PI_changeMode] global_status_var now is - reconfiguring
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc now is - disabled
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc2 now is - reconfiguring
[calling_PI_changeMode] FPGA STATUS before reconf = 1
[calling_PI_changeMode] FPGA STATUS after reconf = 0
[calling_PI_changeMode] New config could not be loaded!
[calling_PI_changeMode] STAY in mode modeA
[calling_PI_pulse] Current mode is modeA
[calling_PI_pulse] Calling 'do_something'
[ <-?-> <-?-> <-?-> gnc Dispatcher <-?-> <-?-> <-?-> ] HW error!
[calling_PI_pulse] Sent: 1 1 1
[calling_PI_pulse] Sent: 2 2 2
[calling_PI_pulse] Sent: 3 3 3 3
[calling_PI_pulse] Sent: {4 4 4 4 - 5 5 5}
[calling_PI_pulse] Received: 3 3 3 3 19 19 19 19
[calling_PI_pulse] Received: {23 23 23 19 19 19 19}
[calling_PI_changeMode] Current mode is modeA
[calling_PI_changeMode] Initiating mode change modeA => modeC ...
[get_bitfile_info] There are 3 headerfile entries.
[get_bitfile_info] Mode index 0 is modeA
[get_bitfile_info] Mode index 1 is modeB
[get_bitfile_info] Mode index 2 is modeC
[get_bitfile_info] Mode found in index 2 which is modeC
[calling_PI_changeMode] bitfile info is: global_status_var prev - error, offset - 1526250, size - 177088
[calling_PI_changeMode] global_status_var now is - reconfiguring
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc now is - disabled
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc2 now is - reconfiguring
[calling_PI_changeMode] FPGA STATUS before reconf = 0
[calling_PI_changeMode] FPGA STATUS after reconf = 1
[calling_PI_changeMode] New config loaded with success.
[calling_PI_changeMode] NEW mode is modeC
[calling_PI_pulse] Current mode is modeC
[calling_PI_pulse] Calling 'do_something2'
[calling_PI_pulse] Sent: 2 2 2
[calling_PI_pulse] Sent: 3 3 3
[calling_PI_pulse] Sent: 4 4 4 4
[calling_PI_pulse] Sent: {5 5 5 5 - 6 6 6}
[calling_PI_pulse] Received: 4 4 4 4 29 29 29 29
[calling_PI_pulse] Received: {41 41 41 29 29 29 29}
[calling_PI_changeMode] Current mode is modeC
[calling_PI_changeMode] Initiating mode change modeC => modeX ...
[get_bitfile_info] There are 3 headerfile entries.
[get_bitfile_info] Mode index 0 is modeA
[get_bitfile_info] Mode index 1 is modeB
[get_bitfile_info] Mode index 2 is modeC
[calling_PI_changeMode] New (HW) config not found... SW mode applies.
[calling_PI_changeMode] NEW mode is modeX
[calling_PI_pulse] Current mode is modeX
[calling_PI_pulse] Calling 'do_something'
[calling_PI_pulse] Sent: 3 3 3
[calling_PI_pulse] Sent: 4 4 4
[calling_PI_pulse] Sent: 5 5 5 5
[calling_PI_pulse] Sent: {6 6 6 6 - 7 7 7}
[calling_PI_pulse] Received: 5 5 5 5 31 31 31 31
[calling_PI_pulse] Received: {43 43 43 31 31 31 31}
[calling_PI_changeMode] Current mode is modeX
[calling_PI_changeMode] Initiating mode change modeX => modeA ...
[get_bitfile_info] There are 3 headerfile entries.
[get_bitfile_info] Mode index 0 is modeA
[get_bitfile_info] Mode found in index 0 which is modeA
[calling_PI_changeMode] bitfile info is: global_status_var prev - disabled, offset - 0, size - 211460
[calling_PI_changeMode] global_status_var now is - reconfiguring
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc now is - reconfiguring
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc2 now is - disabled
[calling_PI_changeMode] FPGA STATUS before reconf = 1
[calling_PI_changeMode] FPGA STATUS after reconf = 0
[calling_PI_changeMode] New config could not be loaded!
[calling_PI_changeMode] STAY in mode modeX
[calling_PI_pulse] Current mode is modeX
[calling_PI_pulse] Calling 'do_something'
[calling_PI_pulse] Sent: 4 4 4
[calling_PI_pulse] Sent: 5 5 5
[calling_PI_pulse] Sent: 6 6 6 6
[calling_PI_pulse] Sent: {7 7 7 7 - 8 8 8}
[calling_PI_pulse] Received: 6 6 6 6 37 37 37 37
[calling_PI_pulse] Received: {53 53 53 37 37 37 37}
[calling_PI_changeMode] Current mode is modeX
[calling_PI_changeMode] Initiating mode change modeX => modeA ...
[get_bitfile_info] There are 3 headerfile entries.
[get_bitfile_info] Mode index 0 is modeA
[get_bitfile_info] Mode found in index 0 which is modeA
[calling_PI_changeMode] bitfile info is: global_status_var prev - error, offset - 0, size - 211460
[calling_PI_changeMode] global_status_var now is - reconfiguring
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc now is - reconfiguring
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc2 now is - disabled
[calling_PI_changeMode] FPGA STATUS before reconf = 0
[calling_PI_changeMode] FPGA STATUS after reconf = 1
[calling_PI_changeMode] New config loaded with success.
[calling_PI_changeMode] NEW mode is modeA
[calling_PI_pulse] Current mode is modeA
[calling_PI_pulse] Calling 'do_something'
[calling_PI_pulse] Sent: 5 5 5
[calling_PI_pulse] Sent: 6 6 6
[calling_PI_pulse] Sent: 7 7 7 7
[calling_PI_pulse] Sent: {8 8 8 8 - 9 9 9}
[calling_PI_pulse] Received: 7 7 7 7 43 43 43 43
[calling_PI_pulse] Received: {63 63 63 43 43 43 43}
[calling_PI_changeMode] Current mode is modeA
[calling_PI_changeMode] Initiating mode change modeA => modeC ...
[get_bitfile_info] There are 3 headerfile entries.
[get_bitfile_info] Mode index 0 is modeA
[get_bitfile_info] Mode index 1 is modeB
[get_bitfile_info] Mode index 2 is modeC
[get_bitfile_info] Mode found in index 2 which is modeC
[calling_PI_changeMode] bitfile info is: global_status_var prev - disabled, offset - 1526250, size - 177088
[calling_PI_changeMode] global_status_var now is - reconfiguring
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc now is - disabled
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc2 now is - reconfiguring
[calling_PI_changeMode] FPGA STATUS before reconf = 1
[calling_PI_changeMode] FPGA STATUS after reconf = 0
[calling_PI_changeMode] New config could not be loaded!
[calling_PI_changeMode] STAY in mode modeA
[calling_PI_pulse] Current mode is modeA
[calling_PI_pulse] Calling 'do_something'
[ <-?-> <-?-> <-?-> gnc Dispatcher <-?-> <-?-> <-?-> ] HW error!
[calling_PI_pulse] Sent: 6 6 6
[calling_PI_pulse] Sent: 7 7 7
[calling_PI_pulse] Sent: 8 8 8 8
[calling_PI_pulse] Sent: {9 9 9 9 - 10 10 10}
[calling_PI_pulse] Received: 8 8 8 8 49 49 49 49
[calling_PI_pulse] Received: {73 73 73 49 49 49 49}
[calling_PI_changeMode] Current mode is modeA
[calling_PI_changeMode] Initiating mode change modeA => modeC ...
[get_bitfile_info] There are 3 headerfile entries.
[get_bitfile_info] Mode index 0 is modeA
[get_bitfile_info] Mode index 1 is modeB
[get_bitfile_info] Mode index 2 is modeC
[get_bitfile_info] Mode found in index 2 which is modeC
[calling_PI_changeMode] bitfile info is: global_status_var prev - error, offset - 1526250, size - 177088
[calling_PI_changeMode] global_status_var now is - reconfiguring
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc now is - disabled
[calling_PI_changeMode] cross check: globalFpgaStatus_gnc2 now is - reconfiguring
[calling_PI_changeMode] FPGA STATUS before reconf = 0
[calling_PI_changeMode] FPGA STATUS after reconf = 1
[calling_PI_changeMode] New config loaded with success.
[calling_PI_changeMode] NEW mode is modeC
[calling_PI_pulse] Current mode is modeC
[calling_PI_pulse] Calling 'do_something2'
[calling_PI_pulse] Sent: 7 7 7
[calling_PI_pulse] Sent: 8 8 8
[calling_PI_pulse] Sent: 9 9 9 9
[calling_PI_pulse] Sent: {10 10 10 10 - 11 11 11}
[calling_PI_pulse] Received: 9 9 9 9 64 64 64 64
[calling_PI_pulse] Received: {101 101 101 64 64 64 64}
[calling_PI_changeMode] Current mode is modeC
[calling_PI_changeMode] Initiating mode change modeC => modeX ...
[get_bitfile_info] There are 3 headerfile entries.
[get_bitfile_info] Mode index 0 is modeA
[get_bitfile_info] Mode index 1 is modeB
[get_bitfile_info] Mode index 2 is modeC
[calling_PI_changeMode] New (HW) config not found... SW mode applies.
[calling_PI_changeMode] NEW mode is modeX
[calling_PI_pulse] Current mode is modeX
calling.zip
gnc.zip
fpga_reconfiguration_engine.zip
function1.zip
gnc2.zip
debug
......@@ -33,15 +33,15 @@ My2ndInt ::= MyInt ( 1 .. 18)
-- My2ndAType ::= AType
-- TypeEnumerated ::= ENUMERATED {
-- red(0),
-- green(1),
-- blue(2)
-- }
TypeEnumerated ::= ENUMERATED {
red(0),
green(1),
blue(2)
}
-- My2ndEnumerated ::= TypeEnumerated
-- T-STRING ::= OCTET STRING (SIZE(16))
T-STRING ::= OCTET STRING (SIZE(16))
T-ARR ::= SEQUENCE (SIZE (6)) OF INTEGER (0..32764)
......@@ -53,18 +53,18 @@ TypeNested ::= SEQUENCE {
int2Val INTEGER(-10..10),
int3Val MyInt (10..12),
intArray SEQUENCE (SIZE (10)) OF INTEGER (0..3),
-- octStrArray SEQUENCE (SIZE (10)) OF OCTET STRING (SIZE(8)),
-- boolArray SEQUENCE (SIZE (10)) OF T-BOOL,
-- enumArray SEQUENCE (SIZE (10)) OF TypeEnumerated,
-- enumValue TypeEnumerated,
-- enumValue2 ENUMERATED {
-- truism(0),
-- falsism(1)
-- },
-- label OCTET STRING (SIZE(8)),
-- bAlpha T-BOOL,
-- bBeta BOOLEAN,
-- sString T-STRING,
octStrArray SEQUENCE (SIZE (10)) OF OCTET STRING (SIZE(12)),
boolArray SEQUENCE (SIZE (10)) OF T-Boolean,
enumArray SEQUENCE (SIZE (10)) OF TypeEnumerated,
enumValue TypeEnumerated,
enumValue2 ENUMERATED {
truism(0),
falsism(1)
},
label OCTET STRING (SIZE(8)),
bAlpha T-Boolean,
bBeta T-Boolean,
sString T-STRING,
arr T-ARR
}
......
......@@ -417,7 +417,7 @@ FEATURES
Taste::InterfaceName => "stressTiago";
};
PROPERTIES
Source_Language => (Simulink);
Source_Language => (C);
Taste::Active_Interfaces => any;
END Function1;
......@@ -450,18 +450,16 @@ SUBCOMPONENTS
};
Gnc : SYSTEM interfaceview::IV::Gnc::Gnc.others {
Taste::coordinates => "174484 61582 236049 102141";
TASTE_IV_Properties::FPGA_Configurations => "modeA,modeB";
};
fpga_reconfiguration_engine : SYSTEM interfaceview::IV::fpga_reconfiguration_engine::fpga_reconfiguration_engine.others {
Taste::coordinates => "90205 113227 140857 136625";
};
Gnc2 : SYSTEM interfaceview::IV::Gnc2::Gnc2.others {
Taste::coordinates => "172121 106297 232592 141099";
TASTE_IV_Properties::FPGA_Configurations => "modeC";
};
Function1 : SYSTEM interfaceview::IV::Function1::Function1.others {
Taste::coordinates => "126926 143461 202672 155901";
TASTE_IV_Properties::FPGA_Configurations => "ModeS";
TASTE_IV_Properties::FPGA_Configurations => "ModeC";
};
CONNECTIONS
Gnc_PI_do_something_Calling_RI_do_something : SUBPROGRAM ACCESS Gnc.PI_do_something -> Calling.RI_do_something {
......
67a4a296ec2d3bf4b9680e10f8103353 InterfaceView.aadl
#!/bin/bash -e
# This script will build your TASTE system.
# You should not change this file as it was automatically generated.
# If you need additional preprocessing, there are three hook files
# that you can provide and that are called dring the build:
# user_init_pre.sh, user_init_post.sh and user_init_last.sh
# These files will never get overwritten by TASTE.'
# Inside these files you may set some environment variables:
# C_INCLUDE_PATH=/usr/include/xenomai/analogy/:${C_INCLUDE_PATH}
# unset USE_POHIC
CWD=$(pwd)
if [ -t 1 ] ; then
COLORON="\e[1m\e[32m"
COLOROFF="\e[0m"
else
COLORON=""
COLOROFF=""
fi
INFO="${COLORON}[INFO]${COLOROFF}"
if [ -f user_init_pre.sh ]
then
echo -e "${INFO} Executing user-defined init script"
source user_init_pre.sh
fi
# Set up the cache to limit the calls to ASN1SCC in DMT tools
mkdir -p .cache
export PROJECT_CACHE=$(pwd)/.cache
# Use PolyORB-HI-C runtime
USE_POHIC=1
# Set Debug mode by default
DEBUG_MODE=--debug
# Detect models from Ellidiss tools v2, and convert them to 1.3
INTERFACEVIEW=InterfaceView.aadl
grep "version => \"2" InterfaceView.aadl >/dev/null && {
echo -e "${INFO} Converting interface view from V2 to V1.3"
TASTE --load-interface-view InterfaceView.aadl --export-interface-view-to-1_3 __iv_1_3.aadl
INTERFACEVIEW=__iv_1_3.aadl
};
if [ -z "$DEPLOYMENTVIEW" ]
then
DEPLOYMENTVIEW=DeploymentView.aadl
fi
# Detect models from Ellidiss tools v2, and convert them to 1.3
grep "version => \"2" "$DEPLOYMENTVIEW" >/dev/null && {
echo -e "${INFO} Converting deployment view from V2 to V1.3"
TASTE --load-deployment-view "$DEPLOYMENTVIEW" --export-deployment-view-to-1_3 __dv_1_3.aadl
DEPLOYMENTVIEW=__dv_1_3.aadl
};
SKELS="./"
# Check if Dataview references existing files
mono $(which taste-extract-asn-from-design.exe) -i "$INTERFACEVIEW" -j /tmp/dv.asn
cd "$SKELS" && rm -f calling.zip && zip -r calling calling/* && cd $OLDPWD || exit -1
cd "$SKELS" && rm -f gnc.zip && zip -r gnc gnc/* && cd $OLDPWD || exit -1
cd "$SKELS" && rm -f fpga_reconfiguration_engine.zip && zip -r fpga_reconfiguration_engine fpga_reconfiguration_engine/* && cd $OLDPWD || exit -1
cd "$SKELS" && rm -f gnc2.zip && zip -r gnc2 gnc2/* && cd $OLDPWD || exit -1
[ ! -z "$CLEANUP" ] && rm -rf binary*
if [ -f ConcurrencyView.pro ]
then
ORCHESTRATOR_OPTIONS+=" -w ConcurrencyView.pro "
elif [ -f ConcurrencyView_Properties.aadl ]
then
ORCHESTRATOR_OPTIONS+=" -w ConcurrencyView_Properties.aadl "
fi
if [ -f user_init_post.sh ]
then
echo -e "${INFO} Executing user-defined post-init script"
source user_init_post.sh
fi
if [ -f additionalCommands.sh ]
then
source additionalCommands.sh
fi
if [ ! -z "$USE_POHIC" ]
then
OUTPUTDIR=binary.c
ORCHESTRATOR_OPTIONS+=" -p "
elif [ ! -z "$USE_POHIADA" ]
then
OUTPUTDIR=binary.ada
else
OUTPUTDIR=binary
fi
NO_BITFILE=""
while getopts :-: o
do
case "$o$OPTARG"
in
(-no-bitfile) NO_BITFILE="--no-bitfile";;
esac
done
cd "$CWD" && assert-builder-ocarina.py \
--fast \
$DEBUG_MODE \
--aadlv2 \
--keep-case \
$NO_BITFILE \
--interfaceView "$INTERFACEVIEW" \
--deploymentView "$DEPLOYMENTVIEW" \
-o "$OUTPUTDIR" \
--subC calling:"$SKELS"/calling.zip \
--subSIMULINK gnc:"$SKELS"/gnc.zip \
--subC fpga_reconfiguration_engine:"$SKELS"/fpga_reconfiguration_engine.zip \
--subSIMULINK gnc2:"$SKELS"/gnc2.zip \
$ORCHESTRATOR_OPTIONS
if [ -f user_init_last.sh ]
then
echo -e "${INFO} Executing user-defined post-build script"
source user_init_last.sh
fi
......@@ -20,6 +20,7 @@ char p_szGlobalState[10] = "modeX";
// Status is kept per Function Block and not for the full FPGA, to accommodate for future work on partial reconfiguration of the HW accelerator.
char globalFpgaStatus_gnc[20] = FPGA_DISABLED;
char globalFpgaStatus_gnc2[20] = FPGA_DISABLED;
char globalFpgaStatus_function1[20] = FPGA_DISABLED;
//uncomment the following define to print debug level info
//#define DEBUG_RECONF
......
TASTE-Dataview DEFINITIONS ::=
BEGIN
IMPORTS T-Int32, T-UInt32, T-Int8, T-UInt8, T-Boolean FROM TASTE-BasicTypes;
TASTE-Boolean ::= BOOLEAN
-- ASN.1 Type definitions must start with an uppercase
-- Field names in records (SEQUENCE) must start with a lowercase
-- Underscores are not allowed: use dash (hyphen)
MyInteger::= INTEGER (-411673351.. 763937697)
-- MyReal ::= REAL (0.0 .. 10.0)
Seq3 ::= SEQUENCE (SIZE (3)) OF MyInteger
Seq4 ::= SEQUENCE (SIZE (4)) OF MyInteger
Seqout ::= SEQUENCE (SIZE (8)) OF MyInteger
In-Nested ::= SEQUENCE {
inest-a SEQUENCE (SIZE (4)) OF T-Int32,
inest-b SEQUENCE (SIZE (3)) OF T-Int32
}
Out-Nested ::= SEQUENCE {
onest-a SEQUENCE (SIZE (7)) OF T-Int32
}
MyInt ::= INTEGER (0 .. 20)
My2ndInt ::= MyInt ( 1 .. 18)
AType ::= SEQUENCE {
blArray SEQUENCE (SIZE(10)) OF BOOLEAN
}
My2ndAType ::= AType
TypeEnumerated ::= ENUMERATED {
red(0),
green(1),
blue(2)
}
My2ndEnumerated ::= TypeEnumerated
T-STRING ::= OCTET STRING (SIZE(10..15))
T-ARR ::= SEQUENCE (SIZE (5..6)) OF INTEGER (0..32764)
T-ARR2 ::= SEQUENCE (SIZE (5..6)) OF REAL (0.1 .. 4.2)
T-BOOL ::= BOOLEAN
TypeNested ::= SEQUENCE {
intVal INTEGER(0..10),
int2Val INTEGER(-10..10),
int3Val MyInt (10..12),
intArray SEQUENCE (SIZE (10)) OF INTEGER (0..3),
octStrArray SEQUENCE (SIZE (10)) OF OCTET STRING (SIZE(1..10)),
boolArray SEQUENCE (SIZE (10)) OF T-BOOL,
enumArray SEQUENCE (SIZE (10)) OF TypeEnumerated,
enumValue TypeEnumerated,
enumValue2 ENUMERATED {
truism(0),
falsism(1)
},
label OCTET STRING (SIZE(10..40)),
bAlpha T-BOOL,
bBeta BOOLEAN,
sString T-STRING,
arr T-ARR,
arr2 T-ARR2
}
-- Simple types:
-- MyInteger ::= INTEGER (0..255)
-- MyReal ::= REAL (0.0 .. 1000.0)
-- MyBool ::= BOOLEAN
-- MyEnum ::= ENUMERATED { hello, world, how-are-you }
-- Complex types:
-- MySeq ::= SEQUENCE {
-- input-data MyInteger,
-- output-data MyInteger,
-- validity ENUMERATED { valid, invalid }
-- }
--
-- MyChoice ::= CHOICE {
-- a BOOLEAN,
-- b MySeq
-- }
--
-- MySeqOf ::= SEQUENCE (SIZE (2)) OF MyEnum
--
-- MyOctStr ::= OCTET STRING (SIZE (3))
--
-- -- You can also declare constants
-- myVar MySeqOf ::= { hello, world }
END
TASTE-BasicTypes DEFINITIONS ::=
BEGIN
-- Set of TASTE predefined basic types
T-Int32 ::= INTEGER (-2147483648 .. 2147483647)
T-UInt32 ::= INTEGER (0 .. 4294967295)
T-Int8 ::= INTEGER (-128 .. 127)
T-UInt8 ::= INTEGER (0 .. 255)
T-Boolean ::= BOOLEAN
END
TASTE-Dataview DEFINITIONS ::=
BEGIN
IMPORTS T-Int32, T-UInt32, T-Int8, T-UInt8, T-Boolean FROM TASTE-BasicTypes;
TASTE-Boolean ::= BOOLEAN
-- ASN.1 Type definitions must start with an uppercase
-- Field names in records (SEQUENCE) must start with a lowercase
-- Underscores are not allowed: use dash (hyphen)
MyInteger::= INTEGER (-411673351.. 763937697)
-- MyReal ::= REAL (0.0 .. 10.0)
Seq3 ::= SEQUENCE (SIZE (3)) OF MyInteger
Seq4 ::= SEQUENCE (SIZE (4)) OF MyInteger
Seqout ::= SEQUENCE (SIZE (8)) OF MyInteger
In-Nested ::= SEQUENCE {
inest-a SEQUENCE (SIZE (4)) OF T-Int32,
inest-b SEQUENCE (SIZE (3)) OF T-Int32
}
Out-Nested ::= SEQUENCE {
onest-a SEQUENCE (SIZE (7)) OF T-Int32
}
MyInt ::= INTEGER (0 .. 20)
My2ndInt ::= MyInt ( 1 .. 18)
AType ::= SEQUENCE {
blArray SEQUENCE (SIZE(10)) OF BOOLEAN
}
My2ndAType ::= AType
TypeEnumerated ::= ENUMERATED {
red(0),