Skip to content

Commit 4b0fd0d

Browse files
committed
Implement NvDataInterface and ParameterInterface
1 parent 54316e0 commit 4b0fd0d

14 files changed

+1032
-64
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@ Non-collectable elements are various sub-elements to collectable elements.
1111

1212
#### XML Port interface elements
1313

14+
* NvDataInterface | NV-DATA-INTERFACE | `collectable`
15+
* ParameterInterface | PARAMETER-INTERFACE | `collectable`
1416
* SenderReceiverInterface | SENDER-RECEIVER-INTERFACE | `collectable`
1517
* InvalidationPolicy | INVALIDATION-POLICY
1618

1719
#### XML - Data type elements
1820

21+
* ParameterDataPrototype | PARAMETER-DATA-PROTOTYPE
1922
* VariableDataPrototype | VARIABLE-DATA-PROTOTYPE
2023

2124
## [v0.5.1] - 2023-11-09
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<AUTOSAR xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00051.xsd" xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3+
<AR-PACKAGES>
4+
<AR-PACKAGE>
5+
<SHORT-NAME>DataTypes</SHORT-NAME>
6+
<AR-PACKAGES>
7+
<AR-PACKAGE>
8+
<SHORT-NAME>ImplementationDataTypes</SHORT-NAME>
9+
<ELEMENTS>
10+
<IMPLEMENTATION-DATA-TYPE>
11+
<SHORT-NAME>InactiveActive_T</SHORT-NAME>
12+
<CATEGORY>VALUE</CATEGORY>
13+
<SW-DATA-DEF-PROPS>
14+
<SW-DATA-DEF-PROPS-VARIANTS>
15+
<SW-DATA-DEF-PROPS-CONDITIONAL>
16+
<BASE-TYPE-REF DEST="SW-BASE-TYPE">AUTOSAR_Platform/BaseTypes/uint8</BASE-TYPE-REF>
17+
</SW-DATA-DEF-PROPS-CONDITIONAL>
18+
</SW-DATA-DEF-PROPS-VARIANTS>
19+
</SW-DATA-DEF-PROPS>
20+
</IMPLEMENTATION-DATA-TYPE>
21+
</ELEMENTS>
22+
</AR-PACKAGE>
23+
</AR-PACKAGES>
24+
</AR-PACKAGE>
25+
</AR-PACKAGES>
26+
</AUTOSAR>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<AUTOSAR xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00051.xsd" xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3+
<AR-PACKAGES>
4+
<AR-PACKAGE>
5+
<SHORT-NAME>PortInterfaces</SHORT-NAME>
6+
<ELEMENTS>
7+
<NV-DATA-INTERFACE>
8+
<SHORT-NAME>DataInterface1</SHORT-NAME>
9+
<NV-DATAS>
10+
<VARIABLE-DATA-PROTOTYPE>
11+
<SHORT-NAME>Data1</SHORT-NAME>
12+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/uint8</TYPE-TREF>
13+
</VARIABLE-DATA-PROTOTYPE>
14+
</NV-DATAS>
15+
</NV-DATA-INTERFACE>
16+
<NV-DATA-INTERFACE>
17+
<SHORT-NAME>DataInterface2</SHORT-NAME>
18+
<NV-DATAS>
19+
<VARIABLE-DATA-PROTOTYPE>
20+
<SHORT-NAME>Data1</SHORT-NAME>
21+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/uint8</TYPE-TREF>
22+
</VARIABLE-DATA-PROTOTYPE>
23+
<VARIABLE-DATA-PROTOTYPE>
24+
<SHORT-NAME>Data2</SHORT-NAME>
25+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/uint8</TYPE-TREF>
26+
</VARIABLE-DATA-PROTOTYPE>
27+
</NV-DATAS>
28+
</NV-DATA-INTERFACE>
29+
</ELEMENTS>
30+
</AR-PACKAGE>
31+
</AR-PACKAGES>
32+
</AUTOSAR>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<AUTOSAR xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00051.xsd" xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3+
<AR-PACKAGES>
4+
<AR-PACKAGE>
5+
<SHORT-NAME>PortInterfaces</SHORT-NAME>
6+
<ELEMENTS>
7+
<PARAMETER-INTERFACE>
8+
<SHORT-NAME>ParameterInterface1</SHORT-NAME>
9+
<PARAMETERS>
10+
<PARAMETER-DATA-PROTOTYPE>
11+
<SHORT-NAME>Param1</SHORT-NAME>
12+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/uint8</TYPE-TREF>
13+
</PARAMETER-DATA-PROTOTYPE>
14+
</PARAMETERS>
15+
</PARAMETER-INTERFACE>
16+
<PARAMETER-INTERFACE>
17+
<SHORT-NAME>ParameterInterface2</SHORT-NAME>
18+
<PARAMETERS>
19+
<PARAMETER-DATA-PROTOTYPE>
20+
<SHORT-NAME>Param1</SHORT-NAME>
21+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/uint8</TYPE-TREF>
22+
</PARAMETER-DATA-PROTOTYPE>
23+
<PARAMETER-DATA-PROTOTYPE>
24+
<SHORT-NAME>Param2</SHORT-NAME>
25+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/uint8</TYPE-TREF>
26+
</PARAMETER-DATA-PROTOTYPE>
27+
</PARAMETERS>
28+
</PARAMETER-INTERFACE>
29+
</ELEMENTS>
30+
</AR-PACKAGE>
31+
</AR-PACKAGES>
32+
</AUTOSAR>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<AUTOSAR xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00051.xsd" xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3+
<AR-PACKAGES>
4+
<AR-PACKAGE>
5+
<SHORT-NAME>AUTOSAR_Platform</SHORT-NAME>
6+
<AR-PACKAGES>
7+
<AR-PACKAGE>
8+
<SHORT-NAME>BaseTypes</SHORT-NAME>
9+
<ELEMENTS>
10+
<SW-BASE-TYPE>
11+
<SHORT-NAME>uint8</SHORT-NAME>
12+
<BASE-TYPE-SIZE>8</BASE-TYPE-SIZE>
13+
</SW-BASE-TYPE>
14+
</ELEMENTS>
15+
</AR-PACKAGE>
16+
<AR-PACKAGE>
17+
<SHORT-NAME>ImplementationDataTypes</SHORT-NAME>
18+
<ELEMENTS>
19+
<IMPLEMENTATION-DATA-TYPE>
20+
<SHORT-NAME>uint8</SHORT-NAME>
21+
<CATEGORY>VALUE</CATEGORY>
22+
<SW-DATA-DEF-PROPS>
23+
<SW-DATA-DEF-PROPS-VARIANTS>
24+
<SW-DATA-DEF-PROPS-CONDITIONAL>
25+
<BASE-TYPE-REF DEST="SW-BASE-TYPE">/AUTOSAR_Platform/BaseTypes/uint8</BASE-TYPE-REF>
26+
</SW-DATA-DEF-PROPS-CONDITIONAL>
27+
</SW-DATA-DEF-PROPS-VARIANTS>
28+
</SW-DATA-DEF-PROPS>
29+
</IMPLEMENTATION-DATA-TYPE>
30+
</ELEMENTS>
31+
</AR-PACKAGE>
32+
</AR-PACKAGES>
33+
</AR-PACKAGE>
34+
</AR-PACKAGES>
35+
</AUTOSAR>

examples/xml/port_interface/data/sender_receiver_interface.arxml

+13
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,19 @@
1313
</VARIABLE-DATA-PROTOTYPE>
1414
</DATA-ELEMENTS>
1515
</SENDER-RECEIVER-INTERFACE>
16+
<SENDER-RECEIVER-INTERFACE>
17+
<SHORT-NAME>InterfaceName</SHORT-NAME>
18+
<DATA-ELEMENTS>
19+
<VARIABLE-DATA-PROTOTYPE>
20+
<SHORT-NAME>Element1</SHORT-NAME>
21+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/DataTypes/ImplementationDataTypes/InactiveActive_T</TYPE-TREF>
22+
</VARIABLE-DATA-PROTOTYPE>
23+
<VARIABLE-DATA-PROTOTYPE>
24+
<SHORT-NAME>Element2</SHORT-NAME>
25+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/DataTypes/ImplementationDataTypes/InactiveActive_T</TYPE-TREF>
26+
</VARIABLE-DATA-PROTOTYPE>
27+
</DATA-ELEMENTS>
28+
</SENDER-RECEIVER-INTERFACE>
1629
</ELEMENTS>
1730
</AR-PACKAGE>
1831
</AR-PACKAGES>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
"""
2+
Sender-receiver port interface examples
3+
"""
4+
import os
5+
import autosar
6+
import autosar.xml.element as ar_element
7+
8+
9+
def create_platform_types(packages: dict[str, ar_element.Package]):
10+
"""
11+
Creates necessary platform types
12+
"""
13+
uint8_base_type = ar_element.SwBaseType('uint8', size=8)
14+
packages["PlatformBaseTypes"].append(uint8_base_type)
15+
sw_data_def_props = ar_element.SwDataDefPropsConditional(base_type_ref=uint8_base_type.ref())
16+
uint8_impl_type = ar_element.ImplementationDataType("uint8",
17+
category="VALUE",
18+
sw_data_def_props=sw_data_def_props)
19+
packages["PlatformImplementationDataTypes"].append(uint8_impl_type)
20+
21+
22+
def create_nv_data_interface_with_one_element(packages: dict[str, ar_element.Package]):
23+
"""
24+
Creates interface with one element
25+
"""
26+
uint8_type: ar_element.ImplementationDataType = packages["PlatformImplementationDataTypes"].find("uint8")
27+
portinterface = ar_element.NvDataInterface("DataInterface1")
28+
portinterface.make_data_element("Data1", type_ref=uint8_type.ref())
29+
packages["PortInterfaces"].append(portinterface)
30+
31+
32+
def create_nv_data_interface_with_two_elements(packages: dict[str, ar_element.Package]):
33+
"""
34+
Creates interface with two elements
35+
"""
36+
uint8_type: ar_element.ImplementationDataType = packages["PlatformImplementationDataTypes"].find("uint8")
37+
portinterface = ar_element.NvDataInterface("DataInterface2")
38+
portinterface.make_data_element("Data1", type_ref=uint8_type.ref())
39+
portinterface.make_data_element("Data2", type_ref=uint8_type.ref())
40+
packages["PortInterfaces"].append(portinterface)
41+
42+
43+
def save_xml_files(workspace: autosar.xml.Workspace):
44+
"""
45+
Saves workspace as XML documents
46+
"""
47+
interface_document_path = os.path.abspath(os.path.join(os.path.dirname(
48+
__file__), 'data', 'nv_data_interface.arxml'))
49+
platform_document_path = os.path.abspath(os.path.join(os.path.dirname(
50+
__file__), 'data', 'platform.arxml'))
51+
workspace.create_document(interface_document_path, packages="/PortInterfaces")
52+
workspace.create_document(platform_document_path, packages="/AUTOSAR_Platform")
53+
workspace.write_documents()
54+
55+
56+
def main():
57+
"""
58+
Main
59+
"""
60+
workspace = autosar.xml.Workspace()
61+
packages = dict(zip(["PlatformBaseTypes",
62+
"PlatformImplementationDataTypes",
63+
"PortInterfaces"],
64+
workspace.make_packages("AUTOSAR_Platform/BaseTypes",
65+
"AUTOSAR_Platform/ImplementationDataTypes",
66+
"PortInterfaces")))
67+
create_platform_types(packages)
68+
create_nv_data_interface_with_one_element(packages)
69+
create_nv_data_interface_with_two_elements(packages)
70+
save_xml_files(workspace)
71+
72+
73+
if __name__ == "__main__":
74+
main()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
"""
2+
Sender-receiver port interface examples
3+
"""
4+
import os
5+
import autosar
6+
import autosar.xml.element as ar_element
7+
8+
9+
def create_platform_types(packages: dict[str, ar_element.Package]):
10+
"""
11+
Creates necessary platform types
12+
"""
13+
uint8_base_type = ar_element.SwBaseType('uint8', size=8)
14+
packages["PlatformBaseTypes"].append(uint8_base_type)
15+
sw_data_def_props = ar_element.SwDataDefPropsConditional(base_type_ref=uint8_base_type.ref())
16+
uint8_impl_type = ar_element.ImplementationDataType("uint8",
17+
category="VALUE",
18+
sw_data_def_props=sw_data_def_props)
19+
packages["PlatformImplementationDataTypes"].append(uint8_impl_type)
20+
21+
22+
def create_parameter_interface_with_one_parameter(packages: dict[str, ar_element.Package]):
23+
"""
24+
Creates interface with one parameter
25+
"""
26+
uint8_type: ar_element.ImplementationDataType = packages["PlatformImplementationDataTypes"].find("uint8")
27+
portinterface = ar_element.ParameterInterface("ParameterInterface1")
28+
portinterface.make_parameter("Param1", type_ref=uint8_type.ref())
29+
packages["PortInterfaces"].append(portinterface)
30+
31+
32+
def create_parameter_interface_with_two_parameters(packages: dict[str, ar_element.Package]):
33+
"""
34+
Creates interface with two parameters
35+
"""
36+
uint8_type: ar_element.ImplementationDataType = packages["PlatformImplementationDataTypes"].find("uint8")
37+
portinterface = ar_element.ParameterInterface("ParameterInterface2")
38+
portinterface.make_parameter("Param1", type_ref=uint8_type.ref())
39+
portinterface.make_parameter("Param2", type_ref=uint8_type.ref())
40+
packages["PortInterfaces"].append(portinterface)
41+
42+
43+
def save_xml_files(workspace: autosar.xml.Workspace):
44+
"""
45+
Saves workspace as XML documents
46+
"""
47+
interface_document_path = os.path.abspath(os.path.join(os.path.dirname(
48+
__file__), 'data', 'parameter_interface.arxml'))
49+
platform_document_path = os.path.abspath(os.path.join(os.path.dirname(
50+
__file__), 'data', 'platform.arxml'))
51+
workspace.create_document(interface_document_path, packages="/PortInterfaces")
52+
workspace.create_document(platform_document_path, packages="/AUTOSAR_Platform")
53+
workspace.write_documents()
54+
55+
56+
def main():
57+
"""
58+
Main
59+
"""
60+
workspace = autosar.xml.Workspace()
61+
packages = dict(zip(["PlatformBaseTypes",
62+
"PlatformImplementationDataTypes",
63+
"PortInterfaces"],
64+
workspace.make_packages("AUTOSAR_Platform/BaseTypes",
65+
"AUTOSAR_Platform/ImplementationDataTypes",
66+
"PortInterfaces")))
67+
create_platform_types(packages)
68+
create_parameter_interface_with_one_parameter(packages)
69+
create_parameter_interface_with_two_parameters(packages)
70+
save_xml_files(workspace)
71+
72+
73+
if __name__ == "__main__":
74+
main()

0 commit comments

Comments
 (0)