Skip to content

Commit 334a0df

Browse files
committed
Add port creation helper methods
1 parent 92c674c commit 334a0df

10 files changed

+624
-67
lines changed

examples/xml/component/application_component.py

+26-20
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import os
55
import autosar
66
import autosar.xml.element as ar_element
7-
import autosar.xml.enumeration as ar_enum
87

98

109
def create_platform_types(packages: dict[str, ar_element.Package]):
@@ -50,17 +49,6 @@ def create_platform_types(packages: dict[str, ar_element.Package]):
5049
packages["PlatformImplementationDataTypes"].append(uint32_impl_type)
5150

5251

53-
# def create_implementation_data_types(packages: dict[str, ar_element.Package]):
54-
# """
55-
# Creates non-platform implementation data types
56-
# """
57-
# sw_data_def_props = ar_element.SwDataDefPropsConditional(base_type_ref="AUTOSAR_Platform/BaseTypes/uint8")
58-
# inactive_active_t = ar_element.ImplementationDataType("InactiveActive_T",
59-
# category="VALUE",
60-
# sw_data_def_props=sw_data_def_props)
61-
# packages["ImplementationDataTypes"].append(inactive_active_t)
62-
63-
6452
def create_sender_receiver_port_interfaces(packages: dict[str, ar_element.Package]):
6553
"""
6654
Create sender-receiver port interfaces used in example
@@ -69,9 +57,6 @@ def create_sender_receiver_port_interfaces(packages: dict[str, ar_element.Packag
6957
port_interface = ar_element.SenderReceiverInterface("VehicleSpeed_I")
7058
port_interface.create_data_element("VehicleSpeed", type_ref=uint16_impl_t.ref())
7159
packages["PortInterfaces"].append(port_interface)
72-
port_interface = ar_element.SenderReceiverInterface("EngineSpeed_I")
73-
port_interface.create_data_element("EngineSpeed", type_ref=uint16_impl_t.ref())
74-
packages["PortInterfaces"].append(port_interface)
7560

7661

7762
def create_client_server_interfaces(packages: dict[str, ar_element.Package]):
@@ -90,19 +75,37 @@ def create_client_server_interfaces(packages: dict[str, ar_element.Package]):
9075
packages["PortInterfaces"].append(interface)
9176

9277

78+
def create_application_component(packages: dict[str, ar_element.Package]):
79+
"""
80+
Creates application component with one sender-receiver port and one
81+
client-server port
82+
"""
83+
timer_interface = packages["PortInterfaces"].find("FreeRunningTimer_I")
84+
vehicle_speed_interface = packages["PortInterfaces"].find("VehicleSpeed_I")
85+
swc = ar_element.ApplicationSoftwareComponentType("MyApplication")
86+
swc.create_require_port("VehicleSpeed", vehicle_speed_interface, com_spec={"init_value": 65535,
87+
'alive_timeout': 0,
88+
'enable_update': False,
89+
'uses_end_to_end_protection': False,
90+
'handle_never_received': False
91+
})
92+
swc.create_require_port("FreeRunningTimer", timer_interface)
93+
packages["ComponentTypes"].append(swc)
94+
95+
9396
def save_xml_files(workspace: autosar.xml.Workspace):
9497
"""
9598
Saves workspace as XML documents
9699
"""
97100
interface_document_path = os.path.abspath(os.path.join(os.path.dirname(
98101
__file__), 'data', 'portinterfaces.arxml'))
99-
datatype_document_path = os.path.abspath(os.path.join(os.path.dirname(
100-
__file__), 'data', 'datatypes.arxml'))
101102
platform_document_path = os.path.abspath(os.path.join(os.path.dirname(
102103
__file__), 'data', 'platform.arxml'))
104+
component_document_path = os.path.abspath(os.path.join(os.path.dirname(
105+
__file__), 'data', 'MyApplication.arxml'))
103106
workspace.create_document(interface_document_path, packages="/PortInterfaces")
104-
workspace.create_document(datatype_document_path, packages="/DataTypes")
105107
workspace.create_document(platform_document_path, packages="/AUTOSAR_Platform")
108+
workspace.create_document(component_document_path, packages="/ComponentTypes")
106109
workspace.write_documents()
107110

108111

@@ -116,16 +119,19 @@ def main():
116119
"PlatformDataConstraints",
117120
"PlatformCompuMethods",
118121
"ImplementationDataTypes",
119-
"PortInterfaces"],
122+
"PortInterfaces",
123+
"ComponentTypes"],
120124
workspace.make_packages("AUTOSAR_Platform/BaseTypes",
121125
"AUTOSAR_Platform/ImplementationDataTypes",
122126
"AUTOSAR_Platform/DataConstraints",
123127
"AUTOSAR_Platform/CompuMethods",
124128
"DataTypes/ImplementationDataTypes",
125-
"PortInterfaces")))
129+
"PortInterfaces",
130+
"ComponentTypes")))
126131
create_platform_types(packages)
127132
create_sender_receiver_port_interfaces(packages)
128133
create_client_server_interfaces(packages)
134+
create_application_component(packages)
129135
save_xml_files(workspace)
130136

131137

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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>ComponentTypes</SHORT-NAME>
6+
<ELEMENTS>
7+
<APPLICATION-SW-COMPONENT-TYPE>
8+
<SHORT-NAME>MyApplication</SHORT-NAME>
9+
<PORTS>
10+
<R-PORT-PROTOTYPE>
11+
<SHORT-NAME>VehicleSpeed</SHORT-NAME>
12+
<REQUIRED-COM-SPECS>
13+
<NONQUEUED-RECEIVER-COM-SPEC>
14+
<DATA-ELEMENT-REF DEST="VARIABLE-DATA-PROTOTYPE">/PortInterfaces/VehicleSpeed_I/VehicleSpeed</DATA-ELEMENT-REF>
15+
<USES-END-TO-END-PROTECTION>false</USES-END-TO-END-PROTECTION>
16+
<ALIVE-TIMEOUT>0</ALIVE-TIMEOUT>
17+
<ENABLE-UPDATE>false</ENABLE-UPDATE>
18+
<HANDLE-NEVER-RECEIVED>false</HANDLE-NEVER-RECEIVED>
19+
<INIT-VALUE>
20+
<NUMERICAL-VALUE-SPECIFICATION>
21+
<VALUE>65535</VALUE>
22+
</NUMERICAL-VALUE-SPECIFICATION>
23+
</INIT-VALUE>
24+
</NONQUEUED-RECEIVER-COM-SPEC>
25+
</REQUIRED-COM-SPECS>
26+
<REQUIRED-INTERFACE-TREF DEST="SENDER-RECEIVER-INTERFACE">/PortInterfaces/VehicleSpeed_I</REQUIRED-INTERFACE-TREF>
27+
</R-PORT-PROTOTYPE>
28+
<R-PORT-PROTOTYPE>
29+
<SHORT-NAME>FreeRunningTimer</SHORT-NAME>
30+
<REQUIRED-INTERFACE-TREF DEST="CLIENT-SERVER-INTERFACE">/PortInterfaces/FreeRunningTimer_I</REQUIRED-INTERFACE-TREF>
31+
</R-PORT-PROTOTYPE>
32+
</PORTS>
33+
</APPLICATION-SW-COMPONENT-TYPE>
34+
</ELEMENTS>
35+
</AR-PACKAGE>
36+
</AR-PACKAGES>
37+
</AUTOSAR>
+128
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
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>boolean</SHORT-NAME>
12+
<BASE-TYPE-SIZE>8</BASE-TYPE-SIZE>
13+
<BASE-TYPE-ENCODING>BOOLEAN</BASE-TYPE-ENCODING>
14+
</SW-BASE-TYPE>
15+
<SW-BASE-TYPE>
16+
<SHORT-NAME>uint8</SHORT-NAME>
17+
<BASE-TYPE-SIZE>8</BASE-TYPE-SIZE>
18+
</SW-BASE-TYPE>
19+
<SW-BASE-TYPE>
20+
<SHORT-NAME>uint16</SHORT-NAME>
21+
<BASE-TYPE-SIZE>16</BASE-TYPE-SIZE>
22+
</SW-BASE-TYPE>
23+
<SW-BASE-TYPE>
24+
<SHORT-NAME>uint32</SHORT-NAME>
25+
<BASE-TYPE-SIZE>32</BASE-TYPE-SIZE>
26+
</SW-BASE-TYPE>
27+
</ELEMENTS>
28+
</AR-PACKAGE>
29+
<AR-PACKAGE>
30+
<SHORT-NAME>ImplementationDataTypes</SHORT-NAME>
31+
<ELEMENTS>
32+
<IMPLEMENTATION-DATA-TYPE>
33+
<SHORT-NAME>boolean</SHORT-NAME>
34+
<CATEGORY>VALUE</CATEGORY>
35+
<SW-DATA-DEF-PROPS>
36+
<SW-DATA-DEF-PROPS-VARIANTS>
37+
<SW-DATA-DEF-PROPS-CONDITIONAL>
38+
<BASE-TYPE-REF DEST="SW-BASE-TYPE">/AUTOSAR_Platform/BaseTypes/uint8</BASE-TYPE-REF>
39+
<COMPU-METHOD-REF DEST="COMPU-METHOD">/AUTOSAR_Platform/CompuMethods/boolean_CompuMethod</COMPU-METHOD-REF>
40+
<DATA-CONSTR-REF DEST="DATA-CONSTR">/AUTOSAR_Platform/DataConstraints/boolean_DataConstr</DATA-CONSTR-REF>
41+
</SW-DATA-DEF-PROPS-CONDITIONAL>
42+
</SW-DATA-DEF-PROPS-VARIANTS>
43+
</SW-DATA-DEF-PROPS>
44+
</IMPLEMENTATION-DATA-TYPE>
45+
<IMPLEMENTATION-DATA-TYPE>
46+
<SHORT-NAME>uint8</SHORT-NAME>
47+
<CATEGORY>VALUE</CATEGORY>
48+
<SW-DATA-DEF-PROPS>
49+
<SW-DATA-DEF-PROPS-VARIANTS>
50+
<SW-DATA-DEF-PROPS-CONDITIONAL>
51+
<BASE-TYPE-REF DEST="SW-BASE-TYPE">/AUTOSAR_Platform/BaseTypes/uint8</BASE-TYPE-REF>
52+
</SW-DATA-DEF-PROPS-CONDITIONAL>
53+
</SW-DATA-DEF-PROPS-VARIANTS>
54+
</SW-DATA-DEF-PROPS>
55+
</IMPLEMENTATION-DATA-TYPE>
56+
<IMPLEMENTATION-DATA-TYPE>
57+
<SHORT-NAME>uint16</SHORT-NAME>
58+
<CATEGORY>VALUE</CATEGORY>
59+
<SW-DATA-DEF-PROPS>
60+
<SW-DATA-DEF-PROPS-VARIANTS>
61+
<SW-DATA-DEF-PROPS-CONDITIONAL>
62+
<BASE-TYPE-REF DEST="SW-BASE-TYPE">/AUTOSAR_Platform/BaseTypes/uint16</BASE-TYPE-REF>
63+
</SW-DATA-DEF-PROPS-CONDITIONAL>
64+
</SW-DATA-DEF-PROPS-VARIANTS>
65+
</SW-DATA-DEF-PROPS>
66+
</IMPLEMENTATION-DATA-TYPE>
67+
<IMPLEMENTATION-DATA-TYPE>
68+
<SHORT-NAME>uint32</SHORT-NAME>
69+
<CATEGORY>VALUE</CATEGORY>
70+
<SW-DATA-DEF-PROPS>
71+
<SW-DATA-DEF-PROPS-VARIANTS>
72+
<SW-DATA-DEF-PROPS-CONDITIONAL>
73+
<BASE-TYPE-REF DEST="SW-BASE-TYPE">/AUTOSAR_Platform/BaseTypes/uint32</BASE-TYPE-REF>
74+
</SW-DATA-DEF-PROPS-CONDITIONAL>
75+
</SW-DATA-DEF-PROPS-VARIANTS>
76+
</SW-DATA-DEF-PROPS>
77+
</IMPLEMENTATION-DATA-TYPE>
78+
</ELEMENTS>
79+
</AR-PACKAGE>
80+
<AR-PACKAGE>
81+
<SHORT-NAME>DataConstraints</SHORT-NAME>
82+
<ELEMENTS>
83+
<DATA-CONSTR>
84+
<SHORT-NAME>boolean_DataConstr</SHORT-NAME>
85+
<DATA-CONSTR-RULES>
86+
<DATA-CONSTR-RULE>
87+
<INTERNAL-CONSTRS>
88+
<LOWER-LIMIT INTERVAL-TYPE="CLOSED">0</LOWER-LIMIT>
89+
<UPPER-LIMIT INTERVAL-TYPE="CLOSED">1</UPPER-LIMIT>
90+
</INTERNAL-CONSTRS>
91+
</DATA-CONSTR-RULE>
92+
</DATA-CONSTR-RULES>
93+
</DATA-CONSTR>
94+
</ELEMENTS>
95+
</AR-PACKAGE>
96+
<AR-PACKAGE>
97+
<SHORT-NAME>CompuMethods</SHORT-NAME>
98+
<ELEMENTS>
99+
<COMPU-METHOD>
100+
<SHORT-NAME>boolean_CompuMethod</SHORT-NAME>
101+
<CATEGORY>TEXTTABLE</CATEGORY>
102+
<COMPU-INTERNAL-TO-PHYS>
103+
<COMPU-SCALES>
104+
<COMPU-SCALE>
105+
<SHORT-LABEL>FALSE</SHORT-LABEL>
106+
<LOWER-LIMIT INTERVAL-TYPE="CLOSED">0</LOWER-LIMIT>
107+
<UPPER-LIMIT INTERVAL-TYPE="CLOSED">0</UPPER-LIMIT>
108+
<COMPU-CONST>
109+
<VT>FALSE</VT>
110+
</COMPU-CONST>
111+
</COMPU-SCALE>
112+
<COMPU-SCALE>
113+
<SHORT-LABEL>TRUE</SHORT-LABEL>
114+
<LOWER-LIMIT INTERVAL-TYPE="CLOSED">1</LOWER-LIMIT>
115+
<UPPER-LIMIT INTERVAL-TYPE="CLOSED">1</UPPER-LIMIT>
116+
<COMPU-CONST>
117+
<VT>TRUE</VT>
118+
</COMPU-CONST>
119+
</COMPU-SCALE>
120+
</COMPU-SCALES>
121+
</COMPU-INTERNAL-TO-PHYS>
122+
</COMPU-METHOD>
123+
</ELEMENTS>
124+
</AR-PACKAGE>
125+
</AR-PACKAGES>
126+
</AR-PACKAGE>
127+
</AR-PACKAGES>
128+
</AUTOSAR>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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+
<SENDER-RECEIVER-INTERFACE>
8+
<SHORT-NAME>VehicleSpeed_I</SHORT-NAME>
9+
<DATA-ELEMENTS>
10+
<VARIABLE-DATA-PROTOTYPE>
11+
<SHORT-NAME>VehicleSpeed</SHORT-NAME>
12+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/uint16</TYPE-TREF>
13+
</VARIABLE-DATA-PROTOTYPE>
14+
</DATA-ELEMENTS>
15+
</SENDER-RECEIVER-INTERFACE>
16+
<CLIENT-SERVER-INTERFACE>
17+
<SHORT-NAME>FreeRunningTimer_I</SHORT-NAME>
18+
<OPERATIONS>
19+
<CLIENT-SERVER-OPERATION>
20+
<SHORT-NAME>GetTime</SHORT-NAME>
21+
<ARGUMENTS>
22+
<ARGUMENT-DATA-PROTOTYPE>
23+
<SHORT-NAME>value</SHORT-NAME>
24+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/uint32</TYPE-TREF>
25+
<DIRECTION>OUT</DIRECTION>
26+
</ARGUMENT-DATA-PROTOTYPE>
27+
</ARGUMENTS>
28+
</CLIENT-SERVER-OPERATION>
29+
<CLIENT-SERVER-OPERATION>
30+
<SHORT-NAME>IsTimerElapsed</SHORT-NAME>
31+
<ARGUMENTS>
32+
<ARGUMENT-DATA-PROTOTYPE>
33+
<SHORT-NAME>startTime</SHORT-NAME>
34+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/uint32</TYPE-TREF>
35+
<DIRECTION>IN</DIRECTION>
36+
</ARGUMENT-DATA-PROTOTYPE>
37+
<ARGUMENT-DATA-PROTOTYPE>
38+
<SHORT-NAME>duration</SHORT-NAME>
39+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/uint32</TYPE-TREF>
40+
<DIRECTION>IN</DIRECTION>
41+
</ARGUMENT-DATA-PROTOTYPE>
42+
<ARGUMENT-DATA-PROTOTYPE>
43+
<SHORT-NAME>result</SHORT-NAME>
44+
<TYPE-TREF DEST="IMPLEMENTATION-DATA-TYPE">/AUTOSAR_Platform/ImplementationDataTypes/boolean</TYPE-TREF>
45+
<DIRECTION>OUT</DIRECTION>
46+
</ARGUMENT-DATA-PROTOTYPE>
47+
</ARGUMENTS>
48+
</CLIENT-SERVER-OPERATION>
49+
</OPERATIONS>
50+
</CLIENT-SERVER-INTERFACE>
51+
</ELEMENTS>
52+
</AR-PACKAGE>
53+
</AR-PACKAGES>
54+
</AUTOSAR>

examples/xml/port_interface/client_server_interface.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def create_platform_types(packages: dict[str, ar_element.Package]):
2929

3030
def create_port_interfaces(packages: dict[str, ar_element.Package]):
3131
"""
32-
Creates interface with one element
32+
Creates client-server interface with one operation
3333
"""
3434
uint32_impl_type = packages["PlatformImplementationDataTypes"].find("uint32")
3535
interface = ar_element.ClientServerInterface("FreeRunningTimer_I", is_service=True)

0 commit comments

Comments
 (0)