crc_catalog/algorithm.rs
1//! CRC algorithms as structs.
2use crate::Algorithm;
3
4/// # [`CRC-3/GSM`][1]
5///
6/// - `width`: `3` bits
7/// - `poly`: `0x3` (reversed: `0x6`)
8/// - `init`: `0x0`
9/// - `refin`: `false`
10/// - `refout`: `false`
11/// - `xorout`: `0x7`
12/// - `check`: `0x4`
13/// - `residue`: `0x2`
14///
15/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-3-gsm
16pub const CRC_3_GSM: Algorithm<u8> = Algorithm {
17 width: 3,
18 poly: 0x3,
19 init: 0x0,
20 refin: false,
21 refout: false,
22 xorout: 0x7,
23 check: 0x4,
24 residue: 0x2
25};
26
27/// # [`CRC-3/ROHC`][1]
28///
29/// - `width`: `3` bits
30/// - `poly`: `0x3` (reversed: `0x6`)
31/// - `init`: `0x7`
32/// - `refin`: `true`
33/// - `refout`: `true`
34/// - `xorout`: `0x0`
35/// - `check`: `0x6`
36/// - `residue`: `0x0`
37///
38/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-3-rohc
39pub const CRC_3_ROHC: Algorithm<u8> = Algorithm {
40 width: 3,
41 poly: 0x3,
42 init: 0x7,
43 refin: true,
44 refout: true,
45 xorout: 0x0,
46 check: 0x6,
47 residue: 0x0
48};
49
50/// # [`CRC-4/G-704`][1]
51///
52/// - `width`: `4` bits
53/// - `poly`: `0x3` (reversed: `0xc`)
54/// - `init`: `0x0`
55/// - `refin`: `true`
56/// - `refout`: `true`
57/// - `xorout`: `0x0`
58/// - `check`: `0x7`
59/// - `residue`: `0x0`
60///
61/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-4-g-704
62pub const CRC_4_G_704: Algorithm<u8> = Algorithm {
63 width: 4,
64 poly: 0x3,
65 init: 0x0,
66 refin: true,
67 refout: true,
68 xorout: 0x0,
69 check: 0x7,
70 residue: 0x0
71};
72
73/// # [`CRC-4/INTERLAKEN`][1]
74///
75/// - `width`: `4` bits
76/// - `poly`: `0x3` (reversed: `0xc`)
77/// - `init`: `0xf`
78/// - `refin`: `false`
79/// - `refout`: `false`
80/// - `xorout`: `0xf`
81/// - `check`: `0xb`
82/// - `residue`: `0x2`
83///
84/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-4-interlaken
85pub const CRC_4_INTERLAKEN: Algorithm<u8> = Algorithm {
86 width: 4,
87 poly: 0x3,
88 init: 0xf,
89 refin: false,
90 refout: false,
91 xorout: 0xf,
92 check: 0xb,
93 residue: 0x2
94};
95
96/// # [`CRC-5/EPC-C1G2`][1]
97///
98/// - `width`: `5` bits
99/// - `poly`: `0x9` (reversed: `0x12`)
100/// - `init`: `0x9`
101/// - `refin`: `false`
102/// - `refout`: `false`
103/// - `xorout`: `0x0`
104/// - `check`: `0x0`
105/// - `residue`: `0x0`
106///
107/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-5-epc-c1g2
108pub const CRC_5_EPC_C1G2: Algorithm<u8> = Algorithm {
109 width: 5,
110 poly: 0x9,
111 init: 0x9,
112 refin: false,
113 refout: false,
114 xorout: 0x0,
115 check: 0x0,
116 residue: 0x0
117};
118
119/// # [`CRC-5/G-704`][1]
120///
121/// - `width`: `5` bits
122/// - `poly`: `0x15` (reversed: `0x15`)
123/// - `init`: `0x0`
124/// - `refin`: `true`
125/// - `refout`: `true`
126/// - `xorout`: `0x0`
127/// - `check`: `0x7`
128/// - `residue`: `0x0`
129///
130/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-5-g-704
131pub const CRC_5_G_704: Algorithm<u8> = Algorithm {
132 width: 5,
133 poly: 0x15,
134 init: 0x0,
135 refin: true,
136 refout: true,
137 xorout: 0x0,
138 check: 0x7,
139 residue: 0x0
140};
141
142/// # [`CRC-5/USB`][1]
143///
144/// - `width`: `5` bits
145/// - `poly`: `0x5` (reversed: `0x14`)
146/// - `init`: `0x1f`
147/// - `refin`: `true`
148/// - `refout`: `true`
149/// - `xorout`: `0x1f`
150/// - `check`: `0x19`
151/// - `residue`: `0x6`
152///
153/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-5-usb
154pub const CRC_5_USB: Algorithm<u8> = Algorithm {
155 width: 5,
156 poly: 0x5,
157 init: 0x1f,
158 refin: true,
159 refout: true,
160 xorout: 0x1f,
161 check: 0x19,
162 residue: 0x6
163};
164
165/// # [`CRC-6/CDMA2000-A`][1]
166///
167/// - `width`: `6` bits
168/// - `poly`: `0x27` (reversed: `0x39`)
169/// - `init`: `0x3f`
170/// - `refin`: `false`
171/// - `refout`: `false`
172/// - `xorout`: `0x0`
173/// - `check`: `0xd`
174/// - `residue`: `0x0`
175///
176/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-cdma2000-a
177pub const CRC_6_CDMA2000_A: Algorithm<u8> = Algorithm {
178 width: 6,
179 poly: 0x27,
180 init: 0x3f,
181 refin: false,
182 refout: false,
183 xorout: 0x0,
184 check: 0xd,
185 residue: 0x0
186};
187
188/// # [`CRC-6/CDMA2000-B`][1]
189///
190/// - `width`: `6` bits
191/// - `poly`: `0x7` (reversed: `0x38`)
192/// - `init`: `0x3f`
193/// - `refin`: `false`
194/// - `refout`: `false`
195/// - `xorout`: `0x0`
196/// - `check`: `0x3b`
197/// - `residue`: `0x0`
198///
199/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-cdma2000-b
200pub const CRC_6_CDMA2000_B: Algorithm<u8> = Algorithm {
201 width: 6,
202 poly: 0x7,
203 init: 0x3f,
204 refin: false,
205 refout: false,
206 xorout: 0x0,
207 check: 0x3b,
208 residue: 0x0
209};
210
211/// # [`CRC-6/DARC`][1]
212///
213/// - `width`: `6` bits
214/// - `poly`: `0x19` (reversed: `0x26`)
215/// - `init`: `0x0`
216/// - `refin`: `true`
217/// - `refout`: `true`
218/// - `xorout`: `0x0`
219/// - `check`: `0x26`
220/// - `residue`: `0x0`
221///
222/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-darc
223pub const CRC_6_DARC: Algorithm<u8> = Algorithm {
224 width: 6,
225 poly: 0x19,
226 init: 0x0,
227 refin: true,
228 refout: true,
229 xorout: 0x0,
230 check: 0x26,
231 residue: 0x0
232};
233
234/// # [`CRC-6/G-704`][1]
235///
236/// - `width`: `6` bits
237/// - `poly`: `0x3` (reversed: `0x30`)
238/// - `init`: `0x0`
239/// - `refin`: `true`
240/// - `refout`: `true`
241/// - `xorout`: `0x0`
242/// - `check`: `0x6`
243/// - `residue`: `0x0`
244///
245/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-g-704
246pub const CRC_6_G_704: Algorithm<u8> = Algorithm {
247 width: 6,
248 poly: 0x3,
249 init: 0x0,
250 refin: true,
251 refout: true,
252 xorout: 0x0,
253 check: 0x6,
254 residue: 0x0
255};
256
257/// # [`CRC-6/GSM`][1]
258///
259/// - `width`: `6` bits
260/// - `poly`: `0x2f` (reversed: `0x3d`)
261/// - `init`: `0x0`
262/// - `refin`: `false`
263/// - `refout`: `false`
264/// - `xorout`: `0x3f`
265/// - `check`: `0x13`
266/// - `residue`: `0x3a`
267///
268/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-6-gsm
269pub const CRC_6_GSM: Algorithm<u8> = Algorithm {
270 width: 6,
271 poly: 0x2f,
272 init: 0x0,
273 refin: false,
274 refout: false,
275 xorout: 0x3f,
276 check: 0x13,
277 residue: 0x3a
278};
279
280/// # [`CRC-7/MMC`][1]
281///
282/// - `width`: `7` bits
283/// - `poly`: `0x9` (reversed: `0x48`)
284/// - `init`: `0x0`
285/// - `refin`: `false`
286/// - `refout`: `false`
287/// - `xorout`: `0x0`
288/// - `check`: `0x75`
289/// - `residue`: `0x0`
290///
291/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-7-mmc
292pub const CRC_7_MMC: Algorithm<u8> = Algorithm {
293 width: 7,
294 poly: 0x9,
295 init: 0x0,
296 refin: false,
297 refout: false,
298 xorout: 0x0,
299 check: 0x75,
300 residue: 0x0
301};
302
303/// # [`CRC-7/ROHC`][1]
304///
305/// - `width`: `7` bits
306/// - `poly`: `0x4f` (reversed: `0x79`)
307/// - `init`: `0x7f`
308/// - `refin`: `true`
309/// - `refout`: `true`
310/// - `xorout`: `0x0`
311/// - `check`: `0x53`
312/// - `residue`: `0x0`
313///
314/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-7-rohc
315pub const CRC_7_ROHC: Algorithm<u8> = Algorithm {
316 width: 7,
317 poly: 0x4f,
318 init: 0x7f,
319 refin: true,
320 refout: true,
321 xorout: 0x0,
322 check: 0x53,
323 residue: 0x0
324};
325
326/// # [`CRC-7/UMTS`][1]
327///
328/// - `width`: `7` bits
329/// - `poly`: `0x45` (reversed: `0x51`)
330/// - `init`: `0x0`
331/// - `refin`: `false`
332/// - `refout`: `false`
333/// - `xorout`: `0x0`
334/// - `check`: `0x61`
335/// - `residue`: `0x0`
336///
337/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-7-umts
338pub const CRC_7_UMTS: Algorithm<u8> = Algorithm {
339 width: 7,
340 poly: 0x45,
341 init: 0x0,
342 refin: false,
343 refout: false,
344 xorout: 0x0,
345 check: 0x61,
346 residue: 0x0
347};
348
349/// # [`CRC-8/AUTOSAR`][1]
350///
351/// - `width`: `8` bits
352/// - `poly`: `0x2f` (reversed: `0xf4`)
353/// - `init`: `0xff`
354/// - `refin`: `false`
355/// - `refout`: `false`
356/// - `xorout`: `0xff`
357/// - `check`: `0xdf`
358/// - `residue`: `0x42`
359///
360/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-autosar
361pub const CRC_8_AUTOSAR: Algorithm<u8> = Algorithm {
362 width: 8,
363 poly: 0x2f,
364 init: 0xff,
365 refin: false,
366 refout: false,
367 xorout: 0xff,
368 check: 0xdf,
369 residue: 0x42
370};
371
372/// # [`CRC-8/BLUETOOTH`][1]
373///
374/// - `width`: `8` bits
375/// - `poly`: `0xa7` (reversed: `0xe5`)
376/// - `init`: `0x0`
377/// - `refin`: `true`
378/// - `refout`: `true`
379/// - `xorout`: `0x0`
380/// - `check`: `0x26`
381/// - `residue`: `0x0`
382///
383/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-bluetooth
384pub const CRC_8_BLUETOOTH: Algorithm<u8> = Algorithm {
385 width: 8,
386 poly: 0xa7,
387 init: 0x0,
388 refin: true,
389 refout: true,
390 xorout: 0x0,
391 check: 0x26,
392 residue: 0x0
393};
394
395/// # [`CRC-8/CDMA2000`][1]
396///
397/// - `width`: `8` bits
398/// - `poly`: `0x9b` (reversed: `0xd9`)
399/// - `init`: `0xff`
400/// - `refin`: `false`
401/// - `refout`: `false`
402/// - `xorout`: `0x0`
403/// - `check`: `0xda`
404/// - `residue`: `0x0`
405///
406/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-cdma2000
407pub const CRC_8_CDMA2000: Algorithm<u8> = Algorithm {
408 width: 8,
409 poly: 0x9b,
410 init: 0xff,
411 refin: false,
412 refout: false,
413 xorout: 0x0,
414 check: 0xda,
415 residue: 0x0
416};
417
418/// # [`CRC-8/DARC`][1]
419///
420/// - `width`: `8` bits
421/// - `poly`: `0x39` (reversed: `0x9c`)
422/// - `init`: `0x0`
423/// - `refin`: `true`
424/// - `refout`: `true`
425/// - `xorout`: `0x0`
426/// - `check`: `0x15`
427/// - `residue`: `0x0`
428///
429/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-darc
430pub const CRC_8_DARC: Algorithm<u8> = Algorithm {
431 width: 8,
432 poly: 0x39,
433 init: 0x0,
434 refin: true,
435 refout: true,
436 xorout: 0x0,
437 check: 0x15,
438 residue: 0x0
439};
440
441/// # [`CRC-8/DVB-S2`][1]
442///
443/// - `width`: `8` bits
444/// - `poly`: `0xd5` (reversed: `0xab`)
445/// - `init`: `0x0`
446/// - `refin`: `false`
447/// - `refout`: `false`
448/// - `xorout`: `0x0`
449/// - `check`: `0xbc`
450/// - `residue`: `0x0`
451///
452/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-dvb-s2
453pub const CRC_8_DVB_S2: Algorithm<u8> = Algorithm {
454 width: 8,
455 poly: 0xd5,
456 init: 0x0,
457 refin: false,
458 refout: false,
459 xorout: 0x0,
460 check: 0xbc,
461 residue: 0x0
462};
463
464/// # [`CRC-8/GSM-A`][1]
465///
466/// - `width`: `8` bits
467/// - `poly`: `0x1d` (reversed: `0xb8`)
468/// - `init`: `0x0`
469/// - `refin`: `false`
470/// - `refout`: `false`
471/// - `xorout`: `0x0`
472/// - `check`: `0x37`
473/// - `residue`: `0x0`
474///
475/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-gsm-a
476pub const CRC_8_GSM_A: Algorithm<u8> = Algorithm {
477 width: 8,
478 poly: 0x1d,
479 init: 0x0,
480 refin: false,
481 refout: false,
482 xorout: 0x0,
483 check: 0x37,
484 residue: 0x0
485};
486
487/// # [`CRC-8/GSM-B`][1]
488///
489/// - `width`: `8` bits
490/// - `poly`: `0x49` (reversed: `0x92`)
491/// - `init`: `0x0`
492/// - `refin`: `false`
493/// - `refout`: `false`
494/// - `xorout`: `0xff`
495/// - `check`: `0x94`
496/// - `residue`: `0x53`
497///
498/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-gsm-b
499pub const CRC_8_GSM_B: Algorithm<u8> = Algorithm {
500 width: 8,
501 poly: 0x49,
502 init: 0x0,
503 refin: false,
504 refout: false,
505 xorout: 0xff,
506 check: 0x94,
507 residue: 0x53
508};
509
510/// # [`CRC-8/HITAG`][1]
511///
512/// - `width`: `8` bits
513/// - `poly`: `0x1d` (reversed: `0xb8`)
514/// - `init`: `0xff`
515/// - `refin`: `false`
516/// - `refout`: `false`
517/// - `xorout`: `0x0`
518/// - `check`: `0xb4`
519/// - `residue`: `0x0`
520///
521/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-hitag
522pub const CRC_8_HITAG: Algorithm<u8> = Algorithm {
523 width: 8,
524 poly: 0x1d,
525 init: 0xff,
526 refin: false,
527 refout: false,
528 xorout: 0x0,
529 check: 0xb4,
530 residue: 0x0
531};
532
533/// # [`CRC-8/I-432-1`][1]
534///
535/// - `width`: `8` bits
536/// - `poly`: `0x7` (reversed: `0xe0`)
537/// - `init`: `0x0`
538/// - `refin`: `false`
539/// - `refout`: `false`
540/// - `xorout`: `0x55`
541/// - `check`: `0xa1`
542/// - `residue`: `0xac`
543///
544/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-i-432-1
545pub const CRC_8_I_432_1: Algorithm<u8> = Algorithm {
546 width: 8,
547 poly: 0x7,
548 init: 0x0,
549 refin: false,
550 refout: false,
551 xorout: 0x55,
552 check: 0xa1,
553 residue: 0xac
554};
555
556/// # [`CRC-8/I-CODE`][1]
557///
558/// - `width`: `8` bits
559/// - `poly`: `0x1d` (reversed: `0xb8`)
560/// - `init`: `0xfd`
561/// - `refin`: `false`
562/// - `refout`: `false`
563/// - `xorout`: `0x0`
564/// - `check`: `0x7e`
565/// - `residue`: `0x0`
566///
567/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-i-code
568pub const CRC_8_I_CODE: Algorithm<u8> = Algorithm {
569 width: 8,
570 poly: 0x1d,
571 init: 0xfd,
572 refin: false,
573 refout: false,
574 xorout: 0x0,
575 check: 0x7e,
576 residue: 0x0
577};
578
579/// # [`CRC-8/LTE`][1]
580///
581/// - `width`: `8` bits
582/// - `poly`: `0x9b` (reversed: `0xd9`)
583/// - `init`: `0x0`
584/// - `refin`: `false`
585/// - `refout`: `false`
586/// - `xorout`: `0x0`
587/// - `check`: `0xea`
588/// - `residue`: `0x0`
589///
590/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-lte
591pub const CRC_8_LTE: Algorithm<u8> = Algorithm {
592 width: 8,
593 poly: 0x9b,
594 init: 0x0,
595 refin: false,
596 refout: false,
597 xorout: 0x0,
598 check: 0xea,
599 residue: 0x0
600};
601
602/// # [`CRC-8/MAXIM-DOW`][1]
603///
604/// - `width`: `8` bits
605/// - `poly`: `0x31` (reversed: `0x8c`)
606/// - `init`: `0x0`
607/// - `refin`: `true`
608/// - `refout`: `true`
609/// - `xorout`: `0x0`
610/// - `check`: `0xa1`
611/// - `residue`: `0x0`
612///
613/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-maxim-dow
614pub const CRC_8_MAXIM_DOW: Algorithm<u8> = Algorithm {
615 width: 8,
616 poly: 0x31,
617 init: 0x0,
618 refin: true,
619 refout: true,
620 xorout: 0x0,
621 check: 0xa1,
622 residue: 0x0
623};
624
625/// # [`CRC-8/MIFARE-MAD`][1]
626///
627/// - `width`: `8` bits
628/// - `poly`: `0x1d` (reversed: `0xb8`)
629/// - `init`: `0xc7`
630/// - `refin`: `false`
631/// - `refout`: `false`
632/// - `xorout`: `0x0`
633/// - `check`: `0x99`
634/// - `residue`: `0x0`
635///
636/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-mifare-mad
637pub const CRC_8_MIFARE_MAD: Algorithm<u8> = Algorithm {
638 width: 8,
639 poly: 0x1d,
640 init: 0xc7,
641 refin: false,
642 refout: false,
643 xorout: 0x0,
644 check: 0x99,
645 residue: 0x0
646};
647
648/// # [`CRC-8/NRSC-5`][1]
649///
650/// - `width`: `8` bits
651/// - `poly`: `0x31` (reversed: `0x8c`)
652/// - `init`: `0xff`
653/// - `refin`: `false`
654/// - `refout`: `false`
655/// - `xorout`: `0x0`
656/// - `check`: `0xf7`
657/// - `residue`: `0x0`
658///
659/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-nrsc-5
660pub const CRC_8_NRSC_5: Algorithm<u8> = Algorithm {
661 width: 8,
662 poly: 0x31,
663 init: 0xff,
664 refin: false,
665 refout: false,
666 xorout: 0x0,
667 check: 0xf7,
668 residue: 0x0
669};
670
671/// # [`CRC-8/OPENSAFETY`][1]
672///
673/// - `width`: `8` bits
674/// - `poly`: `0x2f` (reversed: `0xf4`)
675/// - `init`: `0x0`
676/// - `refin`: `false`
677/// - `refout`: `false`
678/// - `xorout`: `0x0`
679/// - `check`: `0x3e`
680/// - `residue`: `0x0`
681///
682/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-opensafety
683pub const CRC_8_OPENSAFETY: Algorithm<u8> = Algorithm {
684 width: 8,
685 poly: 0x2f,
686 init: 0x0,
687 refin: false,
688 refout: false,
689 xorout: 0x0,
690 check: 0x3e,
691 residue: 0x0
692};
693
694/// # [`CRC-8/ROHC`][1]
695///
696/// - `width`: `8` bits
697/// - `poly`: `0x7` (reversed: `0xe0`)
698/// - `init`: `0xff`
699/// - `refin`: `true`
700/// - `refout`: `true`
701/// - `xorout`: `0x0`
702/// - `check`: `0xd0`
703/// - `residue`: `0x0`
704///
705/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-rohc
706pub const CRC_8_ROHC: Algorithm<u8> = Algorithm {
707 width: 8,
708 poly: 0x7,
709 init: 0xff,
710 refin: true,
711 refout: true,
712 xorout: 0x0,
713 check: 0xd0,
714 residue: 0x0
715};
716
717/// # [`CRC-8/SAE-J1850`][1]
718///
719/// - `width`: `8` bits
720/// - `poly`: `0x1d` (reversed: `0xb8`)
721/// - `init`: `0xff`
722/// - `refin`: `false`
723/// - `refout`: `false`
724/// - `xorout`: `0xff`
725/// - `check`: `0x4b`
726/// - `residue`: `0xc4`
727///
728/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-sae-j1850
729pub const CRC_8_SAE_J1850: Algorithm<u8> = Algorithm {
730 width: 8,
731 poly: 0x1d,
732 init: 0xff,
733 refin: false,
734 refout: false,
735 xorout: 0xff,
736 check: 0x4b,
737 residue: 0xc4
738};
739
740/// # [`CRC-8/SMBUS`][1]
741///
742/// - `width`: `8` bits
743/// - `poly`: `0x7` (reversed: `0xe0`)
744/// - `init`: `0x0`
745/// - `refin`: `false`
746/// - `refout`: `false`
747/// - `xorout`: `0x0`
748/// - `check`: `0xf4`
749/// - `residue`: `0x0`
750///
751/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-smbus
752pub const CRC_8_SMBUS: Algorithm<u8> = Algorithm {
753 width: 8,
754 poly: 0x7,
755 init: 0x0,
756 refin: false,
757 refout: false,
758 xorout: 0x0,
759 check: 0xf4,
760 residue: 0x0
761};
762
763/// # [`CRC-8/TECH-3250`][1]
764///
765/// - `width`: `8` bits
766/// - `poly`: `0x1d` (reversed: `0xb8`)
767/// - `init`: `0xff`
768/// - `refin`: `true`
769/// - `refout`: `true`
770/// - `xorout`: `0x0`
771/// - `check`: `0x97`
772/// - `residue`: `0x0`
773///
774/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-tech-3250
775pub const CRC_8_TECH_3250: Algorithm<u8> = Algorithm {
776 width: 8,
777 poly: 0x1d,
778 init: 0xff,
779 refin: true,
780 refout: true,
781 xorout: 0x0,
782 check: 0x97,
783 residue: 0x0
784};
785
786/// # [`CRC-8/WCDMA`][1]
787///
788/// - `width`: `8` bits
789/// - `poly`: `0x9b` (reversed: `0xd9`)
790/// - `init`: `0x0`
791/// - `refin`: `true`
792/// - `refout`: `true`
793/// - `xorout`: `0x0`
794/// - `check`: `0x25`
795/// - `residue`: `0x0`
796///
797/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-8-wcdma
798pub const CRC_8_WCDMA: Algorithm<u8> = Algorithm {
799 width: 8,
800 poly: 0x9b,
801 init: 0x0,
802 refin: true,
803 refout: true,
804 xorout: 0x0,
805 check: 0x25,
806 residue: 0x0
807};
808
809/// # [`CRC-10/ATM`][1]
810///
811/// - `width`: `10` bits
812/// - `poly`: `0x233` (reversed: `0x331`)
813/// - `init`: `0x0`
814/// - `refin`: `false`
815/// - `refout`: `false`
816/// - `xorout`: `0x0`
817/// - `check`: `0x199`
818/// - `residue`: `0x0`
819///
820/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-10-atm
821pub const CRC_10_ATM: Algorithm<u16> = Algorithm {
822 width: 10,
823 poly: 0x233,
824 init: 0x0,
825 refin: false,
826 refout: false,
827 xorout: 0x0,
828 check: 0x199,
829 residue: 0x0
830};
831
832/// # [`CRC-10/CDMA2000`][1]
833///
834/// - `width`: `10` bits
835/// - `poly`: `0x3d9` (reversed: `0x26f`)
836/// - `init`: `0x3ff`
837/// - `refin`: `false`
838/// - `refout`: `false`
839/// - `xorout`: `0x0`
840/// - `check`: `0x233`
841/// - `residue`: `0x0`
842///
843/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-10-cdma2000
844pub const CRC_10_CDMA2000: Algorithm<u16> = Algorithm {
845 width: 10,
846 poly: 0x3d9,
847 init: 0x3ff,
848 refin: false,
849 refout: false,
850 xorout: 0x0,
851 check: 0x233,
852 residue: 0x0
853};
854
855/// # [`CRC-10/GSM`][1]
856///
857/// - `width`: `10` bits
858/// - `poly`: `0x175` (reversed: `0x2ba`)
859/// - `init`: `0x0`
860/// - `refin`: `false`
861/// - `refout`: `false`
862/// - `xorout`: `0x3ff`
863/// - `check`: `0x12a`
864/// - `residue`: `0xc6`
865///
866/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-10-gsm
867pub const CRC_10_GSM: Algorithm<u16> = Algorithm {
868 width: 10,
869 poly: 0x175,
870 init: 0x0,
871 refin: false,
872 refout: false,
873 xorout: 0x3ff,
874 check: 0x12a,
875 residue: 0xc6
876};
877
878/// # [`CRC-11/FLEXRAY`][1]
879///
880/// - `width`: `11` bits
881/// - `poly`: `0x385` (reversed: `0x50e`)
882/// - `init`: `0x1a`
883/// - `refin`: `false`
884/// - `refout`: `false`
885/// - `xorout`: `0x0`
886/// - `check`: `0x5a3`
887/// - `residue`: `0x0`
888///
889/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-11-flexray
890pub const CRC_11_FLEXRAY: Algorithm<u16> = Algorithm {
891 width: 11,
892 poly: 0x385,
893 init: 0x1a,
894 refin: false,
895 refout: false,
896 xorout: 0x0,
897 check: 0x5a3,
898 residue: 0x0
899};
900
901/// # [`CRC-11/UMTS`][1]
902///
903/// - `width`: `11` bits
904/// - `poly`: `0x307` (reversed: `0x706`)
905/// - `init`: `0x0`
906/// - `refin`: `false`
907/// - `refout`: `false`
908/// - `xorout`: `0x0`
909/// - `check`: `0x61`
910/// - `residue`: `0x0`
911///
912/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-11-umts
913pub const CRC_11_UMTS: Algorithm<u16> = Algorithm {
914 width: 11,
915 poly: 0x307,
916 init: 0x0,
917 refin: false,
918 refout: false,
919 xorout: 0x0,
920 check: 0x61,
921 residue: 0x0
922};
923
924/// # [`CRC-12/CDMA2000`][1]
925///
926/// - `width`: `12` bits
927/// - `poly`: `0xf13` (reversed: `0xc8f`)
928/// - `init`: `0xfff`
929/// - `refin`: `false`
930/// - `refout`: `false`
931/// - `xorout`: `0x0`
932/// - `check`: `0xd4d`
933/// - `residue`: `0x0`
934///
935/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-cdma2000
936pub const CRC_12_CDMA2000: Algorithm<u16> = Algorithm {
937 width: 12,
938 poly: 0xf13,
939 init: 0xfff,
940 refin: false,
941 refout: false,
942 xorout: 0x0,
943 check: 0xd4d,
944 residue: 0x0
945};
946
947/// # [`CRC-12/DECT`][1]
948///
949/// - `width`: `12` bits
950/// - `poly`: `0x80f` (reversed: `0xf01`)
951/// - `init`: `0x0`
952/// - `refin`: `false`
953/// - `refout`: `false`
954/// - `xorout`: `0x0`
955/// - `check`: `0xf5b`
956/// - `residue`: `0x0`
957///
958/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-dect
959pub const CRC_12_DECT: Algorithm<u16> = Algorithm {
960 width: 12,
961 poly: 0x80f,
962 init: 0x0,
963 refin: false,
964 refout: false,
965 xorout: 0x0,
966 check: 0xf5b,
967 residue: 0x0
968};
969
970/// # [`CRC-12/GSM`][1]
971///
972/// - `width`: `12` bits
973/// - `poly`: `0xd31` (reversed: `0x8cb`)
974/// - `init`: `0x0`
975/// - `refin`: `false`
976/// - `refout`: `false`
977/// - `xorout`: `0xfff`
978/// - `check`: `0xb34`
979/// - `residue`: `0x178`
980///
981/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-gsm
982pub const CRC_12_GSM: Algorithm<u16> = Algorithm {
983 width: 12,
984 poly: 0xd31,
985 init: 0x0,
986 refin: false,
987 refout: false,
988 xorout: 0xfff,
989 check: 0xb34,
990 residue: 0x178
991};
992
993/// # [`CRC-12/UMTS`][1]
994///
995/// - `width`: `12` bits
996/// - `poly`: `0x80f` (reversed: `0xf01`)
997/// - `init`: `0x0`
998/// - `refin`: `false`
999/// - `refout`: `true`
1000/// - `xorout`: `0x0`
1001/// - `check`: `0xdaf`
1002/// - `residue`: `0x0`
1003///
1004/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-12-umts
1005pub const CRC_12_UMTS: Algorithm<u16> = Algorithm {
1006 width: 12,
1007 poly: 0x80f,
1008 init: 0x0,
1009 refin: false,
1010 refout: true,
1011 xorout: 0x0,
1012 check: 0xdaf,
1013 residue: 0x0
1014};
1015
1016/// # [`CRC-13/BBC`][1]
1017///
1018/// - `width`: `13` bits
1019/// - `poly`: `0x1cf5` (reversed: `0x15e7`)
1020/// - `init`: `0x0`
1021/// - `refin`: `false`
1022/// - `refout`: `false`
1023/// - `xorout`: `0x0`
1024/// - `check`: `0x4fa`
1025/// - `residue`: `0x0`
1026///
1027/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-13-bbc
1028pub const CRC_13_BBC: Algorithm<u16> = Algorithm {
1029 width: 13,
1030 poly: 0x1cf5,
1031 init: 0x0,
1032 refin: false,
1033 refout: false,
1034 xorout: 0x0,
1035 check: 0x4fa,
1036 residue: 0x0
1037};
1038
1039/// # [`CRC-14/DARC`][1]
1040///
1041/// - `width`: `14` bits
1042/// - `poly`: `0x805` (reversed: `0x2804`)
1043/// - `init`: `0x0`
1044/// - `refin`: `true`
1045/// - `refout`: `true`
1046/// - `xorout`: `0x0`
1047/// - `check`: `0x82d`
1048/// - `residue`: `0x0`
1049///
1050/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-14-darc
1051pub const CRC_14_DARC: Algorithm<u16> = Algorithm {
1052 width: 14,
1053 poly: 0x805,
1054 init: 0x0,
1055 refin: true,
1056 refout: true,
1057 xorout: 0x0,
1058 check: 0x82d,
1059 residue: 0x0
1060};
1061
1062/// # [`CRC-14/GSM`][1]
1063///
1064/// - `width`: `14` bits
1065/// - `poly`: `0x202d` (reversed: `0x2d01`)
1066/// - `init`: `0x0`
1067/// - `refin`: `false`
1068/// - `refout`: `false`
1069/// - `xorout`: `0x3fff`
1070/// - `check`: `0x30ae`
1071/// - `residue`: `0x31e`
1072///
1073/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-14-gsm
1074pub const CRC_14_GSM: Algorithm<u16> = Algorithm {
1075 width: 14,
1076 poly: 0x202d,
1077 init: 0x0,
1078 refin: false,
1079 refout: false,
1080 xorout: 0x3fff,
1081 check: 0x30ae,
1082 residue: 0x31e
1083};
1084
1085/// # [`CRC-15/CAN`][1]
1086///
1087/// - `width`: `15` bits
1088/// - `poly`: `0x4599` (reversed: `0x4cd1`)
1089/// - `init`: `0x0`
1090/// - `refin`: `false`
1091/// - `refout`: `false`
1092/// - `xorout`: `0x0`
1093/// - `check`: `0x59e`
1094/// - `residue`: `0x0`
1095///
1096/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-15-can
1097pub const CRC_15_CAN: Algorithm<u16> = Algorithm {
1098 width: 15,
1099 poly: 0x4599,
1100 init: 0x0,
1101 refin: false,
1102 refout: false,
1103 xorout: 0x0,
1104 check: 0x59e,
1105 residue: 0x0
1106};
1107
1108/// # [`CRC-15/MPT1327`][1]
1109///
1110/// - `width`: `15` bits
1111/// - `poly`: `0x6815` (reversed: `0x540b`)
1112/// - `init`: `0x0`
1113/// - `refin`: `false`
1114/// - `refout`: `false`
1115/// - `xorout`: `0x1`
1116/// - `check`: `0x2566`
1117/// - `residue`: `0x6815`
1118///
1119/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-15-mpt1327
1120pub const CRC_15_MPT1327: Algorithm<u16> = Algorithm {
1121 width: 15,
1122 poly: 0x6815,
1123 init: 0x0,
1124 refin: false,
1125 refout: false,
1126 xorout: 0x1,
1127 check: 0x2566,
1128 residue: 0x6815
1129};
1130
1131/// # [`CRC-16/ARC`][1]
1132///
1133/// - `width`: `16` bits
1134/// - `poly`: `0x8005` (reversed: `0xa001`)
1135/// - `init`: `0x0`
1136/// - `refin`: `true`
1137/// - `refout`: `true`
1138/// - `xorout`: `0x0`
1139/// - `check`: `0xbb3d`
1140/// - `residue`: `0x0`
1141///
1142/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-arc
1143pub const CRC_16_ARC: Algorithm<u16> = Algorithm {
1144 width: 16,
1145 poly: 0x8005,
1146 init: 0x0,
1147 refin: true,
1148 refout: true,
1149 xorout: 0x0,
1150 check: 0xbb3d,
1151 residue: 0x0
1152};
1153
1154/// # [`CRC-16/CDMA2000`][1]
1155///
1156/// - `width`: `16` bits
1157/// - `poly`: `0xc867` (reversed: `0xe613`)
1158/// - `init`: `0xffff`
1159/// - `refin`: `false`
1160/// - `refout`: `false`
1161/// - `xorout`: `0x0`
1162/// - `check`: `0x4c06`
1163/// - `residue`: `0x0`
1164///
1165/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-cdma2000
1166pub const CRC_16_CDMA2000: Algorithm<u16> = Algorithm {
1167 width: 16,
1168 poly: 0xc867,
1169 init: 0xffff,
1170 refin: false,
1171 refout: false,
1172 xorout: 0x0,
1173 check: 0x4c06,
1174 residue: 0x0
1175};
1176
1177/// # [`CRC-16/CMS`][1]
1178///
1179/// - `width`: `16` bits
1180/// - `poly`: `0x8005` (reversed: `0xa001`)
1181/// - `init`: `0xffff`
1182/// - `refin`: `false`
1183/// - `refout`: `false`
1184/// - `xorout`: `0x0`
1185/// - `check`: `0xaee7`
1186/// - `residue`: `0x0`
1187///
1188/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-cms
1189pub const CRC_16_CMS: Algorithm<u16> = Algorithm {
1190 width: 16,
1191 poly: 0x8005,
1192 init: 0xffff,
1193 refin: false,
1194 refout: false,
1195 xorout: 0x0,
1196 check: 0xaee7,
1197 residue: 0x0
1198};
1199
1200/// # [`CRC-16/DDS-110`][1]
1201///
1202/// - `width`: `16` bits
1203/// - `poly`: `0x8005` (reversed: `0xa001`)
1204/// - `init`: `0x800d`
1205/// - `refin`: `false`
1206/// - `refout`: `false`
1207/// - `xorout`: `0x0`
1208/// - `check`: `0x9ecf`
1209/// - `residue`: `0x0`
1210///
1211/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dds-110
1212pub const CRC_16_DDS_110: Algorithm<u16> = Algorithm {
1213 width: 16,
1214 poly: 0x8005,
1215 init: 0x800d,
1216 refin: false,
1217 refout: false,
1218 xorout: 0x0,
1219 check: 0x9ecf,
1220 residue: 0x0
1221};
1222
1223/// # [`CRC-16/DECT-R`][1]
1224///
1225/// - `width`: `16` bits
1226/// - `poly`: `0x589` (reversed: `0x91a0`)
1227/// - `init`: `0x0`
1228/// - `refin`: `false`
1229/// - `refout`: `false`
1230/// - `xorout`: `0x1`
1231/// - `check`: `0x7e`
1232/// - `residue`: `0x589`
1233///
1234/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dect-r
1235pub const CRC_16_DECT_R: Algorithm<u16> = Algorithm {
1236 width: 16,
1237 poly: 0x589,
1238 init: 0x0,
1239 refin: false,
1240 refout: false,
1241 xorout: 0x1,
1242 check: 0x7e,
1243 residue: 0x589
1244};
1245
1246/// # [`CRC-16/DECT-X`][1]
1247///
1248/// - `width`: `16` bits
1249/// - `poly`: `0x589` (reversed: `0x91a0`)
1250/// - `init`: `0x0`
1251/// - `refin`: `false`
1252/// - `refout`: `false`
1253/// - `xorout`: `0x0`
1254/// - `check`: `0x7f`
1255/// - `residue`: `0x0`
1256///
1257/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dect-x
1258pub const CRC_16_DECT_X: Algorithm<u16> = Algorithm {
1259 width: 16,
1260 poly: 0x589,
1261 init: 0x0,
1262 refin: false,
1263 refout: false,
1264 xorout: 0x0,
1265 check: 0x7f,
1266 residue: 0x0
1267};
1268
1269/// # [`CRC-16/DNP`][1]
1270///
1271/// - `width`: `16` bits
1272/// - `poly`: `0x3d65` (reversed: `0xa6bc`)
1273/// - `init`: `0x0`
1274/// - `refin`: `true`
1275/// - `refout`: `true`
1276/// - `xorout`: `0xffff`
1277/// - `check`: `0xea82`
1278/// - `residue`: `0x66c5`
1279///
1280/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-dnp
1281pub const CRC_16_DNP: Algorithm<u16> = Algorithm {
1282 width: 16,
1283 poly: 0x3d65,
1284 init: 0x0,
1285 refin: true,
1286 refout: true,
1287 xorout: 0xffff,
1288 check: 0xea82,
1289 residue: 0x66c5
1290};
1291
1292/// # [`CRC-16/EN-13757`][1]
1293///
1294/// - `width`: `16` bits
1295/// - `poly`: `0x3d65` (reversed: `0xa6bc`)
1296/// - `init`: `0x0`
1297/// - `refin`: `false`
1298/// - `refout`: `false`
1299/// - `xorout`: `0xffff`
1300/// - `check`: `0xc2b7`
1301/// - `residue`: `0xa366`
1302///
1303/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-en-13757
1304pub const CRC_16_EN_13757: Algorithm<u16> = Algorithm {
1305 width: 16,
1306 poly: 0x3d65,
1307 init: 0x0,
1308 refin: false,
1309 refout: false,
1310 xorout: 0xffff,
1311 check: 0xc2b7,
1312 residue: 0xa366
1313};
1314
1315/// # [`CRC-16/GENIBUS`][1]
1316///
1317/// - `width`: `16` bits
1318/// - `poly`: `0x1021` (reversed: `0x8408`)
1319/// - `init`: `0xffff`
1320/// - `refin`: `false`
1321/// - `refout`: `false`
1322/// - `xorout`: `0xffff`
1323/// - `check`: `0xd64e`
1324/// - `residue`: `0x1d0f`
1325///
1326/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-genibus
1327pub const CRC_16_GENIBUS: Algorithm<u16> = Algorithm {
1328 width: 16,
1329 poly: 0x1021,
1330 init: 0xffff,
1331 refin: false,
1332 refout: false,
1333 xorout: 0xffff,
1334 check: 0xd64e,
1335 residue: 0x1d0f
1336};
1337
1338/// # [`CRC-16/GSM`][1]
1339///
1340/// - `width`: `16` bits
1341/// - `poly`: `0x1021` (reversed: `0x8408`)
1342/// - `init`: `0x0`
1343/// - `refin`: `false`
1344/// - `refout`: `false`
1345/// - `xorout`: `0xffff`
1346/// - `check`: `0xce3c`
1347/// - `residue`: `0x1d0f`
1348///
1349/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-gsm
1350pub const CRC_16_GSM: Algorithm<u16> = Algorithm {
1351 width: 16,
1352 poly: 0x1021,
1353 init: 0x0,
1354 refin: false,
1355 refout: false,
1356 xorout: 0xffff,
1357 check: 0xce3c,
1358 residue: 0x1d0f
1359};
1360
1361/// # [`CRC-16/IBM-3740`][1]
1362///
1363/// - `width`: `16` bits
1364/// - `poly`: `0x1021` (reversed: `0x8408`)
1365/// - `init`: `0xffff`
1366/// - `refin`: `false`
1367/// - `refout`: `false`
1368/// - `xorout`: `0x0`
1369/// - `check`: `0x29b1`
1370/// - `residue`: `0x0`
1371///
1372/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-ibm-3740
1373pub const CRC_16_IBM_3740: Algorithm<u16> = Algorithm {
1374 width: 16,
1375 poly: 0x1021,
1376 init: 0xffff,
1377 refin: false,
1378 refout: false,
1379 xorout: 0x0,
1380 check: 0x29b1,
1381 residue: 0x0
1382};
1383
1384/// # [`CRC-16/IBM-SDLC`][1]
1385///
1386/// - `width`: `16` bits
1387/// - `poly`: `0x1021` (reversed: `0x8408`)
1388/// - `init`: `0xffff`
1389/// - `refin`: `true`
1390/// - `refout`: `true`
1391/// - `xorout`: `0xffff`
1392/// - `check`: `0x906e`
1393/// - `residue`: `0xf0b8`
1394///
1395/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-ibm-sdlc
1396pub const CRC_16_IBM_SDLC: Algorithm<u16> = Algorithm {
1397 width: 16,
1398 poly: 0x1021,
1399 init: 0xffff,
1400 refin: true,
1401 refout: true,
1402 xorout: 0xffff,
1403 check: 0x906e,
1404 residue: 0xf0b8
1405};
1406
1407/// # [`CRC-16/ISO-IEC-14443-3-A`][1]
1408///
1409/// - `width`: `16` bits
1410/// - `poly`: `0x1021` (reversed: `0x8408`)
1411/// - `init`: `0xc6c6`
1412/// - `refin`: `true`
1413/// - `refout`: `true`
1414/// - `xorout`: `0x0`
1415/// - `check`: `0xbf05`
1416/// - `residue`: `0x0`
1417///
1418/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-iso-iec-14443-3-a
1419pub const CRC_16_ISO_IEC_14443_3_A: Algorithm<u16> = Algorithm {
1420 width: 16,
1421 poly: 0x1021,
1422 init: 0xc6c6,
1423 refin: true,
1424 refout: true,
1425 xorout: 0x0,
1426 check: 0xbf05,
1427 residue: 0x0
1428};
1429
1430/// # [`CRC-16/KERMIT`][1]
1431///
1432/// - `width`: `16` bits
1433/// - `poly`: `0x1021` (reversed: `0x8408`)
1434/// - `init`: `0x0`
1435/// - `refin`: `true`
1436/// - `refout`: `true`
1437/// - `xorout`: `0x0`
1438/// - `check`: `0x2189`
1439/// - `residue`: `0x0`
1440///
1441/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-kermit
1442pub const CRC_16_KERMIT: Algorithm<u16> = Algorithm {
1443 width: 16,
1444 poly: 0x1021,
1445 init: 0x0,
1446 refin: true,
1447 refout: true,
1448 xorout: 0x0,
1449 check: 0x2189,
1450 residue: 0x0
1451};
1452
1453/// # [`CRC-16/LJ1200`][1]
1454///
1455/// - `width`: `16` bits
1456/// - `poly`: `0x6f63` (reversed: `0xc6f6`)
1457/// - `init`: `0x0`
1458/// - `refin`: `false`
1459/// - `refout`: `false`
1460/// - `xorout`: `0x0`
1461/// - `check`: `0xbdf4`
1462/// - `residue`: `0x0`
1463///
1464/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-lj1200
1465pub const CRC_16_LJ1200: Algorithm<u16> = Algorithm {
1466 width: 16,
1467 poly: 0x6f63,
1468 init: 0x0,
1469 refin: false,
1470 refout: false,
1471 xorout: 0x0,
1472 check: 0xbdf4,
1473 residue: 0x0
1474};
1475
1476/// # [`CRC-16/M17`][1]
1477///
1478/// - `width`: `16` bits
1479/// - `poly`: `0x5935` (reversed: `0xac9a`)
1480/// - `init`: `0xffff`
1481/// - `refin`: `false`
1482/// - `refout`: `false`
1483/// - `xorout`: `0x0`
1484/// - `check`: `0x772b`
1485/// - `residue`: `0x0`
1486///
1487/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-m17
1488pub const CRC_16_M17: Algorithm<u16> = Algorithm {
1489 width: 16,
1490 poly: 0x5935,
1491 init: 0xffff,
1492 refin: false,
1493 refout: false,
1494 xorout: 0x0,
1495 check: 0x772b,
1496 residue: 0x0
1497};
1498
1499/// # [`CRC-16/MAXIM-DOW`][1]
1500///
1501/// - `width`: `16` bits
1502/// - `poly`: `0x8005` (reversed: `0xa001`)
1503/// - `init`: `0x0`
1504/// - `refin`: `true`
1505/// - `refout`: `true`
1506/// - `xorout`: `0xffff`
1507/// - `check`: `0x44c2`
1508/// - `residue`: `0xb001`
1509///
1510/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-maxim-dow
1511pub const CRC_16_MAXIM_DOW: Algorithm<u16> = Algorithm {
1512 width: 16,
1513 poly: 0x8005,
1514 init: 0x0,
1515 refin: true,
1516 refout: true,
1517 xorout: 0xffff,
1518 check: 0x44c2,
1519 residue: 0xb001
1520};
1521
1522/// # [`CRC-16/MCRF4XX`][1]
1523///
1524/// - `width`: `16` bits
1525/// - `poly`: `0x1021` (reversed: `0x8408`)
1526/// - `init`: `0xffff`
1527/// - `refin`: `true`
1528/// - `refout`: `true`
1529/// - `xorout`: `0x0`
1530/// - `check`: `0x6f91`
1531/// - `residue`: `0x0`
1532///
1533/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-mcrf4xx
1534pub const CRC_16_MCRF4XX: Algorithm<u16> = Algorithm {
1535 width: 16,
1536 poly: 0x1021,
1537 init: 0xffff,
1538 refin: true,
1539 refout: true,
1540 xorout: 0x0,
1541 check: 0x6f91,
1542 residue: 0x0
1543};
1544
1545/// # [`CRC-16/MODBUS`][1]
1546///
1547/// - `width`: `16` bits
1548/// - `poly`: `0x8005` (reversed: `0xa001`)
1549/// - `init`: `0xffff`
1550/// - `refin`: `true`
1551/// - `refout`: `true`
1552/// - `xorout`: `0x0`
1553/// - `check`: `0x4b37`
1554/// - `residue`: `0x0`
1555///
1556/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-modbus
1557pub const CRC_16_MODBUS: Algorithm<u16> = Algorithm {
1558 width: 16,
1559 poly: 0x8005,
1560 init: 0xffff,
1561 refin: true,
1562 refout: true,
1563 xorout: 0x0,
1564 check: 0x4b37,
1565 residue: 0x0
1566};
1567
1568/// # [`CRC-16/NRSC-5`][1]
1569///
1570/// - `width`: `16` bits
1571/// - `poly`: `0x80b` (reversed: `0xd010`)
1572/// - `init`: `0xffff`
1573/// - `refin`: `true`
1574/// - `refout`: `true`
1575/// - `xorout`: `0x0`
1576/// - `check`: `0xa066`
1577/// - `residue`: `0x0`
1578///
1579/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-nrsc-5
1580pub const CRC_16_NRSC_5: Algorithm<u16> = Algorithm {
1581 width: 16,
1582 poly: 0x80b,
1583 init: 0xffff,
1584 refin: true,
1585 refout: true,
1586 xorout: 0x0,
1587 check: 0xa066,
1588 residue: 0x0
1589};
1590
1591/// # [`CRC-16/OPENSAFETY-A`][1]
1592///
1593/// - `width`: `16` bits
1594/// - `poly`: `0x5935` (reversed: `0xac9a`)
1595/// - `init`: `0x0`
1596/// - `refin`: `false`
1597/// - `refout`: `false`
1598/// - `xorout`: `0x0`
1599/// - `check`: `0x5d38`
1600/// - `residue`: `0x0`
1601///
1602/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-opensafety-a
1603pub const CRC_16_OPENSAFETY_A: Algorithm<u16> = Algorithm {
1604 width: 16,
1605 poly: 0x5935,
1606 init: 0x0,
1607 refin: false,
1608 refout: false,
1609 xorout: 0x0,
1610 check: 0x5d38,
1611 residue: 0x0
1612};
1613
1614/// # [`CRC-16/OPENSAFETY-B`][1]
1615///
1616/// - `width`: `16` bits
1617/// - `poly`: `0x755b` (reversed: `0xdaae`)
1618/// - `init`: `0x0`
1619/// - `refin`: `false`
1620/// - `refout`: `false`
1621/// - `xorout`: `0x0`
1622/// - `check`: `0x20fe`
1623/// - `residue`: `0x0`
1624///
1625/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-opensafety-b
1626pub const CRC_16_OPENSAFETY_B: Algorithm<u16> = Algorithm {
1627 width: 16,
1628 poly: 0x755b,
1629 init: 0x0,
1630 refin: false,
1631 refout: false,
1632 xorout: 0x0,
1633 check: 0x20fe,
1634 residue: 0x0
1635};
1636
1637/// # [`CRC-16/PROFIBUS`][1]
1638///
1639/// - `width`: `16` bits
1640/// - `poly`: `0x1dcf` (reversed: `0xf3b8`)
1641/// - `init`: `0xffff`
1642/// - `refin`: `false`
1643/// - `refout`: `false`
1644/// - `xorout`: `0xffff`
1645/// - `check`: `0xa819`
1646/// - `residue`: `0xe394`
1647///
1648/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-profibus
1649pub const CRC_16_PROFIBUS: Algorithm<u16> = Algorithm {
1650 width: 16,
1651 poly: 0x1dcf,
1652 init: 0xffff,
1653 refin: false,
1654 refout: false,
1655 xorout: 0xffff,
1656 check: 0xa819,
1657 residue: 0xe394
1658};
1659
1660/// # [`CRC-16/RIELLO`][1]
1661///
1662/// - `width`: `16` bits
1663/// - `poly`: `0x1021` (reversed: `0x8408`)
1664/// - `init`: `0xb2aa`
1665/// - `refin`: `true`
1666/// - `refout`: `true`
1667/// - `xorout`: `0x0`
1668/// - `check`: `0x63d0`
1669/// - `residue`: `0x0`
1670///
1671/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-riello
1672pub const CRC_16_RIELLO: Algorithm<u16> = Algorithm {
1673 width: 16,
1674 poly: 0x1021,
1675 init: 0xb2aa,
1676 refin: true,
1677 refout: true,
1678 xorout: 0x0,
1679 check: 0x63d0,
1680 residue: 0x0
1681};
1682
1683/// # [`CRC-16/SPI-FUJITSU`][1]
1684///
1685/// - `width`: `16` bits
1686/// - `poly`: `0x1021` (reversed: `0x8408`)
1687/// - `init`: `0x1d0f`
1688/// - `refin`: `false`
1689/// - `refout`: `false`
1690/// - `xorout`: `0x0`
1691/// - `check`: `0xe5cc`
1692/// - `residue`: `0x0`
1693///
1694/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-spi-fujitsu
1695pub const CRC_16_SPI_FUJITSU: Algorithm<u16> = Algorithm {
1696 width: 16,
1697 poly: 0x1021,
1698 init: 0x1d0f,
1699 refin: false,
1700 refout: false,
1701 xorout: 0x0,
1702 check: 0xe5cc,
1703 residue: 0x0
1704};
1705
1706/// # [`CRC-16/T10-DIF`][1]
1707///
1708/// - `width`: `16` bits
1709/// - `poly`: `0x8bb7` (reversed: `0xedd1`)
1710/// - `init`: `0x0`
1711/// - `refin`: `false`
1712/// - `refout`: `false`
1713/// - `xorout`: `0x0`
1714/// - `check`: `0xd0db`
1715/// - `residue`: `0x0`
1716///
1717/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-t10-dif
1718pub const CRC_16_T10_DIF: Algorithm<u16> = Algorithm {
1719 width: 16,
1720 poly: 0x8bb7,
1721 init: 0x0,
1722 refin: false,
1723 refout: false,
1724 xorout: 0x0,
1725 check: 0xd0db,
1726 residue: 0x0
1727};
1728
1729/// # [`CRC-16/TELEDISK`][1]
1730///
1731/// - `width`: `16` bits
1732/// - `poly`: `0xa097` (reversed: `0xe905`)
1733/// - `init`: `0x0`
1734/// - `refin`: `false`
1735/// - `refout`: `false`
1736/// - `xorout`: `0x0`
1737/// - `check`: `0xfb3`
1738/// - `residue`: `0x0`
1739///
1740/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-teledisk
1741pub const CRC_16_TELEDISK: Algorithm<u16> = Algorithm {
1742 width: 16,
1743 poly: 0xa097,
1744 init: 0x0,
1745 refin: false,
1746 refout: false,
1747 xorout: 0x0,
1748 check: 0xfb3,
1749 residue: 0x0
1750};
1751
1752/// # [`CRC-16/TMS37157`][1]
1753///
1754/// - `width`: `16` bits
1755/// - `poly`: `0x1021` (reversed: `0x8408`)
1756/// - `init`: `0x89ec`
1757/// - `refin`: `true`
1758/// - `refout`: `true`
1759/// - `xorout`: `0x0`
1760/// - `check`: `0x26b1`
1761/// - `residue`: `0x0`
1762///
1763/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-tms37157
1764pub const CRC_16_TMS37157: Algorithm<u16> = Algorithm {
1765 width: 16,
1766 poly: 0x1021,
1767 init: 0x89ec,
1768 refin: true,
1769 refout: true,
1770 xorout: 0x0,
1771 check: 0x26b1,
1772 residue: 0x0
1773};
1774
1775/// # [`CRC-16/UMTS`][1]
1776///
1777/// - `width`: `16` bits
1778/// - `poly`: `0x8005` (reversed: `0xa001`)
1779/// - `init`: `0x0`
1780/// - `refin`: `false`
1781/// - `refout`: `false`
1782/// - `xorout`: `0x0`
1783/// - `check`: `0xfee8`
1784/// - `residue`: `0x0`
1785///
1786/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-umts
1787pub const CRC_16_UMTS: Algorithm<u16> = Algorithm {
1788 width: 16,
1789 poly: 0x8005,
1790 init: 0x0,
1791 refin: false,
1792 refout: false,
1793 xorout: 0x0,
1794 check: 0xfee8,
1795 residue: 0x0
1796};
1797
1798/// # [`CRC-16/USB`][1]
1799///
1800/// - `width`: `16` bits
1801/// - `poly`: `0x8005` (reversed: `0xa001`)
1802/// - `init`: `0xffff`
1803/// - `refin`: `true`
1804/// - `refout`: `true`
1805/// - `xorout`: `0xffff`
1806/// - `check`: `0xb4c8`
1807/// - `residue`: `0xb001`
1808///
1809/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-usb
1810pub const CRC_16_USB: Algorithm<u16> = Algorithm {
1811 width: 16,
1812 poly: 0x8005,
1813 init: 0xffff,
1814 refin: true,
1815 refout: true,
1816 xorout: 0xffff,
1817 check: 0xb4c8,
1818 residue: 0xb001
1819};
1820
1821/// # [`CRC-16/XMODEM`][1]
1822///
1823/// - `width`: `16` bits
1824/// - `poly`: `0x1021` (reversed: `0x8408`)
1825/// - `init`: `0x0`
1826/// - `refin`: `false`
1827/// - `refout`: `false`
1828/// - `xorout`: `0x0`
1829/// - `check`: `0x31c3`
1830/// - `residue`: `0x0`
1831///
1832/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-16-xmodem
1833pub const CRC_16_XMODEM: Algorithm<u16> = Algorithm {
1834 width: 16,
1835 poly: 0x1021,
1836 init: 0x0,
1837 refin: false,
1838 refout: false,
1839 xorout: 0x0,
1840 check: 0x31c3,
1841 residue: 0x0
1842};
1843
1844/// # [`CRC-17/CAN-FD`][1]
1845///
1846/// - `width`: `17` bits
1847/// - `poly`: `0x1685b` (reversed: `0x1b42d`)
1848/// - `init`: `0x0`
1849/// - `refin`: `false`
1850/// - `refout`: `false`
1851/// - `xorout`: `0x0`
1852/// - `check`: `0x4f03`
1853/// - `residue`: `0x0`
1854///
1855/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-17-can-fd
1856pub const CRC_17_CAN_FD: Algorithm<u32> = Algorithm {
1857 width: 17,
1858 poly: 0x1685b,
1859 init: 0x0,
1860 refin: false,
1861 refout: false,
1862 xorout: 0x0,
1863 check: 0x4f03,
1864 residue: 0x0
1865};
1866
1867/// # [`CRC-21/CAN-FD`][1]
1868///
1869/// - `width`: `21` bits
1870/// - `poly`: `0x102899` (reversed: `0x132281`)
1871/// - `init`: `0x0`
1872/// - `refin`: `false`
1873/// - `refout`: `false`
1874/// - `xorout`: `0x0`
1875/// - `check`: `0xed841`
1876/// - `residue`: `0x0`
1877///
1878/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-21-can-fd
1879pub const CRC_21_CAN_FD: Algorithm<u32> = Algorithm {
1880 width: 21,
1881 poly: 0x102899,
1882 init: 0x0,
1883 refin: false,
1884 refout: false,
1885 xorout: 0x0,
1886 check: 0xed841,
1887 residue: 0x0
1888};
1889
1890/// # [`CRC-24/BLE`][1]
1891///
1892/// - `width`: `24` bits
1893/// - `poly`: `0x65b` (reversed: `0xda6000`)
1894/// - `init`: `0x555555`
1895/// - `refin`: `true`
1896/// - `refout`: `true`
1897/// - `xorout`: `0x0`
1898/// - `check`: `0xc25a56`
1899/// - `residue`: `0x0`
1900///
1901/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-ble
1902pub const CRC_24_BLE: Algorithm<u32> = Algorithm {
1903 width: 24,
1904 poly: 0x65b,
1905 init: 0x555555,
1906 refin: true,
1907 refout: true,
1908 xorout: 0x0,
1909 check: 0xc25a56,
1910 residue: 0x0
1911};
1912
1913/// # [`CRC-24/FLEXRAY-A`][1]
1914///
1915/// - `width`: `24` bits
1916/// - `poly`: `0x5d6dcb` (reversed: `0xd3b6ba`)
1917/// - `init`: `0xfedcba`
1918/// - `refin`: `false`
1919/// - `refout`: `false`
1920/// - `xorout`: `0x0`
1921/// - `check`: `0x7979bd`
1922/// - `residue`: `0x0`
1923///
1924/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-flexray-a
1925pub const CRC_24_FLEXRAY_A: Algorithm<u32> = Algorithm {
1926 width: 24,
1927 poly: 0x5d6dcb,
1928 init: 0xfedcba,
1929 refin: false,
1930 refout: false,
1931 xorout: 0x0,
1932 check: 0x7979bd,
1933 residue: 0x0
1934};
1935
1936/// # [`CRC-24/FLEXRAY-B`][1]
1937///
1938/// - `width`: `24` bits
1939/// - `poly`: `0x5d6dcb` (reversed: `0xd3b6ba`)
1940/// - `init`: `0xabcdef`
1941/// - `refin`: `false`
1942/// - `refout`: `false`
1943/// - `xorout`: `0x0`
1944/// - `check`: `0x1f23b8`
1945/// - `residue`: `0x0`
1946///
1947/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-flexray-b
1948pub const CRC_24_FLEXRAY_B: Algorithm<u32> = Algorithm {
1949 width: 24,
1950 poly: 0x5d6dcb,
1951 init: 0xabcdef,
1952 refin: false,
1953 refout: false,
1954 xorout: 0x0,
1955 check: 0x1f23b8,
1956 residue: 0x0
1957};
1958
1959/// # [`CRC-24/INTERLAKEN`][1]
1960///
1961/// - `width`: `24` bits
1962/// - `poly`: `0x328b63` (reversed: `0xc6d14c`)
1963/// - `init`: `0xffffff`
1964/// - `refin`: `false`
1965/// - `refout`: `false`
1966/// - `xorout`: `0xffffff`
1967/// - `check`: `0xb4f3e6`
1968/// - `residue`: `0x144e63`
1969///
1970/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-interlaken
1971pub const CRC_24_INTERLAKEN: Algorithm<u32> = Algorithm {
1972 width: 24,
1973 poly: 0x328b63,
1974 init: 0xffffff,
1975 refin: false,
1976 refout: false,
1977 xorout: 0xffffff,
1978 check: 0xb4f3e6,
1979 residue: 0x144e63
1980};
1981
1982/// # [`CRC-24/LTE-A`][1]
1983///
1984/// - `width`: `24` bits
1985/// - `poly`: `0x864cfb` (reversed: `0xdf3261`)
1986/// - `init`: `0x0`
1987/// - `refin`: `false`
1988/// - `refout`: `false`
1989/// - `xorout`: `0x0`
1990/// - `check`: `0xcde703`
1991/// - `residue`: `0x0`
1992///
1993/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-lte-a
1994pub const CRC_24_LTE_A: Algorithm<u32> = Algorithm {
1995 width: 24,
1996 poly: 0x864cfb,
1997 init: 0x0,
1998 refin: false,
1999 refout: false,
2000 xorout: 0x0,
2001 check: 0xcde703,
2002 residue: 0x0
2003};
2004
2005/// # [`CRC-24/LTE-B`][1]
2006///
2007/// - `width`: `24` bits
2008/// - `poly`: `0x800063` (reversed: `0xc60001`)
2009/// - `init`: `0x0`
2010/// - `refin`: `false`
2011/// - `refout`: `false`
2012/// - `xorout`: `0x0`
2013/// - `check`: `0x23ef52`
2014/// - `residue`: `0x0`
2015///
2016/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-lte-b
2017pub const CRC_24_LTE_B: Algorithm<u32> = Algorithm {
2018 width: 24,
2019 poly: 0x800063,
2020 init: 0x0,
2021 refin: false,
2022 refout: false,
2023 xorout: 0x0,
2024 check: 0x23ef52,
2025 residue: 0x0
2026};
2027
2028/// # [`CRC-24/OPENPGP`][1]
2029///
2030/// - `width`: `24` bits
2031/// - `poly`: `0x864cfb` (reversed: `0xdf3261`)
2032/// - `init`: `0xb704ce`
2033/// - `refin`: `false`
2034/// - `refout`: `false`
2035/// - `xorout`: `0x0`
2036/// - `check`: `0x21cf02`
2037/// - `residue`: `0x0`
2038///
2039/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-openpgp
2040pub const CRC_24_OPENPGP: Algorithm<u32> = Algorithm {
2041 width: 24,
2042 poly: 0x864cfb,
2043 init: 0xb704ce,
2044 refin: false,
2045 refout: false,
2046 xorout: 0x0,
2047 check: 0x21cf02,
2048 residue: 0x0
2049};
2050
2051/// # [`CRC-24/OS-9`][1]
2052///
2053/// - `width`: `24` bits
2054/// - `poly`: `0x800063` (reversed: `0xc60001`)
2055/// - `init`: `0xffffff`
2056/// - `refin`: `false`
2057/// - `refout`: `false`
2058/// - `xorout`: `0xffffff`
2059/// - `check`: `0x200fa5`
2060/// - `residue`: `0x800fe3`
2061///
2062/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-24-os-9
2063pub const CRC_24_OS_9: Algorithm<u32> = Algorithm {
2064 width: 24,
2065 poly: 0x800063,
2066 init: 0xffffff,
2067 refin: false,
2068 refout: false,
2069 xorout: 0xffffff,
2070 check: 0x200fa5,
2071 residue: 0x800fe3
2072};
2073
2074/// # [`CRC-30/CDMA`][1]
2075///
2076/// - `width`: `30` bits
2077/// - `poly`: `0x2030b9c7` (reversed: `0x38e74301`)
2078/// - `init`: `0x3fffffff`
2079/// - `refin`: `false`
2080/// - `refout`: `false`
2081/// - `xorout`: `0x3fffffff`
2082/// - `check`: `0x4c34abf`
2083/// - `residue`: `0x34efa55a`
2084///
2085/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-30-cdma
2086pub const CRC_30_CDMA: Algorithm<u32> = Algorithm {
2087 width: 30,
2088 poly: 0x2030b9c7,
2089 init: 0x3fffffff,
2090 refin: false,
2091 refout: false,
2092 xorout: 0x3fffffff,
2093 check: 0x4c34abf,
2094 residue: 0x34efa55a
2095};
2096
2097/// # [`CRC-31/PHILIPS`][1]
2098///
2099/// - `width`: `31` bits
2100/// - `poly`: `0x4c11db7` (reversed: `0x76dc4190`)
2101/// - `init`: `0x7fffffff`
2102/// - `refin`: `false`
2103/// - `refout`: `false`
2104/// - `xorout`: `0x7fffffff`
2105/// - `check`: `0xce9e46c`
2106/// - `residue`: `0x4eaf26f1`
2107///
2108/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-31-philips
2109pub const CRC_31_PHILIPS: Algorithm<u32> = Algorithm {
2110 width: 31,
2111 poly: 0x4c11db7,
2112 init: 0x7fffffff,
2113 refin: false,
2114 refout: false,
2115 xorout: 0x7fffffff,
2116 check: 0xce9e46c,
2117 residue: 0x4eaf26f1
2118};
2119
2120/// # [`CRC-32/AIXM`][1]
2121///
2122/// - `width`: `32` bits
2123/// - `poly`: `0x814141ab` (reversed: `0xd5828281`)
2124/// - `init`: `0x0`
2125/// - `refin`: `false`
2126/// - `refout`: `false`
2127/// - `xorout`: `0x0`
2128/// - `check`: `0x3010bf7f`
2129/// - `residue`: `0x0`
2130///
2131/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-aixm
2132pub const CRC_32_AIXM: Algorithm<u32> = Algorithm {
2133 width: 32,
2134 poly: 0x814141ab,
2135 init: 0x0,
2136 refin: false,
2137 refout: false,
2138 xorout: 0x0,
2139 check: 0x3010bf7f,
2140 residue: 0x0
2141};
2142
2143/// # [`CRC-32/AUTOSAR`][1]
2144///
2145/// - `width`: `32` bits
2146/// - `poly`: `0xf4acfb13` (reversed: `0xc8df352f`)
2147/// - `init`: `0xffffffff`
2148/// - `refin`: `true`
2149/// - `refout`: `true`
2150/// - `xorout`: `0xffffffff`
2151/// - `check`: `0x1697d06a`
2152/// - `residue`: `0x904cddbf`
2153///
2154/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-autosar
2155pub const CRC_32_AUTOSAR: Algorithm<u32> = Algorithm {
2156 width: 32,
2157 poly: 0xf4acfb13,
2158 init: 0xffffffff,
2159 refin: true,
2160 refout: true,
2161 xorout: 0xffffffff,
2162 check: 0x1697d06a,
2163 residue: 0x904cddbf
2164};
2165
2166/// # [`CRC-32/BASE91-D`][1]
2167///
2168/// - `width`: `32` bits
2169/// - `poly`: `0xa833982b` (reversed: `0xd419cc15`)
2170/// - `init`: `0xffffffff`
2171/// - `refin`: `true`
2172/// - `refout`: `true`
2173/// - `xorout`: `0xffffffff`
2174/// - `check`: `0x87315576`
2175/// - `residue`: `0x45270551`
2176///
2177/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-base91-d
2178pub const CRC_32_BASE91_D: Algorithm<u32> = Algorithm {
2179 width: 32,
2180 poly: 0xa833982b,
2181 init: 0xffffffff,
2182 refin: true,
2183 refout: true,
2184 xorout: 0xffffffff,
2185 check: 0x87315576,
2186 residue: 0x45270551
2187};
2188
2189/// # [`CRC-32/BZIP2`][1]
2190///
2191/// - `width`: `32` bits
2192/// - `poly`: `0x4c11db7` (reversed: `0xedb88320`)
2193/// - `init`: `0xffffffff`
2194/// - `refin`: `false`
2195/// - `refout`: `false`
2196/// - `xorout`: `0xffffffff`
2197/// - `check`: `0xfc891918`
2198/// - `residue`: `0xc704dd7b`
2199///
2200/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-bzip2
2201pub const CRC_32_BZIP2: Algorithm<u32> = Algorithm {
2202 width: 32,
2203 poly: 0x4c11db7,
2204 init: 0xffffffff,
2205 refin: false,
2206 refout: false,
2207 xorout: 0xffffffff,
2208 check: 0xfc891918,
2209 residue: 0xc704dd7b
2210};
2211
2212/// # [`CRC-32/CD-ROM-EDC`][1]
2213///
2214/// - `width`: `32` bits
2215/// - `poly`: `0x8001801b` (reversed: `0xd8018001`)
2216/// - `init`: `0x0`
2217/// - `refin`: `true`
2218/// - `refout`: `true`
2219/// - `xorout`: `0x0`
2220/// - `check`: `0x6ec2edc4`
2221/// - `residue`: `0x0`
2222///
2223/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-cd-rom-edc
2224pub const CRC_32_CD_ROM_EDC: Algorithm<u32> = Algorithm {
2225 width: 32,
2226 poly: 0x8001801b,
2227 init: 0x0,
2228 refin: true,
2229 refout: true,
2230 xorout: 0x0,
2231 check: 0x6ec2edc4,
2232 residue: 0x0
2233};
2234
2235/// # [`CRC-32/CKSUM`][1]
2236///
2237/// - `width`: `32` bits
2238/// - `poly`: `0x4c11db7` (reversed: `0xedb88320`)
2239/// - `init`: `0x0`
2240/// - `refin`: `false`
2241/// - `refout`: `false`
2242/// - `xorout`: `0xffffffff`
2243/// - `check`: `0x765e7680`
2244/// - `residue`: `0xc704dd7b`
2245///
2246/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-cksum
2247pub const CRC_32_CKSUM: Algorithm<u32> = Algorithm {
2248 width: 32,
2249 poly: 0x4c11db7,
2250 init: 0x0,
2251 refin: false,
2252 refout: false,
2253 xorout: 0xffffffff,
2254 check: 0x765e7680,
2255 residue: 0xc704dd7b
2256};
2257
2258/// # [`CRC-32/ISCSI`][1]
2259///
2260/// - `width`: `32` bits
2261/// - `poly`: `0x1edc6f41` (reversed: `0x82f63b78`)
2262/// - `init`: `0xffffffff`
2263/// - `refin`: `true`
2264/// - `refout`: `true`
2265/// - `xorout`: `0xffffffff`
2266/// - `check`: `0xe3069283`
2267/// - `residue`: `0xb798b438`
2268///
2269/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-iscsi
2270pub const CRC_32_ISCSI: Algorithm<u32> = Algorithm {
2271 width: 32,
2272 poly: 0x1edc6f41,
2273 init: 0xffffffff,
2274 refin: true,
2275 refout: true,
2276 xorout: 0xffffffff,
2277 check: 0xe3069283,
2278 residue: 0xb798b438
2279};
2280
2281/// # [`CRC-32/ISO-HDLC`][1]
2282///
2283/// - `width`: `32` bits
2284/// - `poly`: `0x4c11db7` (reversed: `0xedb88320`)
2285/// - `init`: `0xffffffff`
2286/// - `refin`: `true`
2287/// - `refout`: `true`
2288/// - `xorout`: `0xffffffff`
2289/// - `check`: `0xcbf43926`
2290/// - `residue`: `0xdebb20e3`
2291///
2292/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-iso-hdlc
2293pub const CRC_32_ISO_HDLC: Algorithm<u32> = Algorithm {
2294 width: 32,
2295 poly: 0x4c11db7,
2296 init: 0xffffffff,
2297 refin: true,
2298 refout: true,
2299 xorout: 0xffffffff,
2300 check: 0xcbf43926,
2301 residue: 0xdebb20e3
2302};
2303
2304/// # [`CRC-32/JAMCRC`][1]
2305///
2306/// - `width`: `32` bits
2307/// - `poly`: `0x4c11db7` (reversed: `0xedb88320`)
2308/// - `init`: `0xffffffff`
2309/// - `refin`: `true`
2310/// - `refout`: `true`
2311/// - `xorout`: `0x0`
2312/// - `check`: `0x340bc6d9`
2313/// - `residue`: `0x0`
2314///
2315/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-jamcrc
2316pub const CRC_32_JAMCRC: Algorithm<u32> = Algorithm {
2317 width: 32,
2318 poly: 0x4c11db7,
2319 init: 0xffffffff,
2320 refin: true,
2321 refout: true,
2322 xorout: 0x0,
2323 check: 0x340bc6d9,
2324 residue: 0x0
2325};
2326
2327/// # [`CRC-32/MEF`][1]
2328///
2329/// - `width`: `32` bits
2330/// - `poly`: `0x741b8cd7` (reversed: `0xeb31d82e`)
2331/// - `init`: `0xffffffff`
2332/// - `refin`: `true`
2333/// - `refout`: `true`
2334/// - `xorout`: `0x0`
2335/// - `check`: `0xd2c22f51`
2336/// - `residue`: `0x0`
2337///
2338/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-mef
2339pub const CRC_32_MEF: Algorithm<u32> = Algorithm {
2340 width: 32,
2341 poly: 0x741b8cd7,
2342 init: 0xffffffff,
2343 refin: true,
2344 refout: true,
2345 xorout: 0x0,
2346 check: 0xd2c22f51,
2347 residue: 0x0
2348};
2349
2350/// # [`CRC-32/MPEG-2`][1]
2351///
2352/// - `width`: `32` bits
2353/// - `poly`: `0x4c11db7` (reversed: `0xedb88320`)
2354/// - `init`: `0xffffffff`
2355/// - `refin`: `false`
2356/// - `refout`: `false`
2357/// - `xorout`: `0x0`
2358/// - `check`: `0x376e6e7`
2359/// - `residue`: `0x0`
2360///
2361/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-mpeg-2
2362pub const CRC_32_MPEG_2: Algorithm<u32> = Algorithm {
2363 width: 32,
2364 poly: 0x4c11db7,
2365 init: 0xffffffff,
2366 refin: false,
2367 refout: false,
2368 xorout: 0x0,
2369 check: 0x376e6e7,
2370 residue: 0x0
2371};
2372
2373/// # [`CRC-32/XFER`][1]
2374///
2375/// - `width`: `32` bits
2376/// - `poly`: `0xaf` (reversed: `0xf5000000`)
2377/// - `init`: `0x0`
2378/// - `refin`: `false`
2379/// - `refout`: `false`
2380/// - `xorout`: `0x0`
2381/// - `check`: `0xbd0be338`
2382/// - `residue`: `0x0`
2383///
2384/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-32-xfer
2385pub const CRC_32_XFER: Algorithm<u32> = Algorithm {
2386 width: 32,
2387 poly: 0xaf,
2388 init: 0x0,
2389 refin: false,
2390 refout: false,
2391 xorout: 0x0,
2392 check: 0xbd0be338,
2393 residue: 0x0
2394};
2395
2396/// # [`CRC-40/GSM`][1]
2397///
2398/// - `width`: `40` bits
2399/// - `poly`: `0x4820009` (reversed: `0x9000412000`)
2400/// - `init`: `0x0`
2401/// - `refin`: `false`
2402/// - `refout`: `false`
2403/// - `xorout`: `0xffffffffff`
2404/// - `check`: `0xd4164fc646`
2405/// - `residue`: `0xc4ff8071ff`
2406///
2407/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-40-gsm
2408pub const CRC_40_GSM: Algorithm<u64> = Algorithm {
2409 width: 40,
2410 poly: 0x4820009,
2411 init: 0x0,
2412 refin: false,
2413 refout: false,
2414 xorout: 0xffffffffff,
2415 check: 0xd4164fc646,
2416 residue: 0xc4ff8071ff
2417};
2418
2419/// # [`CRC-64/ECMA-182`][1]
2420///
2421/// - `width`: `64` bits
2422/// - `poly`: `0x42f0e1eba9ea3693` (reversed: `0xc96c5795d7870f42`)
2423/// - `init`: `0x0`
2424/// - `refin`: `false`
2425/// - `refout`: `false`
2426/// - `xorout`: `0x0`
2427/// - `check`: `0x6c40df5f0b497347`
2428/// - `residue`: `0x0`
2429///
2430/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-ecma-182
2431pub const CRC_64_ECMA_182: Algorithm<u64> = Algorithm {
2432 width: 64,
2433 poly: 0x42f0e1eba9ea3693,
2434 init: 0x0,
2435 refin: false,
2436 refout: false,
2437 xorout: 0x0,
2438 check: 0x6c40df5f0b497347,
2439 residue: 0x0
2440};
2441
2442/// # [`CRC-64/GO-ISO`][1]
2443///
2444/// - `width`: `64` bits
2445/// - `poly`: `0x1b` (reversed: `0xd800000000000000`)
2446/// - `init`: `0xffffffffffffffff`
2447/// - `refin`: `true`
2448/// - `refout`: `true`
2449/// - `xorout`: `0xffffffffffffffff`
2450/// - `check`: `0xb90956c775a41001`
2451/// - `residue`: `0x5300000000000000`
2452///
2453/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-go-iso
2454pub const CRC_64_GO_ISO: Algorithm<u64> = Algorithm {
2455 width: 64,
2456 poly: 0x1b,
2457 init: 0xffffffffffffffff,
2458 refin: true,
2459 refout: true,
2460 xorout: 0xffffffffffffffff,
2461 check: 0xb90956c775a41001,
2462 residue: 0x5300000000000000
2463};
2464
2465/// # [`CRC-64/MS`][1]
2466///
2467/// - `width`: `64` bits
2468/// - `poly`: `0x259c84cba6426349` (reversed: `0x92c64265d32139a4`)
2469/// - `init`: `0xffffffffffffffff`
2470/// - `refin`: `true`
2471/// - `refout`: `true`
2472/// - `xorout`: `0x0`
2473/// - `check`: `0x75d4b74f024eceea`
2474/// - `residue`: `0x0`
2475///
2476/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-ms
2477pub const CRC_64_MS: Algorithm<u64> = Algorithm {
2478 width: 64,
2479 poly: 0x259c84cba6426349,
2480 init: 0xffffffffffffffff,
2481 refin: true,
2482 refout: true,
2483 xorout: 0x0,
2484 check: 0x75d4b74f024eceea,
2485 residue: 0x0
2486};
2487
2488/// # [`CRC-64/NVME`][1]
2489///
2490/// - `width`: `64` bits
2491/// - `poly`: `0xad93d23594c93659` (reversed: `0x9a6c9329ac4bc9b5`)
2492/// - `init`: `0xffffffffffffffff`
2493/// - `refin`: `true`
2494/// - `refout`: `true`
2495/// - `xorout`: `0xffffffffffffffff`
2496/// - `check`: `0xae8b14860a799888`
2497/// - `residue`: `0xf310303b2b6f6e42`
2498///
2499/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-nvme
2500pub const CRC_64_NVME: Algorithm<u64> = Algorithm {
2501 width: 64,
2502 poly: 0xad93d23594c93659,
2503 init: 0xffffffffffffffff,
2504 refin: true,
2505 refout: true,
2506 xorout: 0xffffffffffffffff,
2507 check: 0xae8b14860a799888,
2508 residue: 0xf310303b2b6f6e42
2509};
2510
2511/// # [`CRC-64/REDIS`][1]
2512///
2513/// - `width`: `64` bits
2514/// - `poly`: `0xad93d23594c935a9` (reversed: `0x95ac9329ac4bc9b5`)
2515/// - `init`: `0x0`
2516/// - `refin`: `true`
2517/// - `refout`: `true`
2518/// - `xorout`: `0x0`
2519/// - `check`: `0xe9c6d914c4b8d9ca`
2520/// - `residue`: `0x0`
2521///
2522/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-redis
2523pub const CRC_64_REDIS: Algorithm<u64> = Algorithm {
2524 width: 64,
2525 poly: 0xad93d23594c935a9,
2526 init: 0x0,
2527 refin: true,
2528 refout: true,
2529 xorout: 0x0,
2530 check: 0xe9c6d914c4b8d9ca,
2531 residue: 0x0
2532};
2533
2534/// # [`CRC-64/WE`][1]
2535///
2536/// - `width`: `64` bits
2537/// - `poly`: `0x42f0e1eba9ea3693` (reversed: `0xc96c5795d7870f42`)
2538/// - `init`: `0xffffffffffffffff`
2539/// - `refin`: `false`
2540/// - `refout`: `false`
2541/// - `xorout`: `0xffffffffffffffff`
2542/// - `check`: `0x62ec59e3f1a4f00a`
2543/// - `residue`: `0xfcacbebd5931a992`
2544///
2545/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-we
2546pub const CRC_64_WE: Algorithm<u64> = Algorithm {
2547 width: 64,
2548 poly: 0x42f0e1eba9ea3693,
2549 init: 0xffffffffffffffff,
2550 refin: false,
2551 refout: false,
2552 xorout: 0xffffffffffffffff,
2553 check: 0x62ec59e3f1a4f00a,
2554 residue: 0xfcacbebd5931a992
2555};
2556
2557/// # [`CRC-64/XZ`][1]
2558///
2559/// - `width`: `64` bits
2560/// - `poly`: `0x42f0e1eba9ea3693` (reversed: `0xc96c5795d7870f42`)
2561/// - `init`: `0xffffffffffffffff`
2562/// - `refin`: `true`
2563/// - `refout`: `true`
2564/// - `xorout`: `0xffffffffffffffff`
2565/// - `check`: `0x995dc9bbdf1939fa`
2566/// - `residue`: `0x49958c9abd7d353f`
2567///
2568/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-64-xz
2569pub const CRC_64_XZ: Algorithm<u64> = Algorithm {
2570 width: 64,
2571 poly: 0x42f0e1eba9ea3693,
2572 init: 0xffffffffffffffff,
2573 refin: true,
2574 refout: true,
2575 xorout: 0xffffffffffffffff,
2576 check: 0x995dc9bbdf1939fa,
2577 residue: 0x49958c9abd7d353f
2578};
2579
2580/// # [`CRC-82/DARC`][1]
2581///
2582/// - `width`: `82` bits
2583/// - `poly`: `0x308c0111011401440411` (reversed: `0x220808a00a2022200c430`)
2584/// - `init`: `0x0`
2585/// - `refin`: `true`
2586/// - `refout`: `true`
2587/// - `xorout`: `0x0`
2588/// - `check`: `0x9ea83f625023801fd612`
2589/// - `residue`: `0x0`
2590///
2591/// [1]: https://reveng.sourceforge.io/crc-catalogue/all.htm#crc.cat.crc-82-darc
2592pub const CRC_82_DARC: Algorithm<u128> = Algorithm {
2593 width: 82,
2594 poly: 0x308c0111011401440411,
2595 init: 0x0,
2596 refin: true,
2597 refout: true,
2598 xorout: 0x0,
2599 check: 0x9ea83f625023801fd612,
2600 residue: 0x0
2601};
2602