pyxcp 0.25.2__cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.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 (151) hide show
  1. pyxcp/__init__.py +20 -0
  2. pyxcp/aml/EtasCANMonitoring.a2l +82 -0
  3. pyxcp/aml/EtasCANMonitoring.aml +67 -0
  4. pyxcp/aml/XCP_Common.aml +408 -0
  5. pyxcp/aml/XCPonCAN.aml +78 -0
  6. pyxcp/aml/XCPonEth.aml +33 -0
  7. pyxcp/aml/XCPonFlx.aml +113 -0
  8. pyxcp/aml/XCPonSxI.aml +66 -0
  9. pyxcp/aml/XCPonUSB.aml +106 -0
  10. pyxcp/aml/ifdata_CAN.a2l +20 -0
  11. pyxcp/aml/ifdata_Eth.a2l +11 -0
  12. pyxcp/aml/ifdata_Flx.a2l +94 -0
  13. pyxcp/aml/ifdata_SxI.a2l +13 -0
  14. pyxcp/aml/ifdata_USB.a2l +81 -0
  15. pyxcp/asam/__init__.py +0 -0
  16. pyxcp/asam/types.py +131 -0
  17. pyxcp/asamkeydll +0 -0
  18. pyxcp/asamkeydll.c +116 -0
  19. pyxcp/asamkeydll.sh +2 -0
  20. pyxcp/checksum.py +732 -0
  21. pyxcp/cmdline.py +83 -0
  22. pyxcp/config/__init__.py +1257 -0
  23. pyxcp/config/legacy.py +120 -0
  24. pyxcp/constants.py +47 -0
  25. pyxcp/cpp_ext/__init__.py +0 -0
  26. pyxcp/cpp_ext/aligned_buffer.hpp +168 -0
  27. pyxcp/cpp_ext/bin.hpp +105 -0
  28. pyxcp/cpp_ext/blockmem.hpp +58 -0
  29. pyxcp/cpp_ext/cpp_ext.cpython-310-x86_64-linux-gnu.so +0 -0
  30. pyxcp/cpp_ext/cpp_ext.cpython-311-x86_64-linux-gnu.so +0 -0
  31. pyxcp/cpp_ext/cpp_ext.cpython-312-x86_64-linux-gnu.so +0 -0
  32. pyxcp/cpp_ext/cpp_ext.cpython-313-x86_64-linux-gnu.so +0 -0
  33. pyxcp/cpp_ext/daqlist.hpp +374 -0
  34. pyxcp/cpp_ext/event.hpp +67 -0
  35. pyxcp/cpp_ext/extension_wrapper.cpp +131 -0
  36. pyxcp/cpp_ext/framing.hpp +360 -0
  37. pyxcp/cpp_ext/helper.hpp +280 -0
  38. pyxcp/cpp_ext/mcobject.hpp +248 -0
  39. pyxcp/cpp_ext/sxi_framing.hpp +332 -0
  40. pyxcp/cpp_ext/tsqueue.hpp +46 -0
  41. pyxcp/daq_stim/__init__.py +306 -0
  42. pyxcp/daq_stim/optimize/__init__.py +67 -0
  43. pyxcp/daq_stim/optimize/binpacking.py +41 -0
  44. pyxcp/daq_stim/scheduler.cpp +62 -0
  45. pyxcp/daq_stim/scheduler.hpp +75 -0
  46. pyxcp/daq_stim/stim.cpp +13 -0
  47. pyxcp/daq_stim/stim.cpython-310-x86_64-linux-gnu.so +0 -0
  48. pyxcp/daq_stim/stim.cpython-311-x86_64-linux-gnu.so +0 -0
  49. pyxcp/daq_stim/stim.cpython-312-x86_64-linux-gnu.so +0 -0
  50. pyxcp/daq_stim/stim.cpython-313-x86_64-linux-gnu.so +0 -0
  51. pyxcp/daq_stim/stim.hpp +604 -0
  52. pyxcp/daq_stim/stim_wrapper.cpp +50 -0
  53. pyxcp/dllif.py +100 -0
  54. pyxcp/errormatrix.py +878 -0
  55. pyxcp/examples/conf_can.toml +19 -0
  56. pyxcp/examples/conf_can_user.toml +16 -0
  57. pyxcp/examples/conf_can_vector.json +11 -0
  58. pyxcp/examples/conf_can_vector.toml +11 -0
  59. pyxcp/examples/conf_eth.toml +9 -0
  60. pyxcp/examples/conf_nixnet.json +20 -0
  61. pyxcp/examples/conf_socket_can.toml +12 -0
  62. pyxcp/examples/run_daq.py +165 -0
  63. pyxcp/examples/xcp_policy.py +60 -0
  64. pyxcp/examples/xcp_read_benchmark.py +38 -0
  65. pyxcp/examples/xcp_skel.py +48 -0
  66. pyxcp/examples/xcp_unlock.py +38 -0
  67. pyxcp/examples/xcp_user_supplied_driver.py +43 -0
  68. pyxcp/examples/xcphello.py +79 -0
  69. pyxcp/examples/xcphello_recorder.py +107 -0
  70. pyxcp/master/__init__.py +10 -0
  71. pyxcp/master/errorhandler.py +677 -0
  72. pyxcp/master/master.py +2645 -0
  73. pyxcp/py.typed +0 -0
  74. pyxcp/recorder/.idea/.gitignore +8 -0
  75. pyxcp/recorder/.idea/misc.xml +4 -0
  76. pyxcp/recorder/.idea/modules.xml +8 -0
  77. pyxcp/recorder/.idea/recorder.iml +6 -0
  78. pyxcp/recorder/.idea/sonarlint/issuestore/3/8/3808afc69ac1edb9d760000a2f137335b1b99728 +7 -0
  79. pyxcp/recorder/.idea/sonarlint/issuestore/9/a/9a2aa4db38d3115ed60da621e012c0efc0172aae +0 -0
  80. pyxcp/recorder/.idea/sonarlint/issuestore/b/4/b49006702b459496a8e8c94ebe60947108361b91 +0 -0
  81. pyxcp/recorder/.idea/sonarlint/issuestore/index.pb +7 -0
  82. pyxcp/recorder/.idea/sonarlint/securityhotspotstore/3/8/3808afc69ac1edb9d760000a2f137335b1b99728 +0 -0
  83. pyxcp/recorder/.idea/sonarlint/securityhotspotstore/9/a/9a2aa4db38d3115ed60da621e012c0efc0172aae +0 -0
  84. pyxcp/recorder/.idea/sonarlint/securityhotspotstore/b/4/b49006702b459496a8e8c94ebe60947108361b91 +0 -0
  85. pyxcp/recorder/.idea/sonarlint/securityhotspotstore/index.pb +7 -0
  86. pyxcp/recorder/.idea/vcs.xml +10 -0
  87. pyxcp/recorder/__init__.py +96 -0
  88. pyxcp/recorder/build_clang.cmd +1 -0
  89. pyxcp/recorder/build_clang.sh +2 -0
  90. pyxcp/recorder/build_gcc.cmd +1 -0
  91. pyxcp/recorder/build_gcc.sh +2 -0
  92. pyxcp/recorder/build_gcc_arm.sh +2 -0
  93. pyxcp/recorder/converter/__init__.py +445 -0
  94. pyxcp/recorder/lz4.c +2829 -0
  95. pyxcp/recorder/lz4.h +879 -0
  96. pyxcp/recorder/lz4hc.c +2041 -0
  97. pyxcp/recorder/lz4hc.h +413 -0
  98. pyxcp/recorder/mio.hpp +1714 -0
  99. pyxcp/recorder/reader.hpp +138 -0
  100. pyxcp/recorder/reco.py +278 -0
  101. pyxcp/recorder/recorder.rst +0 -0
  102. pyxcp/recorder/rekorder.cpp +59 -0
  103. pyxcp/recorder/rekorder.cpython-310-x86_64-linux-gnu.so +0 -0
  104. pyxcp/recorder/rekorder.cpython-311-x86_64-linux-gnu.so +0 -0
  105. pyxcp/recorder/rekorder.cpython-312-x86_64-linux-gnu.so +0 -0
  106. pyxcp/recorder/rekorder.cpython-313-x86_64-linux-gnu.so +0 -0
  107. pyxcp/recorder/rekorder.hpp +274 -0
  108. pyxcp/recorder/setup.py +41 -0
  109. pyxcp/recorder/test_reko.py +34 -0
  110. pyxcp/recorder/unfolder.hpp +1354 -0
  111. pyxcp/recorder/wrap.cpp +184 -0
  112. pyxcp/recorder/writer.hpp +302 -0
  113. pyxcp/scripts/__init__.py +0 -0
  114. pyxcp/scripts/pyxcp_probe_can_drivers.py +20 -0
  115. pyxcp/scripts/xcp_examples.py +64 -0
  116. pyxcp/scripts/xcp_fetch_a2l.py +40 -0
  117. pyxcp/scripts/xcp_id_scanner.py +18 -0
  118. pyxcp/scripts/xcp_info.py +144 -0
  119. pyxcp/scripts/xcp_profile.py +26 -0
  120. pyxcp/scripts/xmraw_converter.py +31 -0
  121. pyxcp/stim/__init__.py +0 -0
  122. pyxcp/tests/test_asam_types.py +24 -0
  123. pyxcp/tests/test_binpacking.py +186 -0
  124. pyxcp/tests/test_can.py +1324 -0
  125. pyxcp/tests/test_checksum.py +95 -0
  126. pyxcp/tests/test_daq.py +193 -0
  127. pyxcp/tests/test_daq_opt.py +426 -0
  128. pyxcp/tests/test_frame_padding.py +156 -0
  129. pyxcp/tests/test_framing.py +262 -0
  130. pyxcp/tests/test_master.py +2116 -0
  131. pyxcp/tests/test_transport.py +177 -0
  132. pyxcp/tests/test_utils.py +30 -0
  133. pyxcp/timing.py +60 -0
  134. pyxcp/transport/__init__.py +13 -0
  135. pyxcp/transport/base.py +484 -0
  136. pyxcp/transport/base_transport.hpp +0 -0
  137. pyxcp/transport/can.py +660 -0
  138. pyxcp/transport/eth.py +254 -0
  139. pyxcp/transport/sxi.py +209 -0
  140. pyxcp/transport/transport_ext.hpp +214 -0
  141. pyxcp/transport/transport_wrapper.cpp +249 -0
  142. pyxcp/transport/usb_transport.py +229 -0
  143. pyxcp/types.py +987 -0
  144. pyxcp/utils.py +127 -0
  145. pyxcp/vector/__init__.py +0 -0
  146. pyxcp/vector/map.py +82 -0
  147. pyxcp-0.25.2.dist-info/METADATA +341 -0
  148. pyxcp-0.25.2.dist-info/RECORD +151 -0
  149. pyxcp-0.25.2.dist-info/WHEEL +6 -0
  150. pyxcp-0.25.2.dist-info/entry_points.txt +9 -0
  151. pyxcp-0.25.2.dist-info/licenses/LICENSE +165 -0
pyxcp/errormatrix.py ADDED
@@ -0,0 +1,878 @@
1
+ #!/usr/bin/env python
2
+ """Types and structures to support error-handling as specified by XCP."""
3
+
4
+ import enum
5
+ from collections import namedtuple
6
+
7
+ from pyxcp.types import Command, XcpError
8
+
9
+
10
+ Handler = namedtuple("Handler", "preAction action")
11
+
12
+ TIMEOUT = 255
13
+
14
+
15
+ class PreAction(enum.IntEnum):
16
+ """Pre-action to be taken, s. XCP spec."""
17
+
18
+ NONE = 0
19
+ WAIT_T7 = 1
20
+ SYNCH = 2
21
+ GET_SEED_UNLOCK = 3
22
+ SET_MTA = 4
23
+ SET_DAQ_PTR = 6
24
+ START_STOP_X = 7
25
+ REINIT_DAQ = 8
26
+ DISPLAY_ERROR = 9
27
+ DOWNLOAD = 10
28
+ PROGRAM = 11
29
+ UPLOAD = 12
30
+ UNLOCK_SLAVE = 13
31
+
32
+
33
+ class Action(enum.IntEnum):
34
+ """Action to be taken, s. XCP spec."""
35
+
36
+ NONE = 0
37
+ DISPLAY_ERROR = 1
38
+ RETRY_SYNTAX = 2
39
+ RETRY_PARAM = 3
40
+ USE_A2L = 4 # Please refer to your A2L database.
41
+ USE_ALTERATIVE = 5
42
+ REPEAT = 6
43
+ REPEAT_2_TIMES = 7
44
+ REPEAT_INF_TIMES = 8
45
+ RESTART_SESSION = 9
46
+ TERMINATE_SESSION = 10
47
+ SKIP = 11
48
+ NEW_FLASH_WARE = 12
49
+
50
+
51
+ class Timeout(enum.IntEnum):
52
+ """Various timeouts, s. XCP spec."""
53
+
54
+ T1 = 0
55
+ T2 = 1
56
+ T3 = 2
57
+ T4 = 3
58
+ T5 = 4
59
+ T6 = 5
60
+ T7 = 6
61
+
62
+
63
+ class Severity(enum.IntEnum):
64
+ """Severity of error.
65
+ ---
66
+ S0 = Information
67
+ S1 = Warning / Request
68
+ S2 = Resolvable Error
69
+ S3 = Fatal Error
70
+ """
71
+
72
+ S0 = 0
73
+ S1 = 1
74
+ S2 = 2
75
+ S3 = 3
76
+
77
+
78
+ ERROR_TABLE = {
79
+ XcpError.ERR_CMD_SYNCH: ("Command processor synchronization.", Severity.S0),
80
+ XcpError.ERR_CMD_BUSY: ("Command was not executed.", Severity.S2),
81
+ XcpError.ERR_DAQ_ACTIVE: ("Command rejected because DAQ is running.", Severity.S2),
82
+ XcpError.ERR_PGM_ACTIVE: ("Command rejected because PGM is running.", Severity.S2),
83
+ XcpError.ERR_CMD_UNKNOWN: (
84
+ "Unknown command or not implemented optional command.",
85
+ Severity.S2,
86
+ ),
87
+ XcpError.ERR_CMD_SYNTAX: ("Command syntax invalid", Severity.S2),
88
+ XcpError.ERR_OUT_OF_RANGE: (
89
+ "Command syntax valid but command parameter(s) out of range.",
90
+ Severity.S2,
91
+ ),
92
+ XcpError.ERR_WRITE_PROTECTED: (
93
+ "The memory location is write protected.",
94
+ Severity.S2,
95
+ ),
96
+ XcpError.ERR_ACCESS_DENIED: ("The memory location is not accessible.", Severity.S2),
97
+ XcpError.ERR_ACCESS_LOCKED: ("Access denied, Seed & Key is required", Severity.S2),
98
+ XcpError.ERR_PAGE_NOT_VALID: ("Selected page not available", Severity.S2),
99
+ XcpError.ERR_MODE_NOT_VALID: ("Selected page mode not available", Severity.S2),
100
+ XcpError.ERR_SEGMENT_NOT_VALID: ("Selected segment not valid", Severity.S2),
101
+ XcpError.ERR_SEQUENCE: ("Sequence error", Severity.S2),
102
+ XcpError.ERR_DAQ_CONFIG: ("DAQ configuration not valid", Severity.S2),
103
+ XcpError.ERR_MEMORY_OVERFLOW: ("Memory overflow error", Severity.S2),
104
+ XcpError.ERR_GENERIC: ("Generic error.", Severity.S2),
105
+ XcpError.ERR_VERIFY: (
106
+ "The slave internal program verify routine detects an error.",
107
+ Severity.S3,
108
+ ),
109
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
110
+ "Access to the requested resource is temporary not possible",
111
+ Severity.S2,
112
+ ),
113
+ }
114
+
115
+
116
+ ERROR_MATRIX = {
117
+ Command.CONNECT: {
118
+ XcpError.ERR_TIMEOUT: ((PreAction.NONE,), Action.REPEAT_INF_TIMES),
119
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
120
+ PreAction.DISPLAY_ERROR,
121
+ Action.REPEAT,
122
+ ),
123
+ },
124
+ # CONNECT(USER_DEFINED) timeout t6 wait t7 repeat 8 times
125
+ Command.DISCONNECT: {
126
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
127
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
128
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
129
+ },
130
+ Command.GET_STATUS: {
131
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
132
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
133
+ PreAction.DISPLAY_ERROR,
134
+ Action.REPEAT,
135
+ ),
136
+ },
137
+ Command.SYNCH: {
138
+ XcpError.ERR_TIMEOUT: ((PreAction.NONE,), Action.REPEAT_2_TIMES),
139
+ XcpError.ERR_CMD_SYNCH: ((PreAction.NONE), Action.SKIP),
140
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.RESTART_SESSION),
141
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
142
+ PreAction.DISPLAY_ERROR,
143
+ Action.REPEAT,
144
+ ),
145
+ },
146
+ Command.GET_COMM_MODE_INFO: {
147
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
148
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
149
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
150
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
151
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
152
+ },
153
+ Command.GET_ID: {
154
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
155
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
156
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
157
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
158
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
159
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
160
+ },
161
+ Command.SET_REQUEST: {
162
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
163
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
164
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
165
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
166
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
167
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
168
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
169
+ PreAction.DISPLAY_ERROR,
170
+ Action.REPEAT,
171
+ ),
172
+ },
173
+ Command.GET_SEED: {
174
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
175
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
176
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
177
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
178
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
179
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
180
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
181
+ PreAction.DISPLAY_ERROR,
182
+ Action.REPEAT,
183
+ ),
184
+ },
185
+ Command.UNLOCK: {
186
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
187
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
188
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
189
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
190
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
191
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
192
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.NONE), Action.RESTART_SESSION),
193
+ XcpError.ERR_SEQUENCE: ((PreAction.GET_SEED_UNLOCK), Action.REPEAT_2_TIMES),
194
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
195
+ PreAction.DISPLAY_ERROR,
196
+ Action.REPEAT,
197
+ ),
198
+ },
199
+ Command.SET_MTA: {
200
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
201
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
202
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
203
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
204
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
205
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
206
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
207
+ PreAction.DISPLAY_ERROR,
208
+ Action.REPEAT,
209
+ ),
210
+ },
211
+ Command.UPLOAD: {
212
+ XcpError.ERR_TIMEOUT: (
213
+ (PreAction.SYNCH, PreAction.SET_MTA),
214
+ Action.REPEAT_2_TIMES,
215
+ ),
216
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
217
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
218
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
219
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
220
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
221
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
222
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
223
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
224
+ PreAction.DISPLAY_ERROR,
225
+ Action.REPEAT,
226
+ ),
227
+ },
228
+ Command.SHORT_UPLOAD: {
229
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
230
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
231
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
232
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_ALTERATIVE),
233
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
234
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
235
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
236
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
237
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
238
+ PreAction.DISPLAY_ERROR,
239
+ Action.REPEAT,
240
+ ),
241
+ },
242
+ Command.BUILD_CHECKSUM: {
243
+ XcpError.ERR_TIMEOUT: (
244
+ (PreAction.SYNCH, PreAction.SET_MTA),
245
+ Action.REPEAT_2_TIMES,
246
+ ),
247
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
248
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
249
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
250
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
251
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
252
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
253
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
254
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
255
+ PreAction.DISPLAY_ERROR,
256
+ Action.REPEAT,
257
+ ),
258
+ },
259
+ Command.TRANSPORT_LAYER_CMD: {
260
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
261
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
262
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
263
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
264
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
265
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
266
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
267
+ PreAction.DISPLAY_ERROR,
268
+ Action.REPEAT,
269
+ ),
270
+ },
271
+ Command.USER_CMD: {
272
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
273
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
274
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
275
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
276
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
277
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
278
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
279
+ PreAction.DISPLAY_ERROR,
280
+ Action.REPEAT,
281
+ ),
282
+ },
283
+ Command.DOWNLOAD: {
284
+ XcpError.ERR_TIMEOUT: (
285
+ (PreAction.SYNCH, PreAction.SET_MTA),
286
+ Action.REPEAT_2_TIMES,
287
+ ),
288
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
289
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
290
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
291
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
292
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
293
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
294
+ XcpError.ERR_WRITE_PROTECTED: ((PreAction.NONE), Action.DISPLAY_ERROR),
295
+ XcpError.ERR_MEMORY_OVERFLOW: ((PreAction.NONE), Action.DISPLAY_ERROR),
296
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
297
+ PreAction.DISPLAY_ERROR,
298
+ Action.REPEAT,
299
+ ),
300
+ },
301
+ Command.DOWNLOAD_NEXT: {
302
+ XcpError.ERR_TIMEOUT: (
303
+ (PreAction.SYNCH, PreAction.DOWNLOAD),
304
+ Action.REPEAT_2_TIMES,
305
+ ),
306
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
307
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
308
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.SET_MTA), Action.USE_ALTERATIVE),
309
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
310
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
311
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
312
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
313
+ XcpError.ERR_WRITE_PROTECTED: ((PreAction.NONE), Action.DISPLAY_ERROR),
314
+ XcpError.ERR_MEMORY_OVERFLOW: ((PreAction.NONE), Action.DISPLAY_ERROR),
315
+ XcpError.ERR_SEQUENCE: ((PreAction.SET_MTA), Action.REPEAT_2_TIMES),
316
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
317
+ PreAction.DISPLAY_ERROR,
318
+ Action.REPEAT,
319
+ ),
320
+ },
321
+ Command.DOWNLOAD_MAX: {
322
+ XcpError.ERR_TIMEOUT: (
323
+ (PreAction.SYNCH, PreAction.SET_MTA),
324
+ Action.REPEAT_2_TIMES,
325
+ ),
326
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
327
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
328
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.SET_MTA), Action.USE_ALTERATIVE),
329
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
330
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
331
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
332
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
333
+ XcpError.ERR_WRITE_PROTECTED: ((PreAction.NONE), Action.DISPLAY_ERROR),
334
+ XcpError.ERR_MEMORY_OVERFLOW: ((PreAction.NONE), Action.DISPLAY_ERROR),
335
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
336
+ PreAction.DISPLAY_ERROR,
337
+ Action.REPEAT,
338
+ ),
339
+ },
340
+ Command.SHORT_DOWNLOAD: {
341
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
342
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
343
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
344
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_ALTERATIVE),
345
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
346
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
347
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
348
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
349
+ XcpError.ERR_WRITE_PROTECTED: ((PreAction.NONE), Action.DISPLAY_ERROR),
350
+ XcpError.ERR_MEMORY_OVERFLOW: ((PreAction.NONE), Action.DISPLAY_ERROR),
351
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
352
+ PreAction.DISPLAY_ERROR,
353
+ Action.REPEAT,
354
+ ),
355
+ },
356
+ Command.MODIFY_BITS: {
357
+ XcpError.ERR_TIMEOUT: (
358
+ (PreAction.SYNCH, PreAction.SET_MTA),
359
+ Action.REPEAT_2_TIMES,
360
+ ),
361
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
362
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
363
+ XcpError.ERR_CMD_UNKNOWN: (
364
+ (PreAction.UPLOAD, PreAction.DOWNLOAD),
365
+ Action.USE_ALTERATIVE,
366
+ ),
367
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
368
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
369
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
370
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
371
+ XcpError.ERR_WRITE_PROTECTED: ((PreAction.NONE), Action.DISPLAY_ERROR),
372
+ XcpError.ERR_MEMORY_OVERFLOW: ((PreAction.NONE), Action.DISPLAY_ERROR),
373
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
374
+ PreAction.DISPLAY_ERROR,
375
+ Action.REPEAT,
376
+ ),
377
+ },
378
+ Command.SET_CAL_PAGE: {
379
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
380
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
381
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
382
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
383
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
384
+ XcpError.ERR_PAGE_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
385
+ XcpError.ERR_MODE_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
386
+ XcpError.ERR_SEGMENT_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
387
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
388
+ PreAction.DISPLAY_ERROR,
389
+ Action.REPEAT,
390
+ ),
391
+ },
392
+ Command.GET_CAL_PAGE: {
393
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
394
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
395
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
396
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
397
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
398
+ XcpError.ERR_PAGE_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
399
+ XcpError.ERR_MODE_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
400
+ XcpError.ERR_SEGMENT_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
401
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
402
+ PreAction.DISPLAY_ERROR,
403
+ Action.REPEAT,
404
+ ),
405
+ },
406
+ Command.GET_PAG_PROCESSOR_INFO: {
407
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
408
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
409
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
410
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_A2L),
411
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
412
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
413
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
414
+ },
415
+ Command.GET_SEGMENT_INFO: {
416
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
417
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
418
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
419
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_A2L),
420
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
421
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
422
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
423
+ XcpError.ERR_SEGMENT_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
424
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
425
+ },
426
+ Command.GET_PAGE_INFO: {
427
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
428
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
429
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
430
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_A2L),
431
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
432
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
433
+ XcpError.ERR_PAGE_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
434
+ XcpError.ERR_SEGMENT_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
435
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
436
+ },
437
+ Command.SET_SEGMENT_MODE: {
438
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
439
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
440
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
441
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
442
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
443
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
444
+ XcpError.ERR_MODE_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
445
+ XcpError.ERR_SEGMENT_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
446
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
447
+ PreAction.DISPLAY_ERROR,
448
+ Action.REPEAT,
449
+ ),
450
+ },
451
+ Command.GET_SEGMENT_MODE: {
452
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
453
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
454
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
455
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
456
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
457
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
458
+ XcpError.ERR_SEGMENT_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
459
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
460
+ PreAction.DISPLAY_ERROR,
461
+ Action.REPEAT,
462
+ ),
463
+ },
464
+ Command.COPY_CAL_PAGE: {
465
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
466
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
467
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
468
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
469
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
470
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
471
+ XcpError.ERR_PAGE_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
472
+ XcpError.ERR_SEGMENT_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
473
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
474
+ PreAction.DISPLAY_ERROR,
475
+ Action.REPEAT,
476
+ ),
477
+ },
478
+ Command.SET_DAQ_PTR: {
479
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
480
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
481
+ XcpError.ERR_DAQ_ACTIVE: ((PreAction.NONE), Action.REPEAT_2_TIMES),
482
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
483
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
484
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
485
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
486
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
487
+ PreAction.DISPLAY_ERROR,
488
+ Action.REPEAT,
489
+ ),
490
+ },
491
+ Command.WRITE_DAQ: {
492
+ XcpError.ERR_TIMEOUT: (
493
+ (PreAction.SYNCH, PreAction.SET_DAQ_PTR),
494
+ Action.REPEAT_2_TIMES,
495
+ ),
496
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
497
+ XcpError.ERR_DAQ_ACTIVE: ((PreAction.START_STOP_X), Action.REPEAT_2_TIMES),
498
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
499
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
500
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
501
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
502
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
503
+ XcpError.ERR_WRITE_PROTECTED: ((PreAction.NONE), Action.DISPLAY_ERROR),
504
+ XcpError.ERR_DAQ_CONFIG: ((PreAction.NONE), Action.DISPLAY_ERROR),
505
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
506
+ PreAction.DISPLAY_ERROR,
507
+ Action.REPEAT,
508
+ ),
509
+ },
510
+ Command.SET_DAQ_LIST_MODE: {
511
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
512
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
513
+ XcpError.ERR_DAQ_ACTIVE: ((PreAction.START_STOP_X), Action.REPEAT_2_TIMES),
514
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
515
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
516
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
517
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
518
+ XcpError.ERR_MODE_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
519
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
520
+ PreAction.DISPLAY_ERROR,
521
+ Action.REPEAT,
522
+ ),
523
+ },
524
+ Command.START_STOP_DAQ_LIST: {
525
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
526
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
527
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
528
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
529
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
530
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
531
+ XcpError.ERR_MODE_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
532
+ XcpError.ERR_DAQ_CONFIG: ((PreAction.NONE), Action.DISPLAY_ERROR),
533
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
534
+ PreAction.DISPLAY_ERROR,
535
+ Action.REPEAT,
536
+ ),
537
+ },
538
+ Command.START_STOP_SYNCH: {
539
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
540
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
541
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
542
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
543
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
544
+ XcpError.ERR_MODE_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
545
+ XcpError.ERR_DAQ_CONFIG: ((PreAction.NONE), Action.DISPLAY_ERROR),
546
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
547
+ PreAction.DISPLAY_ERROR,
548
+ Action.REPEAT,
549
+ ),
550
+ },
551
+ Command.CLEAR_DAQ_LIST: {
552
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
553
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
554
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
555
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
556
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
557
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
558
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
559
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
560
+ PreAction.DISPLAY_ERROR,
561
+ Action.REPEAT,
562
+ ),
563
+ },
564
+ Command.GET_DAQ_LIST_INFO: {
565
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
566
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
567
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
568
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_A2L),
569
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
570
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
571
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
572
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
573
+ },
574
+ Command.WRITE_DAQ_MULTIPLE: {
575
+ XcpError.ERR_TIMEOUT: (
576
+ (PreAction.SYNCH, PreAction.SET_DAQ_PTR),
577
+ Action.REPEAT_2_TIMES,
578
+ ),
579
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
580
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
581
+ XcpError.ERR_DAQ_ACTIVE: ((PreAction.START_STOP_X), Action.REPEAT_2_TIMES),
582
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
583
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
584
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
585
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
586
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
587
+ XcpError.ERR_WRITE_PROTECTED: ((PreAction.NONE), Action.DISPLAY_ERROR),
588
+ XcpError.ERR_DAQ_CONFIG: ((PreAction.NONE), Action.DISPLAY_ERROR),
589
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
590
+ PreAction.DISPLAY_ERROR,
591
+ Action.REPEAT,
592
+ ),
593
+ },
594
+ Command.READ_DAQ: {
595
+ XcpError.ERR_TIMEOUT: (
596
+ (PreAction.SYNCH, PreAction.SET_DAQ_PTR),
597
+ Action.REPEAT_2_TIMES,
598
+ ),
599
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
600
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
601
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
602
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
603
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
604
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
605
+ PreAction.DISPLAY_ERROR,
606
+ Action.REPEAT,
607
+ ),
608
+ },
609
+ Command.GET_DAQ_CLOCK: {
610
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
611
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
612
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
613
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
614
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
615
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
616
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
617
+ },
618
+ Command.GET_DAQ_PROCESSOR_INFO: {
619
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
620
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
621
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
622
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_A2L),
623
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
624
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
625
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
626
+ },
627
+ Command.GET_DAQ_RESOLUTION_INFO: {
628
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
629
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
630
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
631
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_A2L),
632
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
633
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
634
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
635
+ },
636
+ Command.GET_DAQ_LIST_MODE: {
637
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
638
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
639
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
640
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
641
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
642
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
643
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
644
+ PreAction.DISPLAY_ERROR,
645
+ Action.REPEAT,
646
+ ),
647
+ },
648
+ Command.GET_DAQ_EVENT_INFO: {
649
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
650
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
651
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
652
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_A2L),
653
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
654
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
655
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
656
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
657
+ },
658
+ Command.FREE_DAQ: {
659
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
660
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
661
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
662
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
663
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
664
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
665
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
666
+ PreAction.DISPLAY_ERROR,
667
+ Action.REPEAT,
668
+ ),
669
+ },
670
+ Command.ALLOC_DAQ: {
671
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
672
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
673
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
674
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
675
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
676
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
677
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
678
+ XcpError.ERR_SEQUENCE: ((PreAction.REINIT_DAQ), Action.REPEAT_2_TIMES),
679
+ XcpError.ERR_MEMORY_OVERFLOW: ((PreAction.REINIT_DAQ), Action.RETRY_PARAM),
680
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
681
+ PreAction.DISPLAY_ERROR,
682
+ Action.REPEAT,
683
+ ),
684
+ },
685
+ Command.ALLOC_ODT: {
686
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
687
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
688
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
689
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
690
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
691
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
692
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
693
+ XcpError.ERR_SEQUENCE: ((PreAction.REINIT_DAQ), Action.REPEAT_2_TIMES),
694
+ XcpError.ERR_MEMORY_OVERFLOW: ((PreAction.REINIT_DAQ), Action.RETRY_PARAM),
695
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
696
+ PreAction.DISPLAY_ERROR,
697
+ Action.REPEAT,
698
+ ),
699
+ },
700
+ Command.ALLOC_ODT_ENTRY: {
701
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
702
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
703
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
704
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
705
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
706
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
707
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
708
+ XcpError.ERR_SEQUENCE: ((PreAction.REINIT_DAQ), Action.REPEAT_2_TIMES),
709
+ XcpError.ERR_MEMORY_OVERFLOW: ((PreAction.REINIT_DAQ), Action.RETRY_PARAM),
710
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
711
+ PreAction.DISPLAY_ERROR,
712
+ Action.REPEAT,
713
+ ),
714
+ },
715
+ Command.PROGRAM_START: {
716
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
717
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
718
+ XcpError.ERR_DAQ_ACTIVE: ((PreAction.START_STOP_X), Action.REPEAT_2_TIMES),
719
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
720
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
721
+ XcpError.ERR_GENERIC: ((PreAction.NONE), Action.RESTART_SESSION),
722
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
723
+ PreAction.DISPLAY_ERROR,
724
+ Action.REPEAT,
725
+ ),
726
+ },
727
+ Command.PROGRAM_CLEAR: {
728
+ XcpError.ERR_TIMEOUT: (
729
+ (PreAction.SYNCH, PreAction.SET_MTA),
730
+ Action.REPEAT_2_TIMES,
731
+ ),
732
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
733
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
734
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
735
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
736
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
737
+ XcpError.ERR_SEQUENCE: ((PreAction.NONE), Action.REPEAT_2_TIMES),
738
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
739
+ PreAction.DISPLAY_ERROR,
740
+ Action.REPEAT,
741
+ ),
742
+ },
743
+ Command.PROGRAM: {
744
+ XcpError.ERR_TIMEOUT: (
745
+ (PreAction.SYNCH, PreAction.SET_MTA),
746
+ Action.REPEAT_2_TIMES,
747
+ ),
748
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
749
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
750
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
751
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
752
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
753
+ XcpError.ERR_SEQUENCE: ((PreAction.NONE), Action.REPEAT_2_TIMES),
754
+ XcpError.ERR_MEMORY_OVERFLOW: ((PreAction.NONE), Action.DISPLAY_ERROR),
755
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
756
+ PreAction.DISPLAY_ERROR,
757
+ Action.REPEAT,
758
+ ),
759
+ },
760
+ Command.PROGRAM_RESET: {
761
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
762
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
763
+ XcpError.ERR_PGM_ACTIVE: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
764
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
765
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
766
+ XcpError.ERR_SEQUENCE: ((PreAction.NONE), Action.REPEAT_2_TIMES),
767
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
768
+ PreAction.DISPLAY_ERROR,
769
+ Action.REPEAT,
770
+ ),
771
+ },
772
+ Command.GET_PGM_PROCESSOR_INFO: {
773
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
774
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
775
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_A2L),
776
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
777
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
778
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
779
+ },
780
+ Command.GET_SECTOR_INFO: {
781
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
782
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
783
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_A2L),
784
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
785
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
786
+ XcpError.ERR_MODE_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
787
+ XcpError.ERR_SEGMENT_NOT_VALID: ((PreAction.NONE), Action.RETRY_PARAM),
788
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (PreAction.NONE, Action.SKIP),
789
+ },
790
+ Command.PROGRAM_PREPARE: {
791
+ XcpError.ERR_TIMEOUT: (
792
+ (PreAction.SYNCH, PreAction.SET_MTA),
793
+ Action.REPEAT_2_TIMES,
794
+ ),
795
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
796
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
797
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
798
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
799
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
800
+ XcpError.ERR_SEQUENCE: ((PreAction.NONE), Action.REPEAT_2_TIMES),
801
+ XcpError.ERR_GENERIC: ((PreAction.NONE), Action.RESTART_SESSION),
802
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
803
+ PreAction.DISPLAY_ERROR,
804
+ Action.REPEAT,
805
+ ),
806
+ },
807
+ Command.PROGRAM_FORMAT: {
808
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
809
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
810
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
811
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
812
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
813
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
814
+ XcpError.ERR_SEQUENCE: ((PreAction.NONE), Action.REPEAT_2_TIMES),
815
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
816
+ PreAction.DISPLAY_ERROR,
817
+ Action.REPEAT,
818
+ ),
819
+ },
820
+ Command.PROGRAM_NEXT: {
821
+ XcpError.ERR_TIMEOUT: (
822
+ (PreAction.SYNCH, PreAction.PROGRAM),
823
+ Action.REPEAT_2_TIMES,
824
+ ),
825
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
826
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_ALTERATIVE),
827
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
828
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
829
+ XcpError.ERR_ACCESS_DENIED: ((PreAction.NONE), Action.DISPLAY_ERROR),
830
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
831
+ XcpError.ERR_MEMORY_OVERFLOW: ((PreAction.NONE), Action.DISPLAY_ERROR),
832
+ XcpError.ERR_SEQUENCE: ((PreAction.NONE), Action.REPEAT_2_TIMES),
833
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
834
+ PreAction.DISPLAY_ERROR,
835
+ Action.REPEAT,
836
+ ),
837
+ },
838
+ Command.PROGRAM_MAX: {
839
+ XcpError.ERR_TIMEOUT: (
840
+ (PreAction.SYNCH, PreAction.SET_MTA),
841
+ Action.REPEAT_2_TIMES,
842
+ ),
843
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
844
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.USE_ALTERATIVE),
845
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
846
+ XcpError.ERR_SEQUENCE: ((PreAction.NONE), Action.REPEAT_2_TIMES),
847
+ XcpError.ERR_MEMORY_OVERFLOW: ((PreAction.NONE), Action.DISPLAY_ERROR),
848
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
849
+ PreAction.DISPLAY_ERROR,
850
+ Action.REPEAT,
851
+ ),
852
+ },
853
+ Command.PROGRAM_VERIFY: {
854
+ XcpError.ERR_TIMEOUT: ((PreAction.SYNCH,), Action.REPEAT_2_TIMES),
855
+ XcpError.ERR_CMD_BUSY: ((PreAction.WAIT_T7), Action.REPEAT_INF_TIMES),
856
+ XcpError.ERR_CMD_UNKNOWN: ((PreAction.NONE), Action.DISPLAY_ERROR),
857
+ XcpError.ERR_CMD_SYNTAX: ((PreAction.NONE), Action.RETRY_SYNTAX),
858
+ XcpError.ERR_OUT_OF_RANGE: ((PreAction.NONE), Action.RETRY_PARAM),
859
+ XcpError.ERR_ACCESS_LOCKED: ((PreAction.UNLOCK_SLAVE), Action.REPEAT_2_TIMES),
860
+ XcpError.ERR_SEQUENCE: ((PreAction.NONE), Action.REPEAT_2_TIMES),
861
+ XcpError.ERR_GENERIC: ((PreAction.NONE), Action.RESTART_SESSION),
862
+ XcpError.ERR_VERIFY: ((PreAction.NONE), Action.NEW_FLASH_WARE),
863
+ XcpError.ERR_RESOURCE_TEMPORARY_NOT_ACCESSIBLE: (
864
+ PreAction.DISPLAY_ERROR,
865
+ Action.REPEAT,
866
+ ),
867
+ },
868
+ }
869
+
870
+ ALTERNATIVES = {
871
+ Command.SHORT_UPLOAD: (),
872
+ Command.DOWNLOAD_NEXT: (),
873
+ Command.DOWNLOAD_MAX: (),
874
+ Command.SHORT_DOWNLOAD: (),
875
+ Command.MODIFY_BITS: (),
876
+ Command.PROGRAM_NEXT: (),
877
+ Command.PROGRAM_MAX: (),
878
+ }