py_canoe 3.0.4__py3-none-any.whl → 26.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. py_canoe/__init__.py +2 -1
  2. py_canoe/canoe.py +910 -0
  3. py_canoe/core/__init__.py +0 -0
  4. py_canoe/core/application.py +170 -0
  5. py_canoe/core/bus.py +301 -0
  6. py_canoe/core/capl.py +59 -0
  7. py_canoe/core/child_elements/__init__.py +0 -0
  8. py_canoe/core/child_elements/application_model.py +24 -0
  9. py_canoe/core/child_elements/application_model_file.py +21 -0
  10. py_canoe/core/child_elements/application_model_files.py +22 -0
  11. py_canoe/core/child_elements/application_model_setup.py +15 -0
  12. py_canoe/core/child_elements/application_models.py +22 -0
  13. py_canoe/core/child_elements/application_socket.py +11 -0
  14. py_canoe/core/child_elements/application_specific_module.py +24 -0
  15. py_canoe/core/child_elements/application_specific_modules.py +16 -0
  16. py_canoe/core/child_elements/audio_interface.py +28 -0
  17. py_canoe/core/child_elements/available_modules.py +22 -0
  18. py_canoe/core/child_elements/basic_module.py +19 -0
  19. py_canoe/core/child_elements/basic_modules.py +16 -0
  20. py_canoe/core/child_elements/c_libraries.py +28 -0
  21. py_canoe/core/child_elements/c_library.py +33 -0
  22. py_canoe/core/child_elements/can_controller.py +74 -0
  23. py_canoe/core/child_elements/capl_function.py +17 -0
  24. py_canoe/core/child_elements/ccp_setup.py +15 -0
  25. py_canoe/core/child_elements/channel.py +20 -0
  26. py_canoe/core/child_elements/channels.py +19 -0
  27. py_canoe/core/child_elements/communication_setup.py +23 -0
  28. py_canoe/core/child_elements/compile_result.py +22 -0
  29. py_canoe/core/child_elements/configured_channel.py +48 -0
  30. py_canoe/core/child_elements/configured_channels.py +21 -0
  31. py_canoe/core/child_elements/configured_module.py +82 -0
  32. py_canoe/core/child_elements/configured_modules.py +61 -0
  33. py_canoe/core/child_elements/connected_modules.py +14 -0
  34. py_canoe/core/child_elements/data_source.py +42 -0
  35. py_canoe/core/child_elements/data_source_file.py +21 -0
  36. py_canoe/core/child_elements/data_source_files.py +22 -0
  37. py_canoe/core/child_elements/data_source_issue.py +22 -0
  38. py_canoe/core/child_elements/data_source_issues.py +16 -0
  39. py_canoe/core/child_elements/data_source_setup.py +17 -0
  40. py_canoe/core/child_elements/data_sources.py +27 -0
  41. py_canoe/core/child_elements/database_setup.py +62 -0
  42. py_canoe/core/child_elements/device.py +34 -0
  43. py_canoe/core/child_elements/devices.py +13 -0
  44. py_canoe/core/child_elements/diagnostic.py +22 -0
  45. py_canoe/core/child_elements/diagnostic_request.py +59 -0
  46. py_canoe/core/child_elements/diagnostic_response.py +34 -0
  47. py_canoe/core/child_elements/diagnostic_responses.py +13 -0
  48. py_canoe/core/child_elements/diagnostics_setup.py +254 -0
  49. py_canoe/core/child_elements/distributed_mode.py +74 -0
  50. py_canoe/core/child_elements/encoding.py +27 -0
  51. py_canoe/core/child_elements/encodings.py +13 -0
  52. py_canoe/core/child_elements/environment_array.py +13 -0
  53. py_canoe/core/child_elements/environment_group.py +22 -0
  54. py_canoe/core/child_elements/environment_info.py +14 -0
  55. py_canoe/core/child_elements/environment_variable.py +55 -0
  56. py_canoe/core/child_elements/fdx_files.py +50 -0
  57. py_canoe/core/child_elements/file_group_data_source.py +17 -0
  58. py_canoe/core/child_elements/general_setup.py +66 -0
  59. py_canoe/core/child_elements/macros_setup.py +52 -0
  60. py_canoe/core/child_elements/mc_ecus.py +428 -0
  61. py_canoe/core/child_elements/measurement_setup.py +269 -0
  62. py_canoe/core/child_elements/modules.py +87 -0
  63. py_canoe/core/child_elements/most_disassembler.py +21 -0
  64. py_canoe/core/child_elements/most_network_interface.py +4 -0
  65. py_canoe/core/child_elements/namespace.py +21 -0
  66. py_canoe/core/child_elements/namespaces.py +19 -0
  67. py_canoe/core/child_elements/network.py +18 -0
  68. py_canoe/core/child_elements/network_adapters.py +13 -0
  69. py_canoe/core/child_elements/nodes.py +119 -0
  70. py_canoe/core/child_elements/open_configuration_result.py +0 -0
  71. py_canoe/core/child_elements/panel_setup.py +97 -0
  72. py_canoe/core/child_elements/participant.py +17 -0
  73. py_canoe/core/child_elements/participants.py +22 -0
  74. py_canoe/core/child_elements/ports.py +81 -0
  75. py_canoe/core/child_elements/replay_collection.py +56 -0
  76. py_canoe/core/child_elements/security_configuration.py +20 -0
  77. py_canoe/core/child_elements/security_setup.py +31 -0
  78. py_canoe/core/child_elements/signals.py +39 -0
  79. py_canoe/core/child_elements/simulation_setup.py +0 -0
  80. py_canoe/core/child_elements/single_file_data_source.py +13 -0
  81. py_canoe/core/child_elements/snippet_setup.py +68 -0
  82. py_canoe/core/child_elements/standalone_mode.py +0 -0
  83. py_canoe/core/child_elements/start_value_list.py +0 -0
  84. py_canoe/core/child_elements/symbol_mappings.py +0 -0
  85. py_canoe/core/child_elements/tcp_ip_stack_setting.py +0 -0
  86. py_canoe/core/child_elements/test_configurations.py +0 -0
  87. py_canoe/core/child_elements/test_environment.py +64 -0
  88. py_canoe/core/child_elements/test_environments.py +26 -0
  89. py_canoe/core/child_elements/test_module.py +213 -0
  90. py_canoe/core/child_elements/test_modules.py +23 -0
  91. py_canoe/core/child_elements/test_setup.py +16 -0
  92. py_canoe/core/child_elements/test_setup_folder_ext.py +36 -0
  93. py_canoe/core/child_elements/test_setup_folders.py +25 -0
  94. py_canoe/core/child_elements/user_files.py +0 -0
  95. py_canoe/core/child_elements/variable.py +144 -0
  96. py_canoe/core/child_elements/variable_events.py +14 -0
  97. py_canoe/core/child_elements/variables.py +29 -0
  98. py_canoe/core/child_elements/variables_file.py +15 -0
  99. py_canoe/core/child_elements/variables_files.py +19 -0
  100. py_canoe/core/child_elements/visual_sequence_setup.py +46 -0
  101. py_canoe/core/child_elements/vt_system.py +83 -0
  102. py_canoe/core/child_elements/vtt_sut_import_result.py +21 -0
  103. py_canoe/core/child_elements/write.py +71 -0
  104. py_canoe/core/child_elements/xcp_setup.py +12 -0
  105. py_canoe/core/configuration.py +509 -0
  106. py_canoe/core/environment.py +59 -0
  107. py_canoe/core/measurement.py +149 -0
  108. py_canoe/core/networks.py +103 -0
  109. py_canoe/core/performance.py +21 -0
  110. py_canoe/core/simulation.py +53 -0
  111. py_canoe/core/system.py +164 -0
  112. py_canoe/core/ui.py +53 -0
  113. py_canoe/core/version.py +54 -0
  114. py_canoe/helpers/__init__.py +0 -0
  115. py_canoe/helpers/common.py +78 -0
  116. {py_canoe-3.0.4.dist-info → py_canoe-26.0.0.dist-info}/METADATA +332 -322
  117. py_canoe-26.0.0.dist-info/RECORD +118 -0
  118. py_canoe-26.0.0.dist-info/WHEEL +4 -0
  119. py_canoe/py_canoe.py +0 -2586
  120. py_canoe/py_canoe_utils/logging_collection.py +0 -345
  121. py_canoe/py_canoe_utils/py_canoe_logger.py +0 -29
  122. py_canoe-3.0.4.dist-info/LICENSE +0 -21
  123. py_canoe-3.0.4.dist-info/RECORD +0 -8
  124. py_canoe-3.0.4.dist-info/WHEEL +0 -4
@@ -0,0 +1,22 @@
1
+ from py_canoe.core.child_elements.data_source_file import DataSourceFile
2
+
3
+
4
+ class DataSourceFiles:
5
+ """
6
+ Collection of DataSourceFile objects for a FileGroupDataSource.
7
+ """
8
+ def __init__(self, com_object) -> None:
9
+ self.com_object = com_object
10
+
11
+ @property
12
+ def count(self) -> int:
13
+ return self.com_object.Count
14
+
15
+ def item(self, index: int) -> 'DataSourceFile':
16
+ return DataSourceFile(self.com_object.Item(index))
17
+
18
+ def add(self, source_file_path: str) -> 'DataSourceFile':
19
+ return DataSourceFile(self.com_object.Add(source_file_path))
20
+
21
+ def remove(self, index: int):
22
+ self.com_object.Remove(index)
@@ -0,0 +1,22 @@
1
+ import win32com.client
2
+
3
+
4
+ class DataSourceIssue:
5
+ """
6
+ Represents a single issue from a DataSource import operation.
7
+ """
8
+ def __init__(self, com_object) -> None:
9
+ self.com_object = win32com.client.Dispatch(com_object)
10
+
11
+ @property
12
+ def description(self) -> str:
13
+ return self.com_object.Description
14
+
15
+ @property
16
+ def emitter(self):
17
+ from py_canoe.core.child_elements.data_source import DataSource
18
+ return DataSource(self.com_object.Emitter)
19
+
20
+ @property
21
+ def severity(self) -> int:
22
+ return self.com_object.Severity
@@ -0,0 +1,16 @@
1
+ from py_canoe.core.child_elements.data_source_issue import DataSourceIssue
2
+
3
+
4
+ class DataSourceIssues:
5
+ """
6
+ Collection of DataSourceIssue objects from the last import operation.
7
+ """
8
+ def __init__(self, com_object) -> None:
9
+ self.com_object = com_object
10
+
11
+ @property
12
+ def count(self) -> int:
13
+ return self.com_object.Count
14
+
15
+ def item(self, index: int) -> 'DataSourceIssue':
16
+ return DataSourceIssue(self.com_object.Item(index))
@@ -0,0 +1,17 @@
1
+ from py_canoe.core.child_elements.data_source import DataSource
2
+ from py_canoe.core.child_elements.data_sources import DataSources
3
+
4
+
5
+ class DataSourceSetup:
6
+ """
7
+ Provides the data source management API.
8
+ """
9
+ def __init__(self, com_object) -> None:
10
+ self.com_object = com_object
11
+
12
+ @property
13
+ def data_sources(self) -> 'DataSources':
14
+ return DataSources(self.com_object.DataSources)
15
+
16
+ def get_data_source_by_id(self, data_source_id: int) -> 'DataSource':
17
+ return DataSource(self.com_object.GetDataSourceById(data_source_id))
@@ -0,0 +1,27 @@
1
+ from py_canoe.core.child_elements.data_source import DataSource
2
+ from py_canoe.core.child_elements.file_group_data_source import FileGroupDataSource
3
+ from py_canoe.core.child_elements.single_file_data_source import SingleFileDataSource
4
+
5
+
6
+ class DataSources:
7
+ """
8
+ Collection of DataSource objects.
9
+ """
10
+ def __init__(self, com_object) -> None:
11
+ self.com_object = com_object
12
+
13
+ @property
14
+ def count(self) -> int:
15
+ return self.com_object.Count
16
+
17
+ def item(self, index: int) -> 'DataSource':
18
+ return DataSource(self.com_object.Item(index))
19
+
20
+ def add_group_data_source(self, name: str) -> 'FileGroupDataSource':
21
+ return FileGroupDataSource(self.com_object.AddGroupDataSource(name))
22
+
23
+ def add_single_file_data_source(self, source_file_path: str) -> 'SingleFileDataSource':
24
+ return SingleFileDataSource(self.com_object.AddSingleFileDataSource(source_file_path))
25
+
26
+ def remove(self, index: int):
27
+ self.com_object.Remove(index)
@@ -0,0 +1,62 @@
1
+ import win32com.client
2
+
3
+
4
+ class DatabaseSetup:
5
+ def __init__(self, com_object) -> None:
6
+ self.com_object = com_object
7
+
8
+ @property
9
+ def databases(self) -> 'Databases':
10
+ return Databases(self.com_object.Databases)
11
+
12
+
13
+ class Databases:
14
+ """The Databases object represents the assigned databases of CANoe."""
15
+ def __init__(self, com_object):
16
+ self.com_object = com_object
17
+
18
+ @property
19
+ def count(self) -> int:
20
+ return self.com_object.Count
21
+
22
+ def item(self, index: int) -> 'Database':
23
+ return Database(self.com_object.Item(index))
24
+
25
+ def add(self, full_name: str) -> 'Database':
26
+ return Database(self.com_object.Add(full_name))
27
+
28
+ def add_network(self, database_name: str, network_name: str) -> 'Database':
29
+ return Database(self.com_object.AddNetwork(database_name, network_name))
30
+
31
+ def remove(self, index: int) -> None:
32
+ self.com_object.Remove(index)
33
+
34
+
35
+ class Database:
36
+ """The Database object represents the assigned database of the CANoe application."""
37
+ def __init__(self, com_object):
38
+ self.com_object = win32com.client.Dispatch(com_object)
39
+
40
+ @property
41
+ def channel(self) -> int:
42
+ return self.com_object.Channel
43
+
44
+ @channel.setter
45
+ def channel(self, channel: int) -> None:
46
+ self.com_object.Channel = channel
47
+
48
+ @property
49
+ def full_name(self) -> str:
50
+ return self.com_object.FullName
51
+
52
+ @full_name.setter
53
+ def full_name(self, full_name: str) -> None:
54
+ self.com_object.FullName = full_name
55
+
56
+ @property
57
+ def name(self) -> str:
58
+ return self.com_object.Name
59
+
60
+ @property
61
+ def path(self) -> str:
62
+ return self.com_object.Path
@@ -0,0 +1,34 @@
1
+ from py_canoe.core.child_elements.audio_interface import AudioInterface
2
+ from py_canoe.core.child_elements.diagnostic import Diagnostic
3
+ from py_canoe.core.child_elements.most_disassembler import MostDisassembler
4
+ from py_canoe.core.child_elements.most_network_interface import MostNetworkInterface
5
+ from py_canoe.core.child_elements.application_socket import ApplicationSocket
6
+
7
+
8
+ class Device:
9
+ def __init__(self, com_object):
10
+ self.com_object = com_object
11
+
12
+ @property
13
+ def application_socket(self) -> ApplicationSocket:
14
+ return ApplicationSocket(self.com_object.ApplicationSocket)
15
+
16
+ @property
17
+ def audio_interface(self) -> AudioInterface:
18
+ return AudioInterface(self.com_object.AudioInterface)
19
+
20
+ @property
21
+ def diagnostic(self) -> Diagnostic:
22
+ return Diagnostic(self.com_object.Diagnostic)
23
+
24
+ @property
25
+ def disassembler(self) -> MostDisassembler:
26
+ return MostDisassembler(self.com_object.Disassembler)
27
+
28
+ @property
29
+ def name(self) -> str:
30
+ return self.com_object.Name
31
+
32
+ @property
33
+ def network_interface(self) -> MostNetworkInterface:
34
+ return MostNetworkInterface(self.com_object.NetworkInterface)
@@ -0,0 +1,13 @@
1
+ from py_canoe.core.child_elements.device import Device
2
+
3
+
4
+ class Devices:
5
+ def __init__(self, com_object):
6
+ self.com_object = com_object
7
+
8
+ @property
9
+ def count(self) -> int:
10
+ return self.com_object.Count
11
+
12
+ def item(self, index: int) -> 'Device':
13
+ return Device(self.com_object.Item(index))
@@ -0,0 +1,22 @@
1
+ from py_canoe.core.child_elements.diagnostic_request import DiagnosticRequest
2
+
3
+
4
+ class Diagnostic:
5
+ def __init__(self, com_object):
6
+ self.com_object = com_object
7
+
8
+ @property
9
+ def tester_present_status(self) -> bool:
10
+ return self.com_object.TesterPresentStatus
11
+
12
+ def create_request(self, primitive_path) -> DiagnosticRequest:
13
+ return DiagnosticRequest(self.com_object.CreateRequest(primitive_path))
14
+
15
+ def create_request_from_stream(self, byte_stream: bytearray) -> DiagnosticRequest:
16
+ return DiagnosticRequest(self.com_object.CreateRequestFromStream(byte_stream))
17
+
18
+ def diag_start_tester_present(self):
19
+ self.com_object.DiagStartTesterPresent()
20
+
21
+ def diag_stop_tester_present(self):
22
+ self.com_object.DiagStopTesterPresent()
@@ -0,0 +1,59 @@
1
+ from typing import Union
2
+
3
+ from py_canoe.core.child_elements.diagnostic_responses import DiagnosticResponses
4
+ from py_canoe.core.child_elements.diagnostic_response import DiagnosticResponse
5
+
6
+ DIAGNOSTIC_RESPONSE_TIMEOUT_VALUE = 300 # 5 minutes
7
+
8
+
9
+
10
+ class DiagnosticRequestEvents:
11
+ def __init__(self) -> None:
12
+ self.TIMEOUT: bool = False
13
+ self.RECEIVED_RESPONSE: bool = False
14
+ self.RESPONSE: Union['DiagnosticResponse', None] = None
15
+
16
+ def OnCompletion(self):
17
+ pass
18
+
19
+ def OnConfirmation(self):
20
+ pass
21
+
22
+ def OnResponse(self, response):
23
+ self.RECEIVED_RESPONSE = True
24
+ self.RESPONSE = DiagnosticResponse(response)
25
+
26
+ def OnTimeout(self):
27
+ self.TIMEOUT = True
28
+
29
+
30
+ class DiagnosticRequest:
31
+ def __init__(self, com_object):
32
+ self.com_object = com_object
33
+ # self.diagnostic_request_events: DiagnosticRequestEvents = win32com.client.WithEvents(self.com_object, DiagnosticRequestEvents)
34
+
35
+ @property
36
+ def pending(self) -> bool:
37
+ return self.com_object.Pending
38
+
39
+ @property
40
+ def responses(self) -> 'DiagnosticResponses':
41
+ return DiagnosticResponses(self.com_object.Responses)
42
+
43
+ @property
44
+ def suppress_positive_response(self) -> bool:
45
+ return self.com_object.SuppressPositiveResponse
46
+
47
+ @suppress_positive_response.setter
48
+ def suppress_positive_response(self, value: bool):
49
+ self.com_object.SuppressPositiveResponse = value
50
+
51
+ def send(self):
52
+ self.com_object.Send()
53
+ # DoEventsUntil(lambda: self.pending, DIAGNOSTIC_RESPONSE_TIMEOUT_VALUE, "Diagnostic Request Response")
54
+
55
+ def set_complex_parameter(self, qualifier, iteration, sub_parameter, value):
56
+ self.com_object.SetComplexParameter(qualifier, iteration, sub_parameter, value)
57
+
58
+ def set_parameter(self, qualifier, value):
59
+ self.com_object.SetParameter(qualifier, value)
@@ -0,0 +1,34 @@
1
+ from typing import Union
2
+
3
+
4
+ class DiagnosticResponse:
5
+ def __init__(self, com_object):
6
+ self.com_object = com_object
7
+
8
+ @property
9
+ def positive(self) -> bool:
10
+ return self.com_object.Positive
11
+
12
+ @property
13
+ def response_code(self) -> int:
14
+ return self.com_object.ResponseCode
15
+
16
+ @property
17
+ def sender(self) -> str:
18
+ return self.com_object.Sender
19
+
20
+ @property
21
+ def stream(self) -> bytearray:
22
+ return bytearray(self.com_object.Stream)
23
+
24
+ def get_complex_iteration_count(self, qualifier: str) -> int:
25
+ return self.com_object.GetComplexIterationCount(qualifier)
26
+
27
+ def get_complex_parameter(self, qualifier: str, iteration: int, sub_parameter: str, mode: int) -> Union[bytearray, int, str]:
28
+ return self.com_object.GetComplexParameter(qualifier, iteration, sub_parameter, mode)
29
+
30
+ def get_parameter(self, qualifier: str, mode: int) -> Union[bytearray, int, str]:
31
+ return self.com_object.GetParameter(qualifier, mode)
32
+
33
+ def is_complex_parameter(self, qualifier: str) -> bool:
34
+ return self.com_object.IsComplexParameter(qualifier)
@@ -0,0 +1,13 @@
1
+ from py_canoe.core.child_elements.diagnostic_response import DiagnosticResponse
2
+
3
+
4
+ class DiagnosticResponses:
5
+ def __init__(self, com_object):
6
+ self.com_object = com_object
7
+
8
+ @property
9
+ def count(self) -> int:
10
+ return self.com_object.Count
11
+
12
+ def item(self, index: int) -> 'DiagnosticResponse':
13
+ return DiagnosticResponse(self.com_object.item(index))
@@ -0,0 +1,254 @@
1
+ import win32com.client
2
+
3
+
4
+ class DiagnosticsSetup:
5
+ def __init__(self, com_object):
6
+ self.com_object = com_object
7
+
8
+ @property
9
+ def diag_descriptions(self) -> 'DiagDescriptions':
10
+ return DiagDescriptions(self.com_object.DiagDescriptions)
11
+
12
+
13
+ class DiagDescriptions:
14
+ def __init__(self, com_object):
15
+ self.com_object = com_object
16
+
17
+ @property
18
+ def count(self) -> int:
19
+ return self.com_object.Count
20
+
21
+ def item(self, index: int) -> 'DiagDescription':
22
+ return DiagDescription(self.com_object.Item(index))
23
+
24
+ def add(self, network: str, file_path: str, ecu_identifier: str=None) -> 'DiagDescription':
25
+ if ecu_identifier is None:
26
+ return DiagDescription(self.com_object.Add(network, file_path))
27
+ else:
28
+ return DiagDescription(self.com_object.AddEx(network, file_path, ecu_identifier))
29
+
30
+ def add_diag_access(self, network: str, file_path: str, ecu_identifier: str=None) -> 'DiagDescription':
31
+ if ecu_identifier is None:
32
+ return DiagDescription(self.com_object.AddDiagAccess(network, file_path))
33
+ else:
34
+ return DiagDescription(self.com_object.AddDiagAccessEx(network, file_path, ecu_identifier))
35
+
36
+ def remove(self, index: int):
37
+ self.com_object.Remove(index)
38
+
39
+
40
+ class DiagDescription:
41
+ def __init__(self, com_object):
42
+ self.com_object = win32com.client.Dispatch(com_object)
43
+
44
+ @property
45
+ def additional_descriptions(self) -> 'AdditionalDescriptions':
46
+ return AdditionalDescriptions(self.com_object.AdditionalDescriptions)
47
+
48
+ @property
49
+ def diag_variants(self) -> 'DiagVariants':
50
+ return DiagVariants(self.com_object.DiagVariants)
51
+
52
+ @property
53
+ def file_path(self) -> str:
54
+ return self.com_object.FilePath
55
+
56
+ @property
57
+ def information(self) -> str:
58
+ return self.com_object.Information
59
+
60
+ @property
61
+ def interface(self) -> str:
62
+ return self.com_object.Interface
63
+
64
+ @interface.setter
65
+ def interface(self, interface_qualifier: str):
66
+ self.com_object.Interface = interface_qualifier
67
+
68
+ @property
69
+ def interpretation_order(self) -> 'InterpretationOrder':
70
+ return InterpretationOrder(self.com_object.InterpretationOrder)
71
+
72
+ @property
73
+ def language(self) -> str:
74
+ return self.com_object.Language
75
+
76
+ @language.setter
77
+ def language(self, value: str):
78
+ self.com_object.Language = value
79
+
80
+ @property
81
+ def manual_communication_parameters(self) -> bool:
82
+ return self.com_object.ManualCommunicationParameters
83
+
84
+ @property
85
+ def mode(self) -> str:
86
+ return self.com_object.Mode
87
+
88
+ @property
89
+ def name(self) -> str:
90
+ return self.com_object.Name
91
+
92
+ @property
93
+ def network(self) -> str:
94
+ return self.com_object.Network
95
+
96
+ @property
97
+ def node(self) -> str:
98
+ return self.com_object.Node
99
+
100
+ @property
101
+ def port(self) -> str:
102
+ return self.com_object.Port
103
+
104
+ @port.setter
105
+ def port(self, value: str):
106
+ self.com_object.Port = value
107
+
108
+ @property
109
+ def qualifier(self) -> str:
110
+ return self.com_object.Qualifier
111
+
112
+ @property
113
+ def seed_n_key_dll(self) -> str:
114
+ return self.com_object.SeedNKeyDLL
115
+
116
+ @seed_n_key_dll.setter
117
+ def seed_n_key_dll(self, value: str):
118
+ self.com_object.SeedNKeyDLL = value
119
+
120
+ @property
121
+ def variant(self) -> str:
122
+ return self.com_object.Variant
123
+
124
+ @variant.setter
125
+ def variant(self, variant_qualifier: str):
126
+ self.com_object.Variant = variant_qualifier
127
+
128
+ def close_windows(self, windows: int = None):
129
+ if windows is None:
130
+ self.com_object.CloseWindows()
131
+ else:
132
+ self.com_object.CloseWindows(windows)
133
+
134
+ def open_windows(self, windows: int = None):
135
+ if windows is None:
136
+ self.com_object.OpenWindows()
137
+ else:
138
+ self.com_object.OpenWindows(windows)
139
+
140
+ def replace_description_file(self, file_path: str):
141
+ self.com_object.ReplaceDescriptionFile(file_path)
142
+
143
+
144
+ class AdditionalDescriptions:
145
+ def __init__(self, com_object):
146
+ self.com_object = com_object
147
+
148
+ @property
149
+ def count(self) -> int:
150
+ return self.com_object.Count
151
+
152
+ def item(self, index: int) -> 'AdditionalDescription':
153
+ return AdditionalDescription(self.com_object.Item(index))
154
+
155
+ def add(self, file_path: str, ecu_identifier: str=None) -> 'AdditionalDescription':
156
+ if ecu_identifier is None:
157
+ return AdditionalDescription(self.com_object.Add(file_path))
158
+ else:
159
+ return AdditionalDescription(self.com_object.AddEx(file_path, ecu_identifier))
160
+
161
+ def remove(self, index: int):
162
+ self.com_object.Remove(index)
163
+
164
+
165
+ class AdditionalDescription:
166
+ def __init__(self, com_object):
167
+ self.com_object = win32com.client.Dispatch(com_object)
168
+
169
+ @property
170
+ def diag_variants(self) -> 'DiagVariants':
171
+ return DiagVariants(self.com_object.DiagVariants)
172
+
173
+ @property
174
+ def file_path(self) -> str:
175
+ return self.com_object.FilePath
176
+
177
+ @property
178
+ def master_description(self) -> 'DiagDescription':
179
+ return DiagDescription(self.com_object.MasterDescription)
180
+
181
+ @property
182
+ def language(self) -> str:
183
+ return self.com_object.Language
184
+
185
+ @language.setter
186
+ def language(self, value: str):
187
+ self.com_object.Language = value
188
+
189
+ @property
190
+ def name(self) -> str:
191
+ return self.com_object.Name
192
+
193
+ @property
194
+ def qualifier(self) -> str:
195
+ return self.com_object.Qualifier
196
+
197
+ @property
198
+ def variant(self) -> str:
199
+ return self.com_object.Variant
200
+
201
+ @variant.setter
202
+ def variant(self, variant_qualifier: str):
203
+ self.com_object.Variant = variant_qualifier
204
+
205
+ def close_windows(self, windows: int = None):
206
+ if windows is None:
207
+ self.com_object.CloseWindows()
208
+ else:
209
+ self.com_object.CloseWindows(windows)
210
+
211
+ def open_windows(self, windows: int = None):
212
+ if windows is None:
213
+ self.com_object.OpenWindows()
214
+ else:
215
+ self.com_object.OpenWindows(windows)
216
+
217
+
218
+ class DiagVariants:
219
+ def __init__(self, com_object):
220
+ self.com_object = com_object
221
+
222
+ @property
223
+ def count(self) -> int:
224
+ return self.com_object.Count
225
+
226
+ def item(self, index: int) -> 'DiagVariant':
227
+ return DiagVariant(self.com_object.Item(index))
228
+
229
+
230
+ class DiagVariant:
231
+ def __init__(self, com_object):
232
+ self.com_object = com_object
233
+
234
+ @property
235
+ def name(self) -> str:
236
+ return self.com_object.Name
237
+
238
+ @property
239
+ def qualifier(self) -> str:
240
+ return self.com_object.Qualifier
241
+
242
+ class InterpretationOrder:
243
+ def __init__(self, com_object):
244
+ self.com_object = com_object
245
+
246
+ @property
247
+ def count(self) -> int:
248
+ return self.com_object.Count
249
+
250
+ def item(self, index: int) -> 'DiagDescription':
251
+ return DiagDescription(self.com_object.Item(index))
252
+
253
+ def move(self, from_index: int, to_index: int):
254
+ self.com_object.Move(from_index, to_index)
@@ -0,0 +1,74 @@
1
+ import win32com.client
2
+
3
+
4
+ class DistributedMode:
5
+ """
6
+ Provides the distributed mode management API.
7
+ """
8
+ def __init__(self, com_object) -> None:
9
+ self.com_object = com_object
10
+
11
+ @property
12
+ def auto_connect_on_program_start(self) -> bool:
13
+ return self.com_object.AutoConnectOnProgramStart
14
+
15
+ @auto_connect_on_program_start.setter
16
+ def auto_connect_on_program_start(self, value: bool):
17
+ self.com_object.AutoConnectOnProgramStart = value
18
+
19
+ @property
20
+ def auto_disconnect_on_measurement_stop(self) -> bool:
21
+ return self.com_object.AutoDisconnectOnMeasurementStop
22
+
23
+ @auto_disconnect_on_measurement_stop.setter
24
+ def auto_disconnect_on_measurement_stop(self, value: bool):
25
+ self.com_object.AutoDisconnectOnMeasurementStop = value
26
+
27
+ @property
28
+ def connected(self) -> bool:
29
+ return self.com_object.Connected
30
+
31
+ @property
32
+ def remote_time_auto_adjust(self) -> bool:
33
+ return self.com_object.RemoteTimeAutoAdjust
34
+
35
+ @remote_time_auto_adjust.setter
36
+ def remote_time_auto_adjust(self, value: bool):
37
+ self.com_object.RemoteTimeAutoAdjust = value
38
+
39
+ @property
40
+ def rt_server(self) -> str:
41
+ return self.com_object.RTServer
42
+
43
+ @rt_server.setter
44
+ def rt_server(self, value: str):
45
+ self.com_object.RTServer = value
46
+
47
+ def connect(self):
48
+ self.com_object.Connect()
49
+
50
+ def disconnect(self):
51
+ self.com_object.Disconnect()
52
+
53
+ def get_rt_server_occupancy_info(self, remote_address: str) -> 'RTServerOccupancyInfo':
54
+ return RTServerOccupancyInfo(self.com_object.GetRTServerOccupancyInfo(remote_address))
55
+
56
+
57
+ class RTServerOccupancyInfo:
58
+ """
59
+ Represents the occupancy information of a remote test server.
60
+ """
61
+ def __init__(self, com_object) -> None:
62
+ self.com_object = com_object
63
+
64
+ @property
65
+ def client(self) -> str:
66
+ return self.com_object.Client
67
+
68
+ @property
69
+ def used_in_distributed_mode(self) -> bool:
70
+ return self.com_object.UsedInDistributedMode
71
+
72
+ @property
73
+ def used_in_standalone_mode(self) -> bool:
74
+ return self.com_object.UsedInStandaloneMode