Commit 6af46dde authored by Thanassis Tsiodras's avatar Thanassis Tsiodras

New test added for SAGE (testing Simulink outputs at runtime)

parent e264f9ab
TASTE-Dataview DEFINITIONS ::= BEGIN
-- In this ACN model, you can specify custom binary encoding rules for
-- your data types. For example if you require a specific memory layout
-- for a record, or need to add padding fields, define endianness, etc.
-- you can do that with ACN. Refer to the ACN user manual for details.
-- TASTE-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)
-- Simple types:
-- MyInteger ::= INTEGER (0..255)
-- MyReal ::= REAL (0.0 .. 1000.0)
-- MyBool ::= BOOLEAN
-- MyEnum ::= ENUMERATED { hello, world, how-are-you }
-- 16.16 fixed-point accuracy
FixedPoint ::= INTEGER ( -2147483648 .. 2147483647)
-- The input type that will be in the end sent to Simulink after conversion to 16.16
ControlLawInputType ::= SEQUENCE {
in1 REAL (0.0 .. 1023.0),
in2 REAL (-10.0 .. 25.0),
in3 REAL (-3.141592653 .. 3.141592653) DEFAULT 2.718123
}
-- The input type sent to Simulink, converted to FixedPoint (16.16)
ControlLawInputTypeSimulink ::= SEQUENCE {
in1 FixedPoint,
in2 FixedPoint,
in3 FixedPoint
}
-- The output type received from Simulink in FixedPoint (16.16)
ControlLawOutputTypeSimulink ::= SEQUENCE {
out1 FixedPoint,
out2 FixedPoint
}
-- The output type received from Simulink, converted back into REALs
ControlLawOutputType ::= SEQUENCE {
out1 REAL (0.0 .. 255.0),
out2 REAL (-128.0 .. 127.0)
}
--
-- 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
---------------------------------------------------
-- AADL2.1
-- TASTE type deploymentview
--
-- generated code: do not edit
---------------------------------------------------
PACKAGE deploymentview::DV::Node1
PUBLIC
WITH Taste;
WITH Deployment;
WITH TASTE_DV_Properties;
PROCESS x86_partition
END x86_partition;
PROCESS IMPLEMENTATION x86_partition.others
END x86_partition.others;
END deploymentview::DV::Node1;
PACKAGE deploymentview::DV
PUBLIC
WITH interfaceview::IV::TestSimulink;
WITH interfaceview::IV::PseudoSiimulink;
WITH interfaceview::IV::Ground;
WITH ocarina_processors_x86;
WITH deploymentview::DV::Node1;
WITH Taste;
WITH Deployment;
WITH interfaceview::IV;
WITH TASTE_DV_Properties;
SYSTEM Node1
END Node1;
SYSTEM IMPLEMENTATION Node1.others
SUBCOMPONENTS
IV_TestSimulink : SYSTEM interfaceview::IV::TestSimulink::TestSimulink.others {
Taste::FunctionName => "TestSimulink";
};
IV_PseudoSiimulink : SYSTEM interfaceview::IV::PseudoSiimulink::PseudoSiimulink.others {
Taste::FunctionName => "PseudoSiimulink";
};
IV_Ground : SYSTEM interfaceview::IV::Ground::Ground.others {
Taste::FunctionName => "Ground";
};
x86_partition : PROCESS deploymentview::DV::Node1::x86_partition.others {
Taste::coordinates => "119276 81412 161504 108188";
Deployment::Port_Number => 0;
};
x86_linux : PROCESSOR ocarina_processors_x86::x86.linux {
Taste::coordinates => "113997 73762 166783 112013";
};
PROPERTIES
Taste::APLC_Binding => (reference (x86_partition)) APPLIES TO IV_TestSimulink;
Taste::APLC_Binding => (reference (x86_partition)) APPLIES TO IV_PseudoSiimulink;
Taste::APLC_Binding => (reference (x86_partition)) APPLIES TO IV_Ground;
Actual_Processor_Binding => (reference (x86_linux)) APPLIES TO x86_partition;
END Node1.others;
SYSTEM deploymentview
END deploymentview;
SYSTEM IMPLEMENTATION deploymentview.others
SUBCOMPONENTS
Node1 : SYSTEM Node1.others {
Taste::coordinates => "107399 62833 173381 117477";
};
interfaceview : SYSTEM interfaceview::IV::interfaceview.others;
END deploymentview.others;
PROPERTIES
Taste::coordinates => "0 0 297000 210000";
Taste::version => "2.0";
Taste::interfaceView => "InterfaceView.aadl";
Taste::HWLibraries => ("/home/taste/tool-inst/share/ocarina/AADLv2/ocarina_components.aadl");
END deploymentview::DV;
---------------------------------------------------
-- AADL2.1
-- TASTE type interfaceview
--
-- generated code: do not edit
---------------------------------------------------
PACKAGE interfaceview::IV::TestSimulink
PUBLIC
WITH interfaceview::IV::PseudoSiimulink;
WITH interfaceview::IV::Ground;
WITH Taste;
WITH DataView;
WITH TASTE_IV_Properties;
SUBPROGRAM RI_someControlLaw
FEATURES
inpSensors : IN PARAMETER DataView::ControlLawInputTypeSimulink {
Taste::encoding => NATIVE;
};
outpToEngine : OUT PARAMETER DataView::ControlLawOutputTypeSimulink {
Taste::encoding => NATIVE;
};
END RI_someControlLaw;
SUBPROGRAM IMPLEMENTATION RI_someControlLaw.others
END RI_someControlLaw.others;
SUBPROGRAM PI_TC_from_gnd
FEATURES
inputDataForSimulinkControlLaw : IN PARAMETER DataView::ControlLawInputType {
Taste::encoding => UPER;
};
END PI_TC_from_gnd;
SUBPROGRAM IMPLEMENTATION PI_TC_from_gnd.others
PROPERTIES
Compute_Execution_Time => 0 ms .. 0 ms;
END PI_TC_from_gnd.others;
SUBPROGRAM RI_TM_from_Simulink
FEATURES
outputDataFromSimulink : IN PARAMETER DataView::ControlLawOutputType {
Taste::encoding => UPER;
};
END RI_TM_from_Simulink;
SUBPROGRAM IMPLEMENTATION RI_TM_from_Simulink.others
END RI_TM_from_Simulink.others;
SYSTEM TestSimulink
FEATURES
RI_someControlLaw : REQUIRES SUBPROGRAM ACCESS interfaceview::IV::PseudoSiimulink::PI_someControlLaw.others {
Taste::coordinates => "122831 70237";
Taste::RCMoperationKind => any;
Taste::InterfaceName => "someControlLaw";
Taste::labelInheritance => "true";
};
PI_TC_from_gnd : PROVIDES SUBPROGRAM ACCESS interfaceview::IV::TestSimulink::PI_TC_from_gnd.others {
Taste::coordinates => "96847 84407";
Taste::RCMoperationKind => sporadic;
Taste::InterfaceName => "TC_from_gnd";
};
RI_TM_from_Simulink : REQUIRES SUBPROGRAM ACCESS interfaceview::IV::Ground::PI_TM_from_Simulink.others {
Taste::coordinates => "115115 84407";
Taste::RCMoperationKind => any;
Taste::InterfaceName => "TM_from_Simulink";
Taste::labelInheritance => "true";
};
PROPERTIES
Source_Language => (C);
Taste::Active_Interfaces => any;
END TestSimulink;
SYSTEM IMPLEMENTATION TestSimulink.others
END TestSimulink.others;
END interfaceview::IV::TestSimulink;
PACKAGE interfaceview::IV::PseudoSiimulink
PUBLIC
WITH Taste;
WITH DataView;
WITH TASTE_IV_Properties;
SUBPROGRAM PI_someControlLaw
FEATURES
inpSensors : IN PARAMETER DataView::ControlLawInputTypeSimulink {
Taste::encoding => NATIVE;
};
outpToEngine : OUT PARAMETER DataView::ControlLawOutputTypeSimulink {
Taste::encoding => NATIVE;
};
END PI_someControlLaw;
SUBPROGRAM IMPLEMENTATION PI_someControlLaw.others
PROPERTIES
Compute_Execution_Time => 0 ms .. 0 ms;
END PI_someControlLaw.others;
SYSTEM PseudoSiimulink
FEATURES
PI_someControlLaw : PROVIDES SUBPROGRAM ACCESS interfaceview::IV::PseudoSiimulink::PI_someControlLaw.others {
Taste::coordinates => "150233 66141";
Taste::RCMoperationKind => unprotected;
Taste::InterfaceName => "someControlLaw";
};
PROPERTIES
Source_Language => (C);
Taste::Active_Interfaces => any;
END PseudoSiimulink;
SYSTEM IMPLEMENTATION PseudoSiimulink.others
END PseudoSiimulink.others;
END interfaceview::IV::PseudoSiimulink;
PACKAGE interfaceview::IV::Ground
PUBLIC
WITH interfaceview::IV::TestSimulink;
WITH Taste;
WITH DataView;
WITH TASTE_IV_Properties;
SUBPROGRAM RI_TC_from_gnd
FEATURES
inputDataForSimulinkControlLaw : IN PARAMETER DataView::ControlLawInputType {
Taste::encoding => UPER;
};
END RI_TC_from_gnd;
SUBPROGRAM IMPLEMENTATION RI_TC_from_gnd.others
END RI_TC_from_gnd.others;
SUBPROGRAM PI_TM_from_Simulink
FEATURES
outputDataFromSimulink : IN PARAMETER DataView::ControlLawOutputType {
Taste::encoding => UPER;
};
END PI_TM_from_Simulink;
SUBPROGRAM IMPLEMENTATION PI_TM_from_Simulink.others
PROPERTIES
Compute_Execution_Time => 0 ms .. 0 ms;
END PI_TM_from_Simulink.others;
SYSTEM Ground
FEATURES
RI_TC_from_gnd : REQUIRES SUBPROGRAM ACCESS interfaceview::IV::TestSimulink::PI_TC_from_gnd.others {
Taste::coordinates => "100314 100155";
Taste::RCMoperationKind => any;
Taste::InterfaceName => "TC_from_gnd";
Taste::labelInheritance => "true";
};
PI_TM_from_Simulink : PROVIDES SUBPROGRAM ACCESS interfaceview::IV::Ground::PI_TM_from_Simulink.others {
Taste::coordinates => "111339 100155";
Taste::RCMoperationKind => sporadic;
Taste::InterfaceName => "TM_from_Simulink";
};
PROPERTIES
Source_Language => (GUI);
Taste::Active_Interfaces => any;
END Ground;
SYSTEM IMPLEMENTATION Ground.others
END Ground.others;
END interfaceview::IV::Ground;
PACKAGE interfaceview::IV
PUBLIC
WITH interfaceview::IV::TestSimulink;
WITH interfaceview::IV::PseudoSiimulink;
WITH interfaceview::IV::Ground;
WITH Taste;
WITH DataView;
WITH TASTE_IV_Properties;
SYSTEM interfaceview
PROPERTIES
Taste::dataView => ("DataView");
Taste::dataViewPath => ("DataView.aadl");
END interfaceview;
SYSTEM IMPLEMENTATION interfaceview.others
SUBCOMPONENTS
TestSimulink : SYSTEM interfaceview::IV::TestSimulink::TestSimulink.others {
Taste::coordinates => "88344 51337 122831 84407";
};
PseudoSiimulink : SYSTEM interfaceview::IV::PseudoSiimulink::PseudoSiimulink.others {
Taste::coordinates => "150233 56692 179839 88975";
};
Ground : SYSTEM interfaceview::IV::Ground::Ground.others {
Taste::coordinates => "90864 100155 125194 133382";
};
CONNECTIONS
PseudoSiimulink_PI_someControlLaw_TestSimulink_RI_someControlLaw : SUBPROGRAM ACCESS PseudoSiimulink.PI_someControlLaw -> TestSimulink.RI_someControlLaw {
Taste::coordinates => "122831 70237 136453 70237 136453 66141 150233 66141";
};
TestSimulink_PI_TC_from_gnd_Ground_RI_TC_from_gnd : SUBPROGRAM ACCESS TestSimulink.PI_TC_from_gnd -> Ground.RI_TC_from_gnd {
Taste::coordinates => "100314 100155 100314 89919 96847 89919 96847 84407";
};
Ground_PI_TM_from_Simulink_TestSimulink_RI_TM_from_Simulink : SUBPROGRAM ACCESS Ground.PI_TM_from_Simulink -> TestSimulink.RI_TM_from_Simulink {
Taste::coordinates => "115115 84407 115115 92281 111339 92281 111339 100155";
};
END interfaceview.others;
PROPERTIES
Taste::dataView => ("DataView");
Taste::dataViewPath => ("DataView.aadl");
Taste::coordinates => "0 0 297000 210000";
Taste::version => "2.0";
END interfaceview::IV;
0824b084da7924c94d389a418fcf27ec 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 testsimulink.zip && zip -r testsimulink testsimulink/* && cd $OLDPWD
cd "$SKELS" && rm -f pseudosiimulink.zip && zip -r pseudosiimulink pseudosiimulink/* && cd $OLDPWD
[ ! -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
cd "$CWD" && assert-builder-ocarina.py \
--fast \
$DEBUG_MODE \
--aadlv2 \
--keep-case \
--interfaceView "$INTERFACEVIEW" \
--deploymentView "$DEPLOYMENTVIEW" \
-o "$OUTPUTDIR" \
--subC testsimulink:"$SKELS"/testsimulink.zip \
--subC pseudosiimulink:"$SKELS"/pseudosiimulink.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
#!/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 testsimulink.zip && zip -r testsimulink testsimulink/* && cd $OLDPWD
cd "$SKELS" && rm -f pseudosiimulink.zip && zip -r pseudosiimulink pseudosiimulink/* && cd $OLDPWD
[ ! -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
cd "$CWD" && assert-builder-ocarina.py \
--fast \
$DEBUG_MODE \
--aadlv2 \
--keep-case \
--interfaceView "$INTERFACEVIEW" \
--deploymentView "$DEPLOYMENTVIEW" \
-o "$OUTPUTDIR" \
--subC testsimulink:"$SKELS"/testsimulink.zip \
--subSIMULINK pseudosiimulink:"$SKELS"/pseudosiimulink.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
T_UInt8 = Simulink.AliasType;
T_UInt8.BaseType = 'uint8';
T_UInt8.Description = 'range is (0, 255)';
FixedPoint = Simulink.AliasType;
FixedPoint.BaseType = 'int32';
FixedPoint.Description = 'range is (-2147483648, 2147483647)';
ControlLawOutputType_elem01=Simulink.BusElement;
ControlLawOutputType_elem01.name='out1';
ControlLawOutputType_elem01.DataType='double';
ControlLawOutputType_elem01.dimensions=1;
ControlLawOutputType_elem02=Simulink.BusElement;
ControlLawOutputType_elem02.name='out2';
ControlLawOutputType_elem02.DataType='double';
ControlLawOutputType_elem02.dimensions=1;
ControlLawOutputType = Simulink.Bus;
ControlLawOutputType.Elements = [ControlLawOutputType_elem01 ControlLawOutputType_elem02 ];
ControlLawOutputTypeSimulink_elem01=Simulink.BusElement;
ControlLawOutputTypeSimulink_elem01.name='out1';
ControlLawOutputTypeSimulink_elem01.DataType='int32';
ControlLawOutputTypeSimulink_elem01.dimensions=1;
ControlLawOutputTypeSimulink_elem02=Simulink.BusElement;
ControlLawOutputTypeSimulink_elem02.name='out2';
ControlLawOutputTypeSimulink_elem02.DataType='int32';
ControlLawOutputTypeSimulink_elem02.dimensions=1;
ControlLawOutputTypeSimulink = Simulink.Bus;
ControlLawOutputTypeSimulink.Elements = [ControlLawOutputTypeSimulink_elem01 ControlLawOutputTypeSimulink_elem02 ];
ControlLawInputType_elem01=Simulink.BusElement;
ControlLawInputType_elem01.name='in1';
ControlLawInputType_elem01.DataType='double';
ControlLawInputType_elem01.dimensions=1;
ControlLawInputType_elem02=Simulink.BusElement;
ControlLawInputType_elem02.name='in2';
ControlLawInputType_elem02.DataType='double';
ControlLawInputType_elem02.dimensions=1;
ControlLawInputType_elem03=Simulink.BusElement;
ControlLawInputType_elem03.name='in3';
ControlLawInputType_elem03.DataType='double';
ControlLawInputType_elem03.dimensions=1;
ControlLawInputType = Simulink.Bus;
ControlLawInputType.Elements = [ControlLawInputType_elem01 ControlLawInputType_elem02 ControlLawInputType_elem03 ];
T_Boolean = Simulink.AliasType;
T_Boolean.BaseType = 'boolean';
T_Boolean.Description = 'A simple BOOLEAN';
T_Int8 = Simulink.AliasType;
T_Int8.BaseType = 'int8';
T_Int8.Description = 'range is (-128, 127)';