1 /* *********************************************************************** 2 * QR-code version information database 3 */ 4 #[derive(Copy, Clone, Debug)] 5 pub struct RSParameters { 6 /// Small block size 7 pub bs: usize, 8 /// Small data words 9 pub dw: usize, 10 /// Number of small blocks 11 pub ns: usize, 12 } 13 14 #[derive(Copy, Clone, Debug)] 15 pub struct VersionInfo { 16 pub data_bytes: usize, 17 /// Alignment pattern information 18 pub apat: [usize; 7], 19 pub ecc: [RSParameters; 4], 20 } 21 22 pub const VERSION_DATA_BASE: [VersionInfo; 41] = [ 23 VersionInfo { 24 data_bytes: 0, 25 apat: [0; 7], 26 ecc: [RSParameters { 27 bs: 0, 28 dw: 0, 29 ns: 0, 30 }; 4], 31 }, 32 VersionInfo { 33 data_bytes: 26, 34 apat: [0, 0, 0, 0, 0, 0, 0], 35 ecc: [ 36 RSParameters { 37 bs: 26, 38 dw: 16, 39 ns: 1, 40 }, 41 RSParameters { 42 bs: 26, 43 dw: 19, 44 ns: 1, 45 }, 46 RSParameters { 47 bs: 26, 48 dw: 9, 49 ns: 1, 50 }, 51 RSParameters { 52 bs: 26, 53 dw: 13, 54 ns: 1, 55 }, 56 ], 57 }, 58 VersionInfo { 59 data_bytes: 44, 60 apat: [6, 18, 0, 0, 0, 0, 0], 61 ecc: [ 62 RSParameters { 63 bs: 44, 64 dw: 28, 65 ns: 1, 66 }, 67 RSParameters { 68 bs: 44, 69 dw: 34, 70 ns: 1, 71 }, 72 RSParameters { 73 bs: 44, 74 dw: 16, 75 ns: 1, 76 }, 77 RSParameters { 78 bs: 44, 79 dw: 22, 80 ns: 1, 81 }, 82 ], 83 }, 84 VersionInfo { 85 data_bytes: 70, 86 apat: [6, 22, 0, 0, 0, 0, 0], 87 ecc: [ 88 RSParameters { 89 bs: 70, 90 dw: 44, 91 ns: 1, 92 }, 93 RSParameters { 94 bs: 70, 95 dw: 55, 96 ns: 1, 97 }, 98 RSParameters { 99 bs: 35, 100 dw: 13, 101 ns: 2, 102 }, 103 RSParameters { 104 bs: 35, 105 dw: 17, 106 ns: 2, 107 }, 108 ], 109 }, 110 VersionInfo { 111 data_bytes: 100, 112 apat: [6, 26, 0, 0, 0, 0, 0], 113 ecc: [ 114 RSParameters { 115 bs: 50, 116 dw: 32, 117 ns: 2, 118 }, 119 RSParameters { 120 bs: 100, 121 dw: 80, 122 ns: 1, 123 }, 124 RSParameters { 125 bs: 25, 126 dw: 9, 127 ns: 4, 128 }, 129 RSParameters { 130 bs: 50, 131 dw: 24, 132 ns: 2, 133 }, 134 ], 135 }, 136 VersionInfo { 137 data_bytes: 134, 138 apat: [6, 30, 0, 0, 0, 0, 0], 139 ecc: [ 140 RSParameters { 141 bs: 67, 142 dw: 43, 143 ns: 2, 144 }, 145 RSParameters { 146 bs: 134, 147 dw: 108, 148 ns: 1, 149 }, 150 RSParameters { 151 bs: 33, 152 dw: 11, 153 ns: 2, 154 }, 155 RSParameters { 156 bs: 33, 157 dw: 15, 158 ns: 2, 159 }, 160 ], 161 }, 162 VersionInfo { 163 data_bytes: 172, 164 apat: [6, 34, 0, 0, 0, 0, 0], 165 ecc: [ 166 RSParameters { 167 bs: 43, 168 dw: 27, 169 ns: 4, 170 }, 171 RSParameters { 172 bs: 86, 173 dw: 68, 174 ns: 2, 175 }, 176 RSParameters { 177 bs: 43, 178 dw: 15, 179 ns: 4, 180 }, 181 RSParameters { 182 bs: 43, 183 dw: 19, 184 ns: 4, 185 }, 186 ], 187 }, 188 VersionInfo { 189 data_bytes: 196, 190 apat: [6, 22, 38, 0, 0, 0, 0], 191 ecc: [ 192 RSParameters { 193 bs: 49, 194 dw: 31, 195 ns: 4, 196 }, 197 RSParameters { 198 bs: 98, 199 dw: 78, 200 ns: 2, 201 }, 202 RSParameters { 203 bs: 39, 204 dw: 13, 205 ns: 4, 206 }, 207 RSParameters { 208 bs: 32, 209 dw: 14, 210 ns: 2, 211 }, 212 ], 213 }, 214 VersionInfo { 215 data_bytes: 242, 216 apat: [6, 24, 42, 0, 0, 0, 0], 217 ecc: [ 218 RSParameters { 219 bs: 60, 220 dw: 38, 221 ns: 2, 222 }, 223 RSParameters { 224 bs: 121, 225 dw: 97, 226 ns: 2, 227 }, 228 RSParameters { 229 bs: 40, 230 dw: 14, 231 ns: 4, 232 }, 233 RSParameters { 234 bs: 40, 235 dw: 18, 236 ns: 4, 237 }, 238 ], 239 }, 240 VersionInfo { 241 data_bytes: 292, 242 apat: [6, 26, 46, 0, 0, 0, 0], 243 ecc: [ 244 RSParameters { 245 bs: 58, 246 dw: 36, 247 ns: 3, 248 }, 249 RSParameters { 250 bs: 146, 251 dw: 116, 252 ns: 2, 253 }, 254 RSParameters { 255 bs: 36, 256 dw: 12, 257 ns: 4, 258 }, 259 RSParameters { 260 bs: 36, 261 dw: 16, 262 ns: 4, 263 }, 264 ], 265 }, 266 VersionInfo { 267 data_bytes: 346, 268 apat: [6, 28, 50, 0, 0, 0, 0], 269 ecc: [ 270 RSParameters { 271 bs: 69, 272 dw: 43, 273 ns: 4, 274 }, 275 RSParameters { 276 bs: 86, 277 dw: 68, 278 ns: 2, 279 }, 280 RSParameters { 281 bs: 43, 282 dw: 15, 283 ns: 6, 284 }, 285 RSParameters { 286 bs: 43, 287 dw: 19, 288 ns: 6, 289 }, 290 ], 291 }, 292 VersionInfo { 293 data_bytes: 404, 294 apat: [6, 30, 54, 0, 0, 0, 0], 295 ecc: [ 296 RSParameters { 297 bs: 80, 298 dw: 50, 299 ns: 1, 300 }, 301 RSParameters { 302 bs: 101, 303 dw: 81, 304 ns: 4, 305 }, 306 RSParameters { 307 bs: 36, 308 dw: 12, 309 ns: 3, 310 }, 311 RSParameters { 312 bs: 50, 313 dw: 22, 314 ns: 4, 315 }, 316 ], 317 }, 318 VersionInfo { 319 data_bytes: 466, 320 apat: [6, 32, 58, 0, 0, 0, 0], 321 ecc: [ 322 RSParameters { 323 bs: 58, 324 dw: 36, 325 ns: 6, 326 }, 327 RSParameters { 328 bs: 116, 329 dw: 92, 330 ns: 2, 331 }, 332 RSParameters { 333 bs: 42, 334 dw: 14, 335 ns: 7, 336 }, 337 RSParameters { 338 bs: 46, 339 dw: 20, 340 ns: 4, 341 }, 342 ], 343 }, 344 VersionInfo { 345 data_bytes: 532, 346 apat: [6, 34, 62, 0, 0, 0, 0], 347 ecc: [ 348 RSParameters { 349 bs: 59, 350 dw: 37, 351 ns: 8, 352 }, 353 RSParameters { 354 bs: 133, 355 dw: 107, 356 ns: 4, 357 }, 358 RSParameters { 359 bs: 33, 360 dw: 11, 361 ns: 12, 362 }, 363 RSParameters { 364 bs: 44, 365 dw: 20, 366 ns: 8, 367 }, 368 ], 369 }, 370 VersionInfo { 371 data_bytes: 581, 372 apat: [6, 26, 46, 66, 0, 0, 0], 373 ecc: [ 374 RSParameters { 375 bs: 64, 376 dw: 40, 377 ns: 4, 378 }, 379 RSParameters { 380 bs: 145, 381 dw: 115, 382 ns: 3, 383 }, 384 RSParameters { 385 bs: 36, 386 dw: 12, 387 ns: 11, 388 }, 389 RSParameters { 390 bs: 36, 391 dw: 16, 392 ns: 11, 393 }, 394 ], 395 }, 396 VersionInfo { 397 data_bytes: 655, 398 apat: [6, 26, 48, 70, 0, 0, 0], 399 ecc: [ 400 RSParameters { 401 bs: 65, 402 dw: 41, 403 ns: 5, 404 }, 405 RSParameters { 406 bs: 109, 407 dw: 87, 408 ns: 5, 409 }, 410 RSParameters { 411 bs: 36, 412 dw: 12, 413 ns: 11, 414 }, 415 RSParameters { 416 bs: 54, 417 dw: 24, 418 ns: 5, 419 }, 420 ], 421 }, 422 VersionInfo { 423 data_bytes: 733, 424 apat: [6, 26, 50, 74, 0, 0, 0], 425 ecc: [ 426 RSParameters { 427 bs: 73, 428 dw: 45, 429 ns: 7, 430 }, 431 RSParameters { 432 bs: 122, 433 dw: 98, 434 ns: 5, 435 }, 436 RSParameters { 437 bs: 45, 438 dw: 15, 439 ns: 3, 440 }, 441 RSParameters { 442 bs: 43, 443 dw: 19, 444 ns: 15, 445 }, 446 ], 447 }, 448 VersionInfo { 449 data_bytes: 815, 450 apat: [6, 30, 54, 78, 0, 0, 0], 451 ecc: [ 452 RSParameters { 453 bs: 74, 454 dw: 46, 455 ns: 10, 456 }, 457 RSParameters { 458 bs: 135, 459 dw: 107, 460 ns: 1, 461 }, 462 RSParameters { 463 bs: 42, 464 dw: 14, 465 ns: 2, 466 }, 467 RSParameters { 468 bs: 50, 469 dw: 22, 470 ns: 1, 471 }, 472 ], 473 }, 474 VersionInfo { 475 data_bytes: 901, 476 apat: [6, 30, 56, 82, 0, 0, 0], 477 ecc: [ 478 RSParameters { 479 bs: 69, 480 dw: 43, 481 ns: 9, 482 }, 483 RSParameters { 484 bs: 150, 485 dw: 120, 486 ns: 5, 487 }, 488 RSParameters { 489 bs: 42, 490 dw: 14, 491 ns: 2, 492 }, 493 RSParameters { 494 bs: 50, 495 dw: 22, 496 ns: 17, 497 }, 498 ], 499 }, 500 VersionInfo { 501 data_bytes: 991, 502 apat: [6, 30, 58, 86, 0, 0, 0], 503 ecc: [ 504 RSParameters { 505 bs: 70, 506 dw: 44, 507 ns: 3, 508 }, 509 RSParameters { 510 bs: 141, 511 dw: 113, 512 ns: 3, 513 }, 514 RSParameters { 515 bs: 39, 516 dw: 13, 517 ns: 9, 518 }, 519 RSParameters { 520 bs: 47, 521 dw: 21, 522 ns: 17, 523 }, 524 ], 525 }, 526 VersionInfo { 527 data_bytes: 1085, 528 apat: [6, 34, 62, 90, 0, 0, 0], 529 ecc: [ 530 RSParameters { 531 bs: 67, 532 dw: 41, 533 ns: 3, 534 }, 535 RSParameters { 536 bs: 135, 537 dw: 107, 538 ns: 3, 539 }, 540 RSParameters { 541 bs: 43, 542 dw: 15, 543 ns: 15, 544 }, 545 RSParameters { 546 bs: 54, 547 dw: 24, 548 ns: 15, 549 }, 550 ], 551 }, 552 VersionInfo { 553 data_bytes: 1156, 554 apat: [6, 28, 50, 72, 92, 0, 0], 555 ecc: [ 556 RSParameters { 557 bs: 68, 558 dw: 42, 559 ns: 17, 560 }, 561 RSParameters { 562 bs: 144, 563 dw: 116, 564 ns: 4, 565 }, 566 RSParameters { 567 bs: 46, 568 dw: 16, 569 ns: 19, 570 }, 571 RSParameters { 572 bs: 50, 573 dw: 22, 574 ns: 17, 575 }, 576 ], 577 }, 578 VersionInfo { 579 data_bytes: 1258, 580 apat: [6, 26, 50, 74, 98, 0, 0], 581 ecc: [ 582 RSParameters { 583 bs: 74, 584 dw: 46, 585 ns: 17, 586 }, 587 RSParameters { 588 bs: 139, 589 dw: 111, 590 ns: 2, 591 }, 592 RSParameters { 593 bs: 37, 594 dw: 13, 595 ns: 34, 596 }, 597 RSParameters { 598 bs: 54, 599 dw: 24, 600 ns: 7, 601 }, 602 ], 603 }, 604 VersionInfo { 605 data_bytes: 1364, 606 apat: [6, 30, 54, 78, 102, 0, 0], 607 ecc: [ 608 RSParameters { 609 bs: 75, 610 dw: 47, 611 ns: 4, 612 }, 613 RSParameters { 614 bs: 151, 615 dw: 121, 616 ns: 4, 617 }, 618 RSParameters { 619 bs: 45, 620 dw: 15, 621 ns: 16, 622 }, 623 RSParameters { 624 bs: 54, 625 dw: 24, 626 ns: 11, 627 }, 628 ], 629 }, 630 VersionInfo { 631 data_bytes: 1474, 632 apat: [6, 28, 54, 80, 106, 0, 0], 633 ecc: [ 634 RSParameters { 635 bs: 73, 636 dw: 45, 637 ns: 6, 638 }, 639 RSParameters { 640 bs: 147, 641 dw: 117, 642 ns: 6, 643 }, 644 RSParameters { 645 bs: 46, 646 dw: 16, 647 ns: 30, 648 }, 649 RSParameters { 650 bs: 54, 651 dw: 24, 652 ns: 11, 653 }, 654 ], 655 }, 656 VersionInfo { 657 data_bytes: 1588, 658 apat: [6, 32, 58, 84, 110, 0, 0], 659 ecc: [ 660 RSParameters { 661 bs: 75, 662 dw: 47, 663 ns: 8, 664 }, 665 RSParameters { 666 bs: 132, 667 dw: 106, 668 ns: 8, 669 }, 670 RSParameters { 671 bs: 45, 672 dw: 15, 673 ns: 22, 674 }, 675 RSParameters { 676 bs: 54, 677 dw: 24, 678 ns: 7, 679 }, 680 ], 681 }, 682 VersionInfo { 683 data_bytes: 1706, 684 apat: [6, 30, 58, 86, 114, 0, 0], 685 ecc: [ 686 RSParameters { 687 bs: 74, 688 dw: 46, 689 ns: 19, 690 }, 691 RSParameters { 692 bs: 142, 693 dw: 114, 694 ns: 10, 695 }, 696 RSParameters { 697 bs: 46, 698 dw: 16, 699 ns: 33, 700 }, 701 RSParameters { 702 bs: 50, 703 dw: 22, 704 ns: 28, 705 }, 706 ], 707 }, 708 VersionInfo { 709 data_bytes: 1828, 710 apat: [6, 34, 62, 90, 118, 0, 0], 711 ecc: [ 712 RSParameters { 713 bs: 73, 714 dw: 45, 715 ns: 22, 716 }, 717 RSParameters { 718 bs: 152, 719 dw: 122, 720 ns: 8, 721 }, 722 RSParameters { 723 bs: 45, 724 dw: 15, 725 ns: 12, 726 }, 727 RSParameters { 728 bs: 53, 729 dw: 23, 730 ns: 8, 731 }, 732 ], 733 }, 734 VersionInfo { 735 data_bytes: 1921, 736 apat: [6, 26, 50, 74, 98, 122, 0], 737 ecc: [ 738 RSParameters { 739 bs: 73, 740 dw: 45, 741 ns: 3, 742 }, 743 RSParameters { 744 bs: 147, 745 dw: 117, 746 ns: 3, 747 }, 748 RSParameters { 749 bs: 45, 750 dw: 15, 751 ns: 11, 752 }, 753 RSParameters { 754 bs: 54, 755 dw: 24, 756 ns: 4, 757 }, 758 ], 759 }, 760 VersionInfo { 761 data_bytes: 2051, 762 apat: [6, 30, 54, 78, 102, 126, 0], 763 ecc: [ 764 RSParameters { 765 bs: 73, 766 dw: 45, 767 ns: 21, 768 }, 769 RSParameters { 770 bs: 146, 771 dw: 116, 772 ns: 7, 773 }, 774 RSParameters { 775 bs: 45, 776 dw: 15, 777 ns: 19, 778 }, 779 RSParameters { 780 bs: 53, 781 dw: 23, 782 ns: 1, 783 }, 784 ], 785 }, 786 VersionInfo { 787 data_bytes: 2185, 788 apat: [6, 26, 52, 78, 104, 130, 0], 789 ecc: [ 790 RSParameters { 791 bs: 75, 792 dw: 47, 793 ns: 19, 794 }, 795 RSParameters { 796 bs: 145, 797 dw: 115, 798 ns: 5, 799 }, 800 RSParameters { 801 bs: 45, 802 dw: 15, 803 ns: 23, 804 }, 805 RSParameters { 806 bs: 54, 807 dw: 24, 808 ns: 15, 809 }, 810 ], 811 }, 812 VersionInfo { 813 data_bytes: 2323, 814 apat: [6, 30, 56, 82, 108, 134, 0], 815 ecc: [ 816 RSParameters { 817 bs: 74, 818 dw: 46, 819 ns: 2, 820 }, 821 RSParameters { 822 bs: 145, 823 dw: 115, 824 ns: 13, 825 }, 826 RSParameters { 827 bs: 45, 828 dw: 15, 829 ns: 23, 830 }, 831 RSParameters { 832 bs: 54, 833 dw: 24, 834 ns: 42, 835 }, 836 ], 837 }, 838 VersionInfo { 839 data_bytes: 2465, 840 apat: [6, 34, 60, 86, 112, 138, 0], 841 ecc: [ 842 RSParameters { 843 bs: 74, 844 dw: 46, 845 ns: 10, 846 }, 847 RSParameters { 848 bs: 145, 849 dw: 115, 850 ns: 17, 851 }, 852 RSParameters { 853 bs: 45, 854 dw: 15, 855 ns: 19, 856 }, 857 RSParameters { 858 bs: 54, 859 dw: 24, 860 ns: 10, 861 }, 862 ], 863 }, 864 VersionInfo { 865 data_bytes: 2611, 866 apat: [6, 30, 58, 86, 114, 142, 0], 867 ecc: [ 868 RSParameters { 869 bs: 74, 870 dw: 46, 871 ns: 14, 872 }, 873 RSParameters { 874 bs: 145, 875 dw: 115, 876 ns: 17, 877 }, 878 RSParameters { 879 bs: 45, 880 dw: 15, 881 ns: 11, 882 }, 883 RSParameters { 884 bs: 54, 885 dw: 24, 886 ns: 29, 887 }, 888 ], 889 }, 890 VersionInfo { 891 data_bytes: 2761, 892 apat: [6, 34, 62, 90, 118, 146, 0], 893 ecc: [ 894 RSParameters { 895 bs: 74, 896 dw: 46, 897 ns: 14, 898 }, 899 RSParameters { 900 bs: 145, 901 dw: 115, 902 ns: 13, 903 }, 904 RSParameters { 905 bs: 46, 906 dw: 16, 907 ns: 59, 908 }, 909 RSParameters { 910 bs: 54, 911 dw: 24, 912 ns: 44, 913 }, 914 ], 915 }, 916 VersionInfo { 917 data_bytes: 2876, 918 apat: [6, 30, 54, 78, 102, 126, 150], 919 ecc: [ 920 RSParameters { 921 bs: 75, 922 dw: 47, 923 ns: 12, 924 }, 925 RSParameters { 926 bs: 151, 927 dw: 121, 928 ns: 12, 929 }, 930 RSParameters { 931 bs: 45, 932 dw: 15, 933 ns: 22, 934 }, 935 RSParameters { 936 bs: 54, 937 dw: 24, 938 ns: 39, 939 }, 940 ], 941 }, 942 VersionInfo { 943 data_bytes: 3034, 944 apat: [6, 24, 50, 76, 102, 128, 154], 945 ecc: [ 946 RSParameters { 947 bs: 75, 948 dw: 47, 949 ns: 6, 950 }, 951 RSParameters { 952 bs: 151, 953 dw: 121, 954 ns: 6, 955 }, 956 RSParameters { 957 bs: 45, 958 dw: 15, 959 ns: 2, 960 }, 961 RSParameters { 962 bs: 54, 963 dw: 24, 964 ns: 46, 965 }, 966 ], 967 }, 968 VersionInfo { 969 data_bytes: 3196, 970 apat: [6, 28, 54, 80, 106, 132, 158], 971 ecc: [ 972 RSParameters { 973 bs: 74, 974 dw: 46, 975 ns: 29, 976 }, 977 RSParameters { 978 bs: 152, 979 dw: 122, 980 ns: 17, 981 }, 982 RSParameters { 983 bs: 45, 984 dw: 15, 985 ns: 24, 986 }, 987 RSParameters { 988 bs: 54, 989 dw: 24, 990 ns: 49, 991 }, 992 ], 993 }, 994 VersionInfo { 995 data_bytes: 3362, 996 apat: [6, 32, 58, 84, 110, 136, 162], 997 ecc: [ 998 RSParameters { 999 bs: 74, 1000 dw: 46, 1001 ns: 13, 1002 }, 1003 RSParameters { 1004 bs: 152, 1005 dw: 122, 1006 ns: 4, 1007 }, 1008 RSParameters { 1009 bs: 45, 1010 dw: 15, 1011 ns: 42, 1012 }, 1013 RSParameters { 1014 bs: 54, 1015 dw: 24, 1016 ns: 48, 1017 }, 1018 ], 1019 }, 1020 VersionInfo { 1021 data_bytes: 3532, 1022 apat: [6, 26, 54, 82, 110, 138, 166], 1023 ecc: [ 1024 RSParameters { 1025 bs: 75, 1026 dw: 47, 1027 ns: 40, 1028 }, 1029 RSParameters { 1030 bs: 147, 1031 dw: 117, 1032 ns: 20, 1033 }, 1034 RSParameters { 1035 bs: 45, 1036 dw: 15, 1037 ns: 10, 1038 }, 1039 RSParameters { 1040 bs: 54, 1041 dw: 24, 1042 ns: 43, 1043 }, 1044 ], 1045 }, 1046 VersionInfo { 1047 data_bytes: 3706, 1048 apat: [6, 30, 58, 86, 114, 142, 170], 1049 ecc: [ 1050 RSParameters { 1051 bs: 75, 1052 dw: 47, 1053 ns: 18, 1054 }, 1055 RSParameters { 1056 bs: 148, 1057 dw: 118, 1058 ns: 19, 1059 }, 1060 RSParameters { 1061 bs: 45, 1062 dw: 15, 1063 ns: 20, 1064 }, 1065 RSParameters { 1066 bs: 54, 1067 dw: 24, 1068 ns: 34, 1069 }, 1070 ], 1071 }, 1072 ]; 1073