ads_proto/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug, PartialEq, Eq, Clone)]
4pub enum TryIntoError {
5    #[error("try_into failed. self is wrong response!")]
6    TryIntoResponseFailed,
7    #[error("try_into failed. self is wrong request!")]
8    TryIntoRequestFailed,
9}
10
11#[derive(Error, Debug, PartialEq, Eq, Clone)]
12pub enum AmsAddressError {
13    #[error("Failed parsing address from &str")]
14    ParseError { source: std::num::ParseIntError },
15    #[error("Split length wrong. Length is {}", length)]
16    SplitError { length: usize },
17    #[error("Supplied address length {}! Expected a length of 6", length)]
18    InvalidAddressLength { length: usize },
19}
20
21#[derive(Error, Debug, PartialEq, Eq, Clone)]
22pub enum AdsError {
23    //Global error codes
24    #[error("No error")]
25    ErrNoError,
26    #[error("Inernal error")]
27    ErrInternal,
28    #[error("No real-time")]
29    ErrNoRTime,
30    #[error("Allocation locked – memory error")]
31    ErrAllocLockedMem,
32    #[error("Mailbox full- the ADS message could not be sent. Reducing the number of ADS messages per cylce will help")]
33    ErrInsertMailBox,
34    #[error("Wrong HMSG")]
35    ErrWrongRecieveHMSG,
36    #[error("Target port not found - ADS server is not started or is not reachable")]
37    ErrTargetPortNotFound,
38    #[error("Error target computer not found - AMS route was not found")]
39    ErrTargetMachineNotFound,
40    #[error("Unknown command ID")]
41    ErrUnknownCmdId,
42    #[error("Invalid task ID")]
43    ErrBadTaskId,
44    #[error("No IO")]
45    ErrNoIO,
46    #[error("Unknown AMS command")]
47    ErrUnknownAmsCmd,
48    #[error("Wind32 error")]
49    ErrWin32Error,
50    #[error("Port not connected")]
51    ErrPortNotConnected,
52    #[error("Invalid AMS length")]
53    ErrInvalidAmsLength,
54    #[error("Invalid AMS net ID")]
55    ErrInvalidAmsNetId,
56    #[error("Installatin level is too low - TwinCat 2 licence error")]
57    ErrLowInstLevel,
58    #[error("No debuging available")]
59    ErrNoDebugingAvailable,
60    #[error("Port disabled - TwinCat system service not started")]
61    ErrPortDisabled,
62    #[error("Port already connected")]
63    ErrPortAlreadyConnected,
64    #[error("AMS sync wind32 error")]
65    ErrAmsSyncW32Error,
66    #[error("Ams sync timeout")]
67    ErrAmsSyncTimeout,
68    #[error("AMS sync error")]
69    ErrAmsSyncAmsError,
70    #[error("No index map for AMS sysnc available")]
71    ErrAmsSyncNoIndexInMap,
72    #[error("Invalid AMS port")]
73    ErrInvalidAmsPort,
74    #[error("No memory")]
75    ErrNoMemory,
76    #[error("TCP send error")]
77    ErrTcpSend,
78    #[error("Host unreachable")]
79    ErrHostUnreachable,
80    #[error("Invalid AMS fragment")]
81    ErrInvalidAmsFragment,
82    #[error("TLS send error - secure ADS connection failed")]
83    ErrTlsSend,
84    #[error("Access denied - secure ADS access denied")]
85    ErrAccessDenied,
86    //Router error codes
87    #[error("Locked memory cannot be alocated")]
88    RouterErrNoLockedMemory,
89    #[error("The router memory size could not be changed")]
90    RouterErrResizeMemory,
91    #[error("The mailbox has reached the maximum number of possible messages")]
92    RouterErrMailboxFull,
93    #[error("The debug mailbox has reached the maximum number of possible messages")]
94    RouterErrDebugBoxFull,
95    #[error("The port type is unknown")]
96    RouterErrUnknownPortType,
97    #[error("The router is not initialized")]
98    RouterErrNotInitialized,
99    #[error("The port number is already assigned")]
100    RouterErrPortAlreadyInUse,
101    #[error("The port is not registered")]
102    RouterErrNotRegistered,
103    #[error("The maximum number of ports has been reached")]
104    RouterErrNoMoreQueues,
105    #[error("The port is invalid")]
106    RouterErrInvalidPort,
107    #[error("The router is not activated")]
108    RouterErrNotActivated,
109    #[error("The mailbox has reached the maximum number for fragmented messages")]
110    RouterErrFragmentBoxFull,
111    #[error("A fragment timeout has occured")]
112    RouterErrFragmentTimeout,
113    #[error("The port is removed")]
114    RouterErrToBeRemoved,
115    //General ADS error
116    #[error("General device error")]
117    AdsErrDeviceError,
118    #[error("Service is not support by the server")]
119    AdsErrDeviceSrvNotSupp,
120    #[error("Invalid index group")]
121    AdsErrDeviceInvalidGrp,
122    #[error("Invalid index  offset")]
123    AdsErrDeviceInvalidOffset,
124    #[error("Reading or writing not permittet")]
125    AdsErrDeviceInvalidAccess,
126    #[error("Parameter size not correct")]
127    AdsErrDeviceInvalidSize,
128    #[error("Invalid data values")]
129    AdsErrDeviceInvalidData,
130    #[error("Device is not ready to operate")]
131    AdsErrDeviceNotReady,
132    #[error("Device is busy")]
133    AdsErrDeviceBusy,
134    #[error(
135        "Invalid operating system context. This can result from use of ADS function blocks in different tasks. 
136        It may be possible to resolve this through multitasking synchronization in the PLC"
137    )]
138    AdsErrDeviceInvalidContext,
139    #[error("Inusfficient memory")]
140    AdsErrDeviceNoMemory,
141    #[error("Invalid parameter values")]
142    AdsErrDeviceInvalidParm,
143    #[error("Not found (files, ...)")]
144    AdsErrDeviceNotFound,
145    #[error("Syntax error in file or command")]
146    AdsErrDeviceSyntax,
147    #[error("Objects do not match")]
148    AdsErrDeviceIncompatible,
149    #[error("Object already exists")]
150    AdsErrDeviceExists,
151    #[error("Symbol not found")]
152    AdsErrDeviceSymbolNotFound,
153    #[error("Invalid symbol version. This can occure due to an online change. Crate a new handle")]
154    AdsErrDeviceSymbolVersionInvalid,
155    #[error("Device (server) is in invalid state")]
156    AdsErrDeviceInvalidState,
157    #[error("Ads transmode not supported")]
158    AdsErrDeviceTransModeNotSupp,
159    #[error("Notification handle is invalid")]
160    AdsErrDeviceNotifyHndInvalid,
161    #[error("Notification client not registered")]
162    AdsErrDeviceClientUnknown,
163    #[error("No further notification handle available")]
164    AdsErrDeviceNoMoreHDLS,
165    #[error("Notification size too large")]
166    AdsErrDeviceInvalidWatchSize,
167    #[error("Device not initialized")]
168    AdsErrDeviceNotInit,
169    #[error("Device has a timeout")]
170    AdsErrDeviceTimeout,
171    #[error("Interface query failed")]
172    AdsErrDeviceNoInterface,
173    #[error("Wrong interface request")]
174    AdsErrDeviceInvalidInterface,
175    #[error("Class ID is invalid")]
176    AdsErrDeviceInvalidClsID,
177    #[error("Object ID is invalid")]
178    AdsErrDeviceInvalidOBJID,
179    #[error("Request pending")]
180    AdsErrDevicePending,
181    #[error("Request is aborted")]
182    AdsErrDeviceAborted,
183    #[error("Signal warning")]
184    AdsErrDeviceWarning,
185    #[error("Invalid array index")]
186    AdsErrDeviceInvalidArrayIDX,
187    #[error("Symbol not active")]
188    AdsErrDeviceSymbolNotActive,
189    #[error("Access denied")]
190    AdsErrDeviceAccessDenied,
191    #[error("Missing license")]
192    AdsErrDeviceLicenseNotFound,
193    #[error("License expired")]
194    AdsErrDeviceLicenseExpired,
195    #[error("License exceeded")]
196    AdsErrDeviceLicenseExceeded,
197    #[error("Invalid license")]
198    AdsErrDeviceLicenseInvalid,
199    #[error("License problem: System ID is invalid")]
200    AdsErrDeviceLicenseSystemID,
201    #[error("License not limited in time")]
202    AdsErrDeviceLicenseNoTimeLimit,
203    #[error("License problem: Time in the future")]
204    AdsErrDeviceLicenseFuturReissue,
205    #[error("License period too long")]
206    AdsErrDeivceLicenseTimeToLong,
207    #[error("Exception at system startup")]
208    AdsErrDeviceException,
209    #[error("License file read twice")]
210    AdsErrDeviceLicenseDublicated,
211    #[error("Invalid signature")]
212    AdsErrDeviceSignatureInvalid,
213    #[error("Invalid certificate")]
214    AdsErrDeviceCertificateInvalid,
215    #[error("Public key not known from OEM")]
216    AdsErrDeviceLicenseOemNotFound,
217    #[error("License not valid for system ID")]
218    AdsErrDeviceLicenseRestricted,
219    #[error("Demo license prohibited")]
220    AdsErrDeviceLicenseDemoDenied,
221    #[error("Invalid function ID")]
222    AdsErrDeviceInvalidFncID,
223    #[error("Outside the valid range")]
224    AdsErrDeviceOutOfRange,
225    #[error("Invalid alignment")]
226    AdsErrDeviceInvalidAlignment,
227    #[error("Invalid platform level")]
228    AdsErrDeviceLicensePlatform,
229    #[error("Context - forward to passive level")]
230    AdsErrDeviceForwardPL,
231    #[error("Context -  forward to sispatch level")]
232    AdsErrDeviceForwardDL,
233    #[error("Contect - forward to real-time")]
234    AdsErrDeviceForwardRT,
235    #[error("Client error")]
236    AdsErrClientError,
237    #[error("Service contains an invalid parameter")]
238    AdsErrClientInvalidParm,
239    #[error("Possing list is empty")]
240    AdsErrClientListEmpty,
241    #[error("Var connection already in use")]
242    AdsErrClientVarUsed,
243    #[error("The called ID is already in use")]
244    AdsErrClientDublIvokeID,
245    #[error(
246        "Timeout has occured - the remote terminal is not responding in the specific ADS timeout. 
247        The router setting of the remote terminal may be configured incorrectly"
248    )]
249    AdsErrClientSyncTimeout,
250    #[error("Error in win32 subsystem")]
251    AdsErrClientW32Error,
252    #[error("Invalid client timeout value")]
253    AdsErrClientTimeoutInvalid,
254    #[error("Port not open")]
255    AdsErrClientPortNotOpen,
256    #[error("No Ams Address")]
257    AdsErrClientNoAmsAddress,
258    #[error("Internal error in ADS sync")]
259    AdsErrClientSyncInternal,
260    #[error("Hash table overflow")]
261    AdsErrClientAddHash,
262    #[error("Key not found in the table")]
263    AdsErrClientRemoveHash,
264    #[error("No symbols in the cache")]
265    AdsErrClientNoMoreSym,
266    #[error("Invalid response received")]
267    AdsErrClientSyncResInvalid,
268    #[error("Sync port is locked")]
269    AdsErrClientSyncPortLocked,
270    //RTime error codes
271    #[error("Internal error in the real-time system")]
272    RtErrInternal,
273    #[error("Time value is not valid")]
274    RtErrBadTimerPeriods,
275    #[error("Task pointer has the invalid value 0 (zero)")]
276    RtErrInvalidTaskPtr,
277    #[error("Stack pointer has the invalid value 0 (zero)")]
278    RtErrInvalidStackPtr,
279    #[error("The requested task priority is already assigned")]
280    RtErrPrioExists,
281    #[error("No free TCB (Task control block) available. The maximum number of TCB's is 64")]
282    RtErrNoMoreTCB,
283    #[error("No free semaphores available. The maximum number of semaphores is 64")]
284    RtErrNoMoreSemas,
285    #[error(
286        "No free space available in the queue. The maximum number of positions in the queue is 64"
287    )]
288    RtErrNoMoreQueues,
289    #[error("An external synchronization interrupt is already applied")]
290    RtErrExtIrqAlreadyDef,
291    #[error("No externel sync interrupt applied")]
292    RtErrExtIrqNotDef,
293    #[error("Application of the external synchronization interrupt has failed")]
294    RtErrExtIrgInstallFaild,
295    #[error("Call of a service function in the wrong context")]
296    RtErrIrqlNotLessOrEqual,
297    #[error("Intel VT-x extension not supported")]
298    RtErrVmxNotSupported,
299    #[error("Intel VT-x extension is not enabled in the BIOS")]
300    RtErrVmxDisabled,
301    #[error("Missing function in Intel VT-x extension")]
302    RtErrVmxControlsMissing,
303    #[error("Activation of intel VT-x fails")]
304    RtErrVmxEnableFails,
305    //TCP Winsock error codes
306    #[error("Unknown Ads error code. Possibly a Win32 error code (Winsock)")]
307    ErrUnknowAdsError { error_code: u32 },
308}
309
310impl From<u32> for AdsError {
311    fn from(error_code: u32) -> Self {
312        match error_code {
313            //Global error codes
314            0 => AdsError::ErrNoError,
315            1 => AdsError::ErrInternal,
316            2 => AdsError::ErrNoRTime,
317            3 => AdsError::ErrAllocLockedMem,
318            4 => AdsError::ErrInsertMailBox,
319            5 => AdsError::ErrWrongRecieveHMSG,
320            6 => AdsError::ErrTargetPortNotFound,
321            7 => AdsError::ErrTargetMachineNotFound,
322            8 => AdsError::ErrUnknownCmdId,
323            9 => AdsError::ErrBadTaskId,
324            10 => AdsError::ErrNoIO,
325            11 => AdsError::ErrUnknownAmsCmd,
326            12 => AdsError::ErrWin32Error,
327            13 => AdsError::ErrPortNotConnected,
328            14 => AdsError::ErrInvalidAmsLength,
329            15 => AdsError::ErrInvalidAmsNetId,
330            16 => AdsError::ErrLowInstLevel,
331            17 => AdsError::ErrNoDebugingAvailable,
332            18 => AdsError::ErrPortDisabled,
333            19 => AdsError::ErrPortAlreadyConnected,
334            20 => AdsError::ErrAmsSyncW32Error,
335            21 => AdsError::ErrAmsSyncTimeout,
336            22 => AdsError::ErrAmsSyncAmsError,
337            23 => AdsError::ErrAmsSyncNoIndexInMap,
338            24 => AdsError::ErrInvalidAmsPort,
339            25 => AdsError::ErrNoMemory,
340            26 => AdsError::ErrTcpSend,
341            27 => AdsError::ErrHostUnreachable,
342            28 => AdsError::ErrInvalidAmsFragment,
343            29 => AdsError::ErrTlsSend,
344            30 => AdsError::ErrAccessDenied,
345            //Router error codes
346            1280 => AdsError::RouterErrNoLockedMemory,
347            1281 => AdsError::RouterErrResizeMemory,
348            1282 => AdsError::RouterErrMailboxFull,
349            1283 => AdsError::RouterErrDebugBoxFull,
350            1284 => AdsError::RouterErrUnknownPortType,
351            1285 => AdsError::RouterErrNotInitialized,
352            1286 => AdsError::RouterErrPortAlreadyInUse,
353            1287 => AdsError::RouterErrNotRegistered,
354            1288 => AdsError::RouterErrNoMoreQueues,
355            1289 => AdsError::RouterErrInvalidPort,
356            1290 => AdsError::RouterErrNotActivated,
357            1291 => AdsError::RouterErrFragmentBoxFull,
358            1292 => AdsError::RouterErrFragmentTimeout,
359            1293 => AdsError::RouterErrToBeRemoved,
360            //General ADS error
361            1792 => AdsError::AdsErrDeviceError,
362            1793 => AdsError::AdsErrDeviceSrvNotSupp,
363            1794 => AdsError::AdsErrDeviceInvalidGrp,
364            1795 => AdsError::AdsErrDeviceInvalidOffset,
365            1796 => AdsError::AdsErrDeviceInvalidAccess,
366            1797 => AdsError::AdsErrDeviceInvalidSize,
367            1798 => AdsError::AdsErrDeviceInvalidData,
368            1799 => AdsError::AdsErrDeviceNotReady,
369            1800 => AdsError::AdsErrDeviceBusy,
370            1801 => AdsError::AdsErrDeviceInvalidContext,
371            1802 => AdsError::AdsErrDeviceNoMemory,
372            1803 => AdsError::AdsErrDeviceInvalidParm,
373            1804 => AdsError::AdsErrDeviceNotFound,
374            1805 => AdsError::AdsErrDeviceSyntax,
375            1806 => AdsError::AdsErrDeviceIncompatible,
376            1807 => AdsError::AdsErrDeviceExists,
377            1808 => AdsError::AdsErrDeviceSymbolNotFound,
378            1809 => AdsError::AdsErrDeviceSymbolVersionInvalid,
379            1810 => AdsError::AdsErrDeviceInvalidState,
380            1811 => AdsError::AdsErrDeviceTransModeNotSupp,
381            1812 => AdsError::AdsErrDeviceNotifyHndInvalid,
382            1813 => AdsError::AdsErrDeviceClientUnknown,
383            1814 => AdsError::AdsErrDeviceNoMoreHDLS,
384            1815 => AdsError::AdsErrDeviceInvalidWatchSize,
385            1816 => AdsError::AdsErrDeviceNotInit,
386            1817 => AdsError::AdsErrDeviceTimeout,
387            1818 => AdsError::AdsErrDeviceNoInterface,
388            1819 => AdsError::AdsErrDeviceInvalidInterface,
389            1820 => AdsError::AdsErrDeviceInvalidClsID,
390            1821 => AdsError::AdsErrDeviceInvalidOBJID,
391            1822 => AdsError::AdsErrDevicePending,
392            1823 => AdsError::AdsErrDeviceAborted,
393            1824 => AdsError::AdsErrDeviceWarning,
394            1825 => AdsError::AdsErrDeviceInvalidArrayIDX,
395            1826 => AdsError::AdsErrDeviceSymbolNotActive,
396            1827 => AdsError::AdsErrDeviceAccessDenied,
397            1828 => AdsError::AdsErrDeviceLicenseNotFound,
398            1829 => AdsError::AdsErrDeviceLicenseExpired,
399            1830 => AdsError::AdsErrDeviceLicenseExceeded,
400            1831 => AdsError::AdsErrDeviceLicenseInvalid,
401            1832 => AdsError::AdsErrDeviceLicenseSystemID,
402            1833 => AdsError::AdsErrDeviceLicenseNoTimeLimit,
403            1834 => AdsError::AdsErrDeviceLicenseFuturReissue,
404            1835 => AdsError::AdsErrDeivceLicenseTimeToLong,
405            1836 => AdsError::AdsErrDeviceException,
406            1837 => AdsError::AdsErrDeviceLicenseDublicated,
407            1838 => AdsError::AdsErrDeviceSignatureInvalid,
408            1839 => AdsError::AdsErrDeviceCertificateInvalid,
409            1840 => AdsError::AdsErrDeviceLicenseOemNotFound,
410            1841 => AdsError::AdsErrDeviceLicenseRestricted,
411            1842 => AdsError::AdsErrDeviceLicenseDemoDenied,
412            1843 => AdsError::AdsErrDeviceInvalidFncID,
413            1844 => AdsError::AdsErrDeviceOutOfRange,
414            1845 => AdsError::AdsErrDeviceInvalidAlignment,
415            1846 => AdsError::AdsErrDeviceLicensePlatform,
416            1847 => AdsError::AdsErrDeviceForwardPL,
417            1848 => AdsError::AdsErrDeviceForwardDL,
418            1849 => AdsError::AdsErrDeviceForwardRT,
419            1856 => AdsError::AdsErrClientError,
420            1857 => AdsError::AdsErrClientInvalidParm,
421            1858 => AdsError::AdsErrClientListEmpty,
422            1859 => AdsError::AdsErrClientVarUsed,
423            1860 => AdsError::AdsErrClientDublIvokeID,
424            1861 => AdsError::AdsErrClientSyncTimeout,
425            1862 => AdsError::AdsErrClientW32Error,
426            1863 => AdsError::AdsErrClientTimeoutInvalid,
427            1864 => AdsError::AdsErrClientPortNotOpen,
428            1865 => AdsError::AdsErrClientNoAmsAddress,
429            1872 => AdsError::AdsErrClientSyncInternal,
430            1873 => AdsError::AdsErrClientAddHash,
431            1874 => AdsError::AdsErrClientRemoveHash,
432            1875 => AdsError::AdsErrClientNoMoreSym,
433            1876 => AdsError::AdsErrClientSyncResInvalid,
434            1877 => AdsError::AdsErrClientSyncPortLocked,
435            //RTime error codes
436            4096 => AdsError::RtErrInternal,
437            4097 => AdsError::RtErrBadTimerPeriods,
438            4098 => AdsError::RtErrInvalidTaskPtr,
439            4099 => AdsError::RtErrInvalidStackPtr,
440            4100 => AdsError::RtErrPrioExists,
441            4101 => AdsError::RtErrNoMoreTCB,
442            4102 => AdsError::RtErrNoMoreSemas,
443            4103 => AdsError::RtErrNoMoreQueues,
444            4109 => AdsError::RtErrExtIrqAlreadyDef,
445            4110 => AdsError::RtErrExtIrqNotDef,
446            4111 => AdsError::RtErrExtIrgInstallFaild,
447            4112 => AdsError::RtErrIrqlNotLessOrEqual,
448            4119 => AdsError::RtErrVmxNotSupported,
449            4120 => AdsError::RtErrVmxDisabled,
450            4121 => AdsError::RtErrVmxControlsMissing,
451            4122 => AdsError::RtErrVmxEnableFails,
452            val => AdsError::ErrUnknowAdsError { error_code: val },
453        }
454    }
455}
456
457impl AdsError {
458    pub fn as_u32(&self) -> u32 {
459        match self {
460            //Global error codes
461            AdsError::ErrNoError => 0,
462            AdsError::ErrInternal => 1,
463            AdsError::ErrNoRTime => 2,
464            AdsError::ErrAllocLockedMem => 3,
465            AdsError::ErrInsertMailBox => 4,
466            AdsError::ErrWrongRecieveHMSG => 5,
467            AdsError::ErrTargetPortNotFound => 6,
468            AdsError::ErrTargetMachineNotFound => 7,
469            AdsError::ErrUnknownCmdId => 8,
470            AdsError::ErrBadTaskId => 9,
471            AdsError::ErrNoIO => 10,
472            AdsError::ErrUnknownAmsCmd => 11,
473            AdsError::ErrWin32Error => 12,
474            AdsError::ErrPortNotConnected => 13,
475            AdsError::ErrInvalidAmsLength => 14,
476            AdsError::ErrInvalidAmsNetId => 15,
477            AdsError::ErrLowInstLevel => 16,
478            AdsError::ErrNoDebugingAvailable => 17,
479            AdsError::ErrPortDisabled => 18,
480            AdsError::ErrPortAlreadyConnected => 19,
481            AdsError::ErrAmsSyncW32Error => 20,
482            AdsError::ErrAmsSyncTimeout => 21,
483            AdsError::ErrAmsSyncAmsError => 22,
484            AdsError::ErrAmsSyncNoIndexInMap => 23,
485            AdsError::ErrInvalidAmsPort => 24,
486            AdsError::ErrNoMemory => 25,
487            AdsError::ErrTcpSend => 26,
488            AdsError::ErrHostUnreachable => 27,
489            AdsError::ErrInvalidAmsFragment => 28,
490            AdsError::ErrTlsSend => 29,
491            AdsError::ErrAccessDenied => 30,
492            //Router error codes
493            AdsError::RouterErrNoLockedMemory => 1280,
494            AdsError::RouterErrResizeMemory => 1281,
495            AdsError::RouterErrMailboxFull => 1282,
496            AdsError::RouterErrDebugBoxFull => 1283,
497            AdsError::RouterErrUnknownPortType => 1284,
498            AdsError::RouterErrNotInitialized => 1285,
499            AdsError::RouterErrPortAlreadyInUse => 1286,
500            AdsError::RouterErrNotRegistered => 1287,
501            AdsError::RouterErrNoMoreQueues => 1288,
502            AdsError::RouterErrInvalidPort => 1289,
503            AdsError::RouterErrNotActivated => 1290,
504            AdsError::RouterErrFragmentBoxFull => 1291,
505            AdsError::RouterErrFragmentTimeout => 1292,
506            AdsError::RouterErrToBeRemoved => 1293,
507            //General ADS error
508            AdsError::AdsErrDeviceError => 1792,
509            AdsError::AdsErrDeviceSrvNotSupp => 1793,
510            AdsError::AdsErrDeviceInvalidGrp => 1794,
511            AdsError::AdsErrDeviceInvalidOffset => 1795,
512            AdsError::AdsErrDeviceInvalidAccess => 1796,
513            AdsError::AdsErrDeviceInvalidSize => 1797,
514            AdsError::AdsErrDeviceInvalidData => 1798,
515            AdsError::AdsErrDeviceNotReady => 1799,
516            AdsError::AdsErrDeviceBusy => 1800,
517            AdsError::AdsErrDeviceInvalidContext => 1801,
518            AdsError::AdsErrDeviceNoMemory => 1802,
519            AdsError::AdsErrDeviceInvalidParm => 1803,
520            AdsError::AdsErrDeviceNotFound => 1804,
521            AdsError::AdsErrDeviceSyntax => 1805,
522            AdsError::AdsErrDeviceIncompatible => 1806,
523            AdsError::AdsErrDeviceExists => 1807,
524            AdsError::AdsErrDeviceSymbolNotFound => 1808,
525            AdsError::AdsErrDeviceSymbolVersionInvalid => 1809,
526            AdsError::AdsErrDeviceInvalidState => 1810,
527            AdsError::AdsErrDeviceTransModeNotSupp => 1811,
528            AdsError::AdsErrDeviceNotifyHndInvalid => 1812,
529            AdsError::AdsErrDeviceClientUnknown => 1813,
530            AdsError::AdsErrDeviceNoMoreHDLS => 1814,
531            AdsError::AdsErrDeviceInvalidWatchSize => 1815,
532            AdsError::AdsErrDeviceNotInit => 1816,
533            AdsError::AdsErrDeviceTimeout => 1817,
534            AdsError::AdsErrDeviceNoInterface => 1818,
535            AdsError::AdsErrDeviceInvalidInterface => 1819,
536            AdsError::AdsErrDeviceInvalidClsID => 1820,
537            AdsError::AdsErrDeviceInvalidOBJID => 1821,
538            AdsError::AdsErrDevicePending => 1822,
539            AdsError::AdsErrDeviceAborted => 1823,
540            AdsError::AdsErrDeviceWarning => 1824,
541            AdsError::AdsErrDeviceInvalidArrayIDX => 1825,
542            AdsError::AdsErrDeviceSymbolNotActive => 1826,
543            AdsError::AdsErrDeviceAccessDenied => 1827,
544            AdsError::AdsErrDeviceLicenseNotFound => 1828,
545            AdsError::AdsErrDeviceLicenseExpired => 1829,
546            AdsError::AdsErrDeviceLicenseExceeded => 1830,
547            AdsError::AdsErrDeviceLicenseInvalid => 1831,
548            AdsError::AdsErrDeviceLicenseSystemID => 1832,
549            AdsError::AdsErrDeviceLicenseNoTimeLimit => 1833,
550            AdsError::AdsErrDeviceLicenseFuturReissue => 1834,
551            AdsError::AdsErrDeivceLicenseTimeToLong => 1835,
552            AdsError::AdsErrDeviceException => 1836,
553            AdsError::AdsErrDeviceLicenseDublicated => 1837,
554            AdsError::AdsErrDeviceSignatureInvalid => 1838,
555            AdsError::AdsErrDeviceCertificateInvalid => 1839,
556            AdsError::AdsErrDeviceLicenseOemNotFound => 1840,
557            AdsError::AdsErrDeviceLicenseRestricted => 1841,
558            AdsError::AdsErrDeviceLicenseDemoDenied => 1842,
559            AdsError::AdsErrDeviceInvalidFncID => 1843,
560            AdsError::AdsErrDeviceOutOfRange => 1844,
561            AdsError::AdsErrDeviceInvalidAlignment => 1845,
562            AdsError::AdsErrDeviceLicensePlatform => 1846,
563            AdsError::AdsErrDeviceForwardPL => 1847,
564            AdsError::AdsErrDeviceForwardDL => 1848,
565            AdsError::AdsErrDeviceForwardRT => 1849,
566            AdsError::AdsErrClientError => 1856,
567            AdsError::AdsErrClientInvalidParm => 1857,
568            AdsError::AdsErrClientListEmpty => 1858,
569            AdsError::AdsErrClientVarUsed => 1859,
570            AdsError::AdsErrClientDublIvokeID => 1860,
571            AdsError::AdsErrClientSyncTimeout => 1861,
572            AdsError::AdsErrClientW32Error => 1862,
573            AdsError::AdsErrClientTimeoutInvalid => 1863,
574            AdsError::AdsErrClientPortNotOpen => 1864,
575            AdsError::AdsErrClientNoAmsAddress => 1865,
576            AdsError::AdsErrClientSyncInternal => 1872,
577            AdsError::AdsErrClientAddHash => 1873,
578            AdsError::AdsErrClientRemoveHash => 1874,
579            AdsError::AdsErrClientNoMoreSym => 1875,
580            AdsError::AdsErrClientSyncResInvalid => 1876,
581            AdsError::AdsErrClientSyncPortLocked => 1877,
582            //RTime error codes
583            AdsError::RtErrInternal => 4096,
584            AdsError::RtErrBadTimerPeriods => 4097,
585            AdsError::RtErrInvalidTaskPtr => 4098,
586            AdsError::RtErrInvalidStackPtr => 4099,
587            AdsError::RtErrPrioExists => 4100,
588            AdsError::RtErrNoMoreTCB => 4101,
589            AdsError::RtErrNoMoreSemas => 4102,
590            AdsError::RtErrNoMoreQueues => 4103,
591            AdsError::RtErrExtIrqAlreadyDef => 4109,
592            AdsError::RtErrExtIrqNotDef => 4110,
593            AdsError::RtErrExtIrgInstallFaild => 4111,
594            AdsError::RtErrIrqlNotLessOrEqual => 4112,
595            AdsError::RtErrVmxNotSupported => 4119,
596            AdsError::RtErrVmxDisabled => 4120,
597            AdsError::RtErrVmxControlsMissing => 4121,
598            AdsError::RtErrVmxEnableFails => 4122,
599            AdsError::ErrUnknowAdsError { error_code } => *error_code,
600        }
601    }
602}