LibDriver MFRC522
Loading...
Searching...
No Matches
driver_mfrc522_basic.c
Go to the documentation of this file.
1
36
38
39static mfrc522_handle_t gs_handle;
40
49{
50 if (mfrc522_irq_handler(&gs_handle) != 0)
51 {
52 return 1;
53 }
54 else
55 {
56 return 0;
57 }
58}
59
70uint8_t mfrc522_basic_init(mfrc522_interface_t interface, uint8_t addr, void (*callback)(uint16_t type))
71{
72 uint8_t res;
73
74 /* link interface function */
94 DRIVER_MFRC522_LINK_RECEIVE_CALLBACK(&gs_handle, callback);
95
96 /* set the interface */
97 res = mfrc522_set_interface(&gs_handle, interface);
98 if (res != 0)
99 {
100 mfrc522_interface_debug_print("mfrc522: set interface failed.\n");
101
102 return 1;
103 }
104
105 /* set the addr pin */
106 res = mfrc522_set_addr_pin(&gs_handle, addr);
107 if (res != 0)
108 {
109 mfrc522_interface_debug_print("mfrc522: set addr pin failed.\n");
110
111 return 1;
112 }
113
114 /* init failed */
115 res = mfrc522_init(&gs_handle);
116 if (res != 0)
117 {
118 mfrc522_interface_debug_print("mfrc522: init failed.\n");
119
120 return 1;
121 }
122
123 /* enable set_receiver analog */
125 if (res != 0)
126 {
127 mfrc522_interface_debug_print("mfrc522: set receiver analog failed.\n");
128 (void)mfrc522_deinit(&gs_handle);
129
130 return 1;
131 }
132
133 /* set the default interrupt1 pin invert */
135 if (res != 0)
136 {
137 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
138 (void)mfrc522_deinit(&gs_handle);
139
140 return 1;
141 }
142
143 /* set the default interrupt pin type */
145 if (res != 0)
146 {
147 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
148 (void)mfrc522_deinit(&gs_handle);
149
150 return 1;
151 }
152
153 /* set the default force iic high speed */
155 if (res != 0)
156 {
157 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
158 (void)mfrc522_deinit(&gs_handle);
159
160 return 1;
161 }
162
163 /* set the default clear temperature error */
165 if (res != 0)
166 {
167 mfrc522_interface_debug_print("mfrc522: set clear temperature error failed.\n");
168 (void)mfrc522_deinit(&gs_handle);
169
170 return 1;
171 }
172
173 /* set the default water level */
175 if (res != 0)
176 {
177 mfrc522_interface_debug_print("mfrc522: set water level failed.\n");
178 (void)mfrc522_deinit(&gs_handle);
179
180 return 1;
181 }
182
183 /* stop timer */
184 res = mfrc522_stop_timer(&gs_handle);
185 if (res != 0)
186 {
187 mfrc522_interface_debug_print("mfrc522: stop timer failed.\n");
188 (void)mfrc522_deinit(&gs_handle);
189
190 return 1;
191 }
192
193 /* set the default rx align */
195 if (res != 0)
196 {
197 mfrc522_interface_debug_print("mfrc522: set rx align failed.\n");
198 (void)mfrc522_deinit(&gs_handle);
199
200 return 1;
201 }
202
203 /* disable value clear after coll */
205 if (res != 0)
206 {
207 mfrc522_interface_debug_print("mfrc522: set value clear after coll failed.\n");
208 (void)mfrc522_deinit(&gs_handle);
209
210 return 1;
211 }
212
213 /* set the default tx crc generation */
215 if (res != 0)
216 {
217 mfrc522_interface_debug_print("mfrc522: set tx crc generation failed.\n");
218 (void)mfrc522_deinit(&gs_handle);
219
220 return 1;
221 }
222
223 /* set the default tx speed */
225 if (res != 0)
226 {
227 mfrc522_interface_debug_print("mfrc522: set tx speed failed.\n");
228 (void)mfrc522_deinit(&gs_handle);
229
230 return 1;
231 }
232
233 /* set the default modulation invert */
235 if (res != 0)
236 {
237 mfrc522_interface_debug_print("mfrc522: set modulation invert failed.\n");
238 (void)mfrc522_deinit(&gs_handle);
239
240 return 1;
241 }
242
243 /* set the default rx crc generation */
245 if (res != 0)
246 {
247 mfrc522_interface_debug_print("mfrc522: set rx crc generation failed.\n");
248 (void)mfrc522_deinit(&gs_handle);
249
250 return 1;
251 }
252
253 /* set the default rx speed */
255 if (res != 0)
256 {
257 mfrc522_interface_debug_print("mfrc522: set rx speed failed.\n");
258 (void)mfrc522_deinit(&gs_handle);
259
260 return 1;
261 }
262
263 /* set the default rx no error */
265 if (res != 0)
266 {
267 mfrc522_interface_debug_print("mfrc522: set rx no error failed.\n");
268 (void)mfrc522_deinit(&gs_handle);
269
270 return 1;
271 }
272
273 /* stop send */
274 res = mfrc522_stop_send(&gs_handle);
275 if (res != 0)
276 {
277 mfrc522_interface_debug_print("mfrc522: stop send failed.\n");
278 (void)mfrc522_deinit(&gs_handle);
279
280 return 1;
281 }
282
283 /* set the default rx multiple */
285 if (res != 0)
286 {
287 mfrc522_interface_debug_print("mfrc522: set rx multiple failed.\n");
288 (void)mfrc522_deinit(&gs_handle);
289
290 return 1;
291 }
292
293 /* set the default tx input */
295 if (res != 0)
296 {
297 mfrc522_interface_debug_print("mfrc522: set tx input failed.\n");
298 (void)mfrc522_deinit(&gs_handle);
299
300 return 1;
301 }
302
303 /* set the default mfout input */
305 if (res != 0)
306 {
307 mfrc522_interface_debug_print("mfrc522: set mfout input failed.\n");
308 (void)mfrc522_deinit(&gs_handle);
309
310 return 1;
311 }
312
313 /* set the default min level */
315 if (res != 0)
316 {
317 mfrc522_interface_debug_print("mfrc522: set min level failed.\n");
318 (void)mfrc522_deinit(&gs_handle);
319
320 return 1;
321 }
322
323 /* set the default collision level */
325 if (res != 0)
326 {
327 mfrc522_interface_debug_print("mfrc522: set collision level failed.\n");
328 (void)mfrc522_deinit(&gs_handle);
329
330 return 1;
331 }
332
333 /* set the default channel reception */
335 if (res != 0)
336 {
337 mfrc522_interface_debug_print("mfrc522: set channel reception failed.\n");
338 (void)mfrc522_deinit(&gs_handle);
339
340 return 1;
341 }
342
343 /* set the default fix iq */
345 if (res != 0)
346 {
347 mfrc522_interface_debug_print("mfrc522: set fix iq failed.\n");
348 (void)mfrc522_deinit(&gs_handle);
349
350 return 1;
351 }
352
353 /* set the default timer prescal even */
355 if (res != 0)
356 {
357 mfrc522_interface_debug_print("mfrc522: set timer prescal even failed.\n");
358 (void)mfrc522_deinit(&gs_handle);
359
360 return 1;
361 }
362
363 /* set the default timer constant reception */
365 if (res != 0)
366 {
367 mfrc522_interface_debug_print("mfrc522: set timer constant reception failed.\n");
368 (void)mfrc522_deinit(&gs_handle);
369
370 return 1;
371 }
372
373 /* set the default timer constant sync */
375 if (res != 0)
376 {
377 mfrc522_interface_debug_print("mfrc522: set timer constant sync failed.\n");
378 (void)mfrc522_deinit(&gs_handle);
379
380 return 1;
381 }
382
383 /* set the default tx wait */
385 if (res != 0)
386 {
387 mfrc522_interface_debug_print("mfrc522: set tx wait failed.\n");
388 (void)mfrc522_deinit(&gs_handle);
389
390 return 1;
391 }
392
393 /* set the default parity disable */
395 if (res != 0)
396 {
397 mfrc522_interface_debug_print("mfrc522: set parity disable failed.\n");
398 (void)mfrc522_deinit(&gs_handle);
399
400 return 1;
401 }
402
403 /* set the default serial speed */
405 if (res != 0)
406 {
407 mfrc522_interface_debug_print("mfrc522: set serial speed failed.\n");
408 (void)mfrc522_deinit(&gs_handle);
409
410 return 1;
411 }
412
413 /* set the default modulation width */
415 if (res != 0)
416 {
417 mfrc522_interface_debug_print("mfrc522: set modulation width failed.\n");
418 (void)mfrc522_deinit(&gs_handle);
419
420 return 1;
421 }
422
423 /* set the default cwgsn */
425 if (res != 0)
426 {
427 mfrc522_interface_debug_print("mfrc522: set cwgsn failed.\n");
428 (void)mfrc522_deinit(&gs_handle);
429
430 return 1;
431 }
432
433 /* set the default modgsn */
435 if (res != 0)
436 {
437 mfrc522_interface_debug_print("mfrc522: set modgsn failed.\n");
438 (void)mfrc522_deinit(&gs_handle);
439
440 return 1;
441 }
442
443 /* set the default cwgsp */
445 if (res != 0)
446 {
447 mfrc522_interface_debug_print("mfrc522: set cwgsp failed.\n");
448 (void)mfrc522_deinit(&gs_handle);
449
450 return 1;
451 }
452
453 /* set the default modgsp */
455 if (res != 0)
456 {
457 mfrc522_interface_debug_print("mfrc522: set modgsp failed.\n");
458 (void)mfrc522_deinit(&gs_handle);
459
460 return 1;
461 }
462
463 /* set the default interrupt1 tx */
465 if (res != 0)
466 {
467 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
468 (void)mfrc522_deinit(&gs_handle);
469
470 return 1;
471 }
472
473 /* set the default interrupt1 rx */
475 if (res != 0)
476 {
477 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
478 (void)mfrc522_deinit(&gs_handle);
479
480 return 1;
481 }
482
483 /* set the default interrupt1 idle */
485 if (res != 0)
486 {
487 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
488 (void)mfrc522_deinit(&gs_handle);
489
490 return 1;
491 }
492
493 /* set the default interrupt1 hi alert */
495 if (res != 0)
496 {
497 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
498 (void)mfrc522_deinit(&gs_handle);
499
500 return 1;
501 }
502
503 /* set the default interrupt1 lo alert */
505 if (res != 0)
506 {
507 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
508 (void)mfrc522_deinit(&gs_handle);
509
510 return 1;
511 }
512
513 /* set the default interrupt1 err */
515 if (res != 0)
516 {
517 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
518 (void)mfrc522_deinit(&gs_handle);
519
520 return 1;
521 }
522
523 /* set the default interrupt1 timer */
525 if (res != 0)
526 {
527 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
528 (void)mfrc522_deinit(&gs_handle);
529
530 return 1;
531 }
532
533 /* set the default interrupt2 mfin act */
535 if (res != 0)
536 {
537 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
538 (void)mfrc522_deinit(&gs_handle);
539
540 return 1;
541 }
542
543 /* set the default interrupt2 crc */
545 if (res != 0)
546 {
547 mfrc522_interface_debug_print("mfrc522: set interrupt1 failed.\n");
548 (void)mfrc522_deinit(&gs_handle);
549
550 return 1;
551 }
552
553 /* set the default crc msb first */
555 if (res != 0)
556 {
557 mfrc522_interface_debug_print("mfrc522: set crc msb first failed.\n");
558 (void)mfrc522_deinit(&gs_handle);
559
560 return 1;
561 }
562
563 /* set the default tx wait rf */
565 if (res != 0)
566 {
567 mfrc522_interface_debug_print("mfrc522: set tx wait rf failed.\n");
568 (void)mfrc522_deinit(&gs_handle);
569
570 return 1;
571 }
572
573 /* set the default mfin polarity */
575 if (res != 0)
576 {
577 mfrc522_interface_debug_print("mfrc522: set tx wait rf failed.\n");
578 (void)mfrc522_deinit(&gs_handle);
579
580 return 1;
581 }
582
583 /* set the default crc preset */
585 if (res != 0)
586 {
587 mfrc522_interface_debug_print("mfrc522: set crc preset failed.\n");
588 (void)mfrc522_deinit(&gs_handle);
589
590 return 1;
591 }
592
593 /* set the default force 100 ask */
595 if (res != 0)
596 {
597 mfrc522_interface_debug_print("mfrc522: set force 100 ask failed.\n");
598 (void)mfrc522_deinit(&gs_handle);
599
600 return 1;
601 }
602
603 /* set the default contactless uart input */
605 if (res != 0)
606 {
607 mfrc522_interface_debug_print("mfrc522: set contactless uart input failed.\n");
608 (void)mfrc522_deinit(&gs_handle);
609
610 return 1;
611 }
612
613 /* set the default rx wait */
615 if (res != 0)
616 {
617 mfrc522_interface_debug_print("mfrc522: set rx wait failed.\n");
618 (void)mfrc522_deinit(&gs_handle);
619
620 return 1;
621 }
622
623 /* set the default rx gain */
625 if (res != 0)
626 {
627 mfrc522_interface_debug_print("mfrc522: set rx gain failed.\n");
628 (void)mfrc522_deinit(&gs_handle);
629
630 return 1;
631 }
632
633 /* set the default timer auto */
635 if (res != 0)
636 {
637 mfrc522_interface_debug_print("mfrc522: set auto failed.\n");
638 (void)mfrc522_deinit(&gs_handle);
639
640 return 1;
641 }
642
643 /* set the default timer gated mode */
645 if (res != 0)
646 {
647 mfrc522_interface_debug_print("mfrc522: set timer gated mode failed.\n");
648 (void)mfrc522_deinit(&gs_handle);
649
650 return 1;
651 }
652
653 /* set the default timer auto restart */
655 if (res != 0)
656 {
657 mfrc522_interface_debug_print("mfrc522: set timer auto restart failed.\n");
658 (void)mfrc522_deinit(&gs_handle);
659
660 return 1;
661 }
662
663 /* set the default timer prescaler */
665 if (res != 0)
666 {
667 mfrc522_interface_debug_print("mfrc522: set timer prescaler failed.\n");
668 (void)mfrc522_deinit(&gs_handle);
669
670 return 1;
671 }
672
673 /* set the default timer reload */
675 if (res != 0)
676 {
677 mfrc522_interface_debug_print("mfrc522: set timer reload failed.\n");
678 (void)mfrc522_deinit(&gs_handle);
679
680 return 1;
681 }
682
683 /* antenna on */
685 if (res != 0)
686 {
687 mfrc522_interface_debug_print("mfrc522: set antenna driver failed.\n");
688 (void)mfrc522_deinit(&gs_handle);
689
690 return 1;
691 }
692
693 /* antenna on */
695 if (res != 0)
696 {
697 mfrc522_interface_debug_print("mfrc522: set antenna driver failed.\n");
698 (void)mfrc522_deinit(&gs_handle);
699
700 return 1;
701 }
702
703 /* disable cypto1 on */
705 if (res != 0)
706 {
707 mfrc522_interface_debug_print("mfrc522: set mifare crypto1 on failed.\n");
708 (void)mfrc522_deinit(&gs_handle);
709
710 return 1;
711 }
712
713 return 0;
714}
715
724{
725 uint8_t res;
726
727 /* antenna off */
729 if (res != 0)
730 {
731 return 1;
732 }
733
734 /* antenna off */
736 if (res != 0)
737 {
738 return 1;
739 }
740
741 /* deinit */
742 res = mfrc522_deinit(&gs_handle);
743 if (res != 0)
744 {
745 return 1;
746 }
747
748 return 0;
749}
750
762uint8_t mfrc522_basic_transceiver(uint8_t *in_buf, uint8_t in_len, uint8_t *out_buf, uint8_t *out_len)
763{
764 uint8_t res;
765 uint8_t err;
766
767 /* request */
768 if ((in_len == 1) && (in_buf[0] == 0x26))
769 {
770 /* disable cypto1 on */
772 if (res != 0)
773 {
774 return 1;
775 }
776
777 /* set tx last bits 7 */
778 res = mfrc522_set_tx_last_bits(&gs_handle, 7);
779 if (res != 0)
780 {
781 return 1;
782 }
783
784 /* transceiver */
785 res = mfrc522_transceiver(&gs_handle, MFRC522_COMMAND_TRANSCEIVE, in_buf, in_len, out_buf, out_len, &err, 1000);
786 if (res != 0)
787 {
788 return 1;
789 }
790
791 return 0;
792 }
793 /* wake up */
794 else if ((in_len == 1) && (in_buf[0] == 0x52))
795 {
796 /* disable cypto1 on */
798 if (res != 0)
799 {
800 return 1;
801 }
802
803 /* set tx last bits 7 */
804 res = mfrc522_set_tx_last_bits(&gs_handle, 7);
805 if (res != 0)
806 {
807 return 1;
808 }
809
810 /* transceiver */
811 res = mfrc522_transceiver(&gs_handle, MFRC522_COMMAND_TRANSCEIVE, in_buf, in_len, out_buf, out_len, &err, 1000);
812 if (res != 0)
813 {
814 return 1;
815 }
816
817 return 0;
818 }
819 /* anti collision cl1 */
820 else if ((in_len == 2) && (in_buf[0] == 0x93) && (in_buf[1] == 0x20))
821 {
822 /* disable cypto1 on */
824 if (res != 0)
825 {
826 return 1;
827 }
828
829 /* set tx last bits 0 */
830 res = mfrc522_set_tx_last_bits(&gs_handle, 0);
831 if (res != 0)
832 {
833 return 1;
834 }
835
836 /* enable value clear after coll */
838 if (res != 0)
839 {
840 return 1;
841 }
842
843 /* transceiver */
844 res = mfrc522_transceiver(&gs_handle, MFRC522_COMMAND_TRANSCEIVE, in_buf, in_len, out_buf, out_len, &err, 1000);
845 if (res != 0)
846 {
847 return 1;
848 }
849
850 /* disable value clear after coll */
852 if (res != 0)
853 {
854 return 1;
855 }
856
857 return 0;
858 }
859 /* anti collision cl2 */
860 else if ((in_len == 2) && (in_buf[0] == 0x95) && (in_buf[1] == 0x20))
861 {
862 /* disable cypto1 on */
864 if (res != 0)
865 {
866 return 1;
867 }
868
869 /* set tx last bits 0 */
870 res = mfrc522_set_tx_last_bits(&gs_handle, 0);
871 if (res != 0)
872 {
873 return 1;
874 }
875
876 /* enable value clear after coll */
878 if (res != 0)
879 {
880 return 1;
881 }
882
883 /* transceiver */
884 res = mfrc522_transceiver(&gs_handle, MFRC522_COMMAND_TRANSCEIVE, in_buf, in_len, out_buf, out_len, &err, 1000);
885 if (res != 0)
886 {
887 return 1;
888 }
889
890 /* disable value clear after coll */
892 if (res != 0)
893 {
894 return 1;
895 }
896
897 return 0;
898 }
899 /* select cl1 */
900 else if ((in_len == 9) && (in_buf[0] == 0x93) && (in_buf[1] == 0x70))
901 {
902 /* disable cypto1 on */
904 if (res != 0)
905 {
906 return 1;
907 }
908
909 /* transceiver */
910 res = mfrc522_transceiver(&gs_handle, MFRC522_COMMAND_TRANSCEIVE, in_buf, in_len, out_buf, out_len, &err, 1000);
911 if (res != 0)
912 {
913 return 1;
914 }
915
916 return 0;
917 }
918 /* select cl2 */
919 else if ((in_len == 9) && (in_buf[0] == 0x95) && (in_buf[1] == 0x70))
920 {
921 /* disable cypto1 on */
923 if (res != 0)
924 {
925 return 1;
926 }
927
928 /* transceiver */
929 res = mfrc522_transceiver(&gs_handle, MFRC522_COMMAND_TRANSCEIVE, in_buf, in_len, out_buf, out_len, &err, 1000);
930 if (res != 0)
931 {
932 return 1;
933 }
934
935 return 0;
936 }
937 /* authentication key a or key b */
938 else if ((in_len == 12) && ((in_buf[0] == 0x60) || (in_buf[0] == 0x61)))
939 {
940 uint8_t status;
941
942 /* transceiver */
943 res = mfrc522_transceiver(&gs_handle, MFRC522_COMMAND_MF_AUTHENT, in_buf, in_len, out_buf, out_len, &err, 1000);
944 if (res != 0)
945 {
946 return 1;
947 }
948
949 /* get the mfcrypto1 on bit */
950 res = mfrc522_get_status2(&gs_handle, &status);
951 if (res != 0)
952 {
953 return 1;
954 }
955
956 /* check the result */
957 if ((status & 0x08) == 0)
958 {
959 return 1;
960 }
961
962 return 0;
963 }
964 /* the others */
965 else
966 {
967 /* transceiver */
968 res = mfrc522_transceiver(&gs_handle, MFRC522_COMMAND_TRANSCEIVE, in_buf, in_len, out_buf, out_len, &err, 1000);
969 if (res != 0)
970 {
971 return 1;
972 }
973
974 return 0;
975 }
976}
977
986uint8_t mfrc522_basic_generate_random(uint8_t buf[25])
987{
988 uint8_t res;
989 uint8_t in_buf;
990 uint8_t out_buf;
991 uint8_t out_len;
992 uint8_t err;
993
994 /* generate the random */
995 out_len = 0;
996 res = mfrc522_transceiver(&gs_handle, MFRC522_COMMAND_RANDOM_ID, &in_buf, 0, &out_buf, &out_len, &err, 1000);
997 if (res != 0)
998 {
999 return 1;
1000 }
1001
1002 /* copy from mem to fifo buffer */
1003 out_len = 25;
1004 res = mfrc522_transceiver(&gs_handle, MFRC522_COMMAND_MEM, &in_buf, 0, buf, &out_len, &err, 1000);
1005 if (res != 0)
1006 {
1007 return 1;
1008 }
1009
1010 return 0;
1011}
1012
1023uint8_t mfrc522_basic_calculate_crc(uint8_t *buf, uint8_t len, uint16_t *crc)
1024{
1025 uint8_t res;
1026 uint8_t tmp;
1027 uint8_t tmp_len;
1028 uint8_t err;
1029
1030 /* calculate the crc */
1031 tmp_len = 1;
1032 res = mfrc522_transceiver(&gs_handle, MFRC522_COMMAND_CALC_CRC, buf, len, &tmp, &tmp_len, &err, 1000);
1033 if (res != 0)
1034 {
1035 return 1;
1036 }
1037
1038 /* get the crc */
1039 res = mfrc522_get_crc(&gs_handle, crc);
1040 if (res != 0)
1041 {
1042 return 1;
1043 }
1044
1045 return 0;
1046}
driver mfrc522 basic header file
mfrc522_interface_t
mfrc522 interface enumeration definition
uint8_t mfrc522_set_interrupt2(mfrc522_handle_t *handle, mfrc522_interrupt2_t type, mfrc522_bool_t enable)
enable or disable the interrupt2
uint8_t mfrc522_set_fix_iq(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable fix iq
uint8_t mfrc522_init(mfrc522_handle_t *handle)
initialize the chip
uint8_t mfrc522_set_mifare_crypto1_on(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable mifare crypto1 on
uint8_t mfrc522_set_rx_multiple(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable rx multiple
uint8_t mfrc522_set_timer_constant_sync(mfrc522_handle_t *handle, uint8_t t)
set the timer constant sync
uint8_t mfrc522_set_interface(mfrc522_handle_t *handle, mfrc522_interface_t interface)
set the chip interface
uint8_t mfrc522_set_interrupt_pin_type(mfrc522_handle_t *handle, mfrc522_interrupt_pin_type_t type)
set the interrupt pin type
uint8_t mfrc522_set_force_iic_high_speed(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable force iic high speed
uint8_t mfrc522_set_channel_reception(mfrc522_handle_t *handle, mfrc522_channel_reception_t reception)
set the channel reception
uint8_t mfrc522_set_rx_wait(mfrc522_handle_t *handle, uint8_t t)
set the rx wait
uint8_t mfrc522_irq_handler(mfrc522_handle_t *handle)
irq handler
uint8_t mfrc522_set_force_100_ask(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable force 100 ask
uint8_t mfrc522_get_status2(mfrc522_handle_t *handle, uint8_t *status)
get the status2
uint8_t mfrc522_set_interrupt1(mfrc522_handle_t *handle, mfrc522_interrupt1_t type, mfrc522_bool_t enable)
enable or disable the interrupt1
uint8_t mfrc522_set_rx_speed(mfrc522_handle_t *handle, mfrc522_speed_t speed)
set the rx speed
uint8_t mfrc522_set_parity_disable(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable parity disable
uint8_t mfrc522_set_crc_preset(mfrc522_handle_t *handle, mfrc522_crc_preset_t preset)
set the crc preset
uint8_t mfrc522_get_crc(mfrc522_handle_t *handle, uint16_t *crc)
get the crc
uint8_t mfrc522_set_water_level(mfrc522_handle_t *handle, uint8_t level)
set the water level
uint8_t mfrc522_set_tx_last_bits(mfrc522_handle_t *handle, uint8_t bits)
set the tx last bits
uint8_t mfrc522_set_interrupt1_pin_invert(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable interrupt1 pin invert
uint8_t mfrc522_transceiver(mfrc522_handle_t *handle, mfrc522_command_t command, uint8_t *in_buf, uint8_t in_len, uint8_t *out_buf, uint8_t *out_len, uint8_t *err, uint32_t ms)
mfrc522 transceiver
uint8_t mfrc522_set_rx_align(mfrc522_handle_t *handle, mfrc522_rx_align_t align)
set the rx align
uint8_t mfrc522_set_antenna_driver(mfrc522_handle_t *handle, mfrc522_antenna_driver_t driver, mfrc522_bool_t enable)
enable or disable the antenna driver
uint8_t mfrc522_set_modgsp(mfrc522_handle_t *handle, uint8_t n)
set the modgsp
uint8_t mfrc522_set_mfin_polarity(mfrc522_handle_t *handle, mfrc522_mfin_polarity_t polarity)
set the mfin polarity
uint8_t mfrc522_set_timer_auto_restart(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable timer auto restart
uint8_t mfrc522_set_clear_temperature_error(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable clear temperature error
uint8_t mfrc522_set_modulation_invert(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable the modulation invert
uint8_t mfrc522_set_modulation_width(mfrc522_handle_t *handle, uint8_t width)
set the modulation width
uint8_t mfrc522_set_value_clear_after_coll(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable value clear after coll
uint8_t mfrc522_set_tx_input(mfrc522_handle_t *handle, mfrc522_tx_input_t input)
set the tx input
uint8_t mfrc522_set_rx_crc_generation(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable the rx crc generation
uint8_t mfrc522_set_tx_wait(mfrc522_handle_t *handle, uint8_t t)
set the tx wait
uint8_t mfrc522_stop_timer(mfrc522_handle_t *handle)
stop the timer
uint8_t mfrc522_set_cwgsn(mfrc522_handle_t *handle, uint8_t n)
set the cwgsn
uint8_t mfrc522_set_cwgsp(mfrc522_handle_t *handle, uint8_t n)
set the cwgsp
uint8_t mfrc522_set_timer_gated_mode(mfrc522_handle_t *handle, mfrc522_timer_gated_mode_t mode)
set the timer gated mode
uint8_t mfrc522_set_tx_speed(mfrc522_handle_t *handle, mfrc522_speed_t speed)
set the tx speed
uint8_t mfrc522_set_addr_pin(mfrc522_handle_t *handle, uint8_t addr_pin)
set the iic address pin
uint8_t mfrc522_set_tx_crc_generation(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable tx crc generation
uint8_t mfrc522_set_rx_gain(mfrc522_handle_t *handle, mfrc522_rx_gain_t gain)
set the rx gain
uint8_t mfrc522_set_timer_auto(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable timer auto
uint8_t mfrc522_set_timer_reload(mfrc522_handle_t *handle, uint16_t reload)
set the timer reload
struct mfrc522_handle_s mfrc522_handle_t
mfrc522 handle structure definition
uint8_t mfrc522_set_tx_wait_rf(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable the rf tx wait
uint8_t mfrc522_set_serial_speed(mfrc522_handle_t *handle, uint8_t t0, uint8_t t1)
set the serial speed
uint8_t mfrc522_set_receiver_analog(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable the analog part of the receiver
uint8_t mfrc522_set_crc_msb_first(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable the crc msb first
uint8_t mfrc522_set_rx_no_error(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable rx no error
uint8_t mfrc522_set_collision_level(mfrc522_handle_t *handle, uint8_t level)
set the collision level
uint8_t mfrc522_set_min_level(mfrc522_handle_t *handle, uint8_t level)
set the min level
uint8_t mfrc522_deinit(mfrc522_handle_t *handle)
close the chip
uint8_t mfrc522_set_modgsn(mfrc522_handle_t *handle, uint8_t n)
set the modgsn
uint8_t mfrc522_set_timer_prescaler(mfrc522_handle_t *handle, uint16_t t)
set the timer prescaler
uint8_t mfrc522_set_timer_constant_reception(mfrc522_handle_t *handle, uint8_t t)
set the timer constant reception
uint8_t mfrc522_stop_send(mfrc522_handle_t *handle)
stop the transmission of data
uint8_t mfrc522_set_contactless_uart_input(mfrc522_handle_t *handle, mfrc522_contactless_uart_input_t input)
set the contactless uart input
uint8_t mfrc522_set_timer_prescal_even(mfrc522_handle_t *handle, mfrc522_bool_t enable)
enable or disable timer prescal even
uint8_t mfrc522_set_mfout_input(mfrc522_handle_t *handle, mfrc522_mfout_input_t input)
set the mfout input
@ MFRC522_COMMAND_MF_AUTHENT
@ MFRC522_COMMAND_TRANSCEIVE
@ MFRC522_COMMAND_RANDOM_ID
@ MFRC522_COMMAND_MEM
@ MFRC522_COMMAND_CALC_CRC
@ MFRC522_BOOL_TRUE
@ MFRC522_BOOL_FALSE
@ MFRC522_ANTENNA_DRIVER_TX2_RF
@ MFRC522_ANTENNA_DRIVER_TX1_RF
@ MFRC522_INTERRUPT2_CRC
@ MFRC522_INTERRUPT2_MFIN_ACT
@ MFRC522_INTERRUPT1_LO_ALERT
@ MFRC522_INTERRUPT1_IDLE
@ MFRC522_INTERRUPT1_TX
@ MFRC522_INTERRUPT1_TIMER
@ MFRC522_INTERRUPT1_HI_ALERT
@ MFRC522_INTERRUPT1_RX
@ MFRC522_INTERRUPT1_ERR
#define MFRC522_BASIC_DEFAULT_INTERRUPT1_IDLE
#define MFRC522_BASIC_DEFAULT_RX_SPEED
uint8_t mfrc522_interrupt_irq_handler(void)
interrupt irq
#define MFRC522_BASIC_DEFAULT_TX_CRC_GENERATION
#define MFRC522_BASIC_DEFAULT_FIX_IQ
#define MFRC522_BASIC_DEFAULT_TIMER_PRESCALER
#define MFRC522_BASIC_DEFAULT_COLLISION_LEVEL
#define MFRC522_BASIC_DEFAULT_RX_MULTIPLE
#define MFRC522_BASIC_DEFAULT_MODULATION_WIDTH
#define MFRC522_BASIC_DEFAULT_INTERRUPT1_TIMER
#define MFRC522_BASIC_DEFAULT_INTERRUPT1_RX
#define MFRC522_BASIC_DEFAULT_TIMER_RELOAD
uint8_t mfrc522_basic_deinit(void)
basic example deinit
#define MFRC522_BASIC_DEFAULT_RX_ALIGN
#define MFRC522_BASIC_DEFAULT_INTERRUPT1_ERR
#define MFRC522_BASIC_DEFAULT_PARITY_DISABLE
#define MFRC522_BASIC_DEFAULT_CRC_MSB_FIRST
#define MFRC522_BASIC_DEFAULT_MODGSN
#define MFRC522_BASIC_DEFAULT_CWGSP
#define MFRC522_BASIC_DEFAULT_INTERRUPT1_PIN_INVERT
mfrc522 basic example default definition
#define MFRC522_BASIC_DEFAULT_TIMER_AUTO_RESTART
uint8_t mfrc522_basic_calculate_crc(uint8_t *buf, uint8_t len, uint16_t *crc)
basic example calculate the crc
#define MFRC522_BASIC_DEFAULT_TIMER_PRESCAL_EVEN
#define MFRC522_BASIC_DEFAULT_RX_GAIN
#define MFRC522_BASIC_DEFAULT_CWGSN
#define MFRC522_BASIC_DEFAULT_RX_NO_ERROR
#define MFRC522_BASIC_DEFAULT_WATER_LEVEL
uint8_t mfrc522_basic_init(mfrc522_interface_t interface, uint8_t addr, void(*callback)(uint16_t type))
basic example init
#define MFRC522_BASIC_DEFAULT_INTERRUPT_PIN_TYPE
#define MFRC522_BASIC_DEFAULT_SERIAL_SPEED_T0
#define MFRC522_BASIC_DEFAULT_MINI_LEVEL
#define MFRC522_BASIC_DEFAULT_MFIN_POLARITY
#define MFRC522_BASIC_DEFAULT_TIMER_GATED_MODE
#define MFRC522_BASIC_DEFAULT_SERIAL_SPEED_T1
#define MFRC522_BASIC_DEFAULT_FORCE_IIC_HIGH_SPEED
#define MFRC522_BASIC_DEFAULT_TIMER_CONSTANT_SYNC
#define MFRC522_BASIC_DEFAULT_RX_WAIT
#define MFRC522_BASIC_DEFAULT_MODULATION_INVERT
#define MFRC522_BASIC_DEFAULT_CRC_PRESET
#define MFRC522_BASIC_DEFAULT_CONTACTLESS_UART_INPUT
#define MFRC522_BASIC_DEFAULT_TX_WAIT_RF
#define MFRC522_BASIC_DEFAULT_MODGSP
#define MFRC522_BASIC_DEFAULT_TIMER_AUTO
#define MFRC522_BASIC_DEFAULT_TX_SPEED
#define MFRC522_BASIC_DEFAULT_MFOUT_INPUT
#define MFRC522_BASIC_DEFAULT_INTERRUPT1_HI_ALERT
uint8_t mfrc522_basic_transceiver(uint8_t *in_buf, uint8_t in_len, uint8_t *out_buf, uint8_t *out_len)
basic example transceiver
#define MFRC522_BASIC_DEFAULT_CHANNEL_RECEPTION
#define MFRC522_BASIC_DEFAULT_INTERRUPT2_CRC
#define MFRC522_BASIC_DEFAULT_TX_INPUT
#define MFRC522_BASIC_DEFAULT_FORCE_100_ASK
#define MFRC522_BASIC_DEFAULT_TX_WAIT
#define MFRC522_BASIC_DEFAULT_INTERRUPT1_LO_ALERT
#define MFRC522_BASIC_DEFAULT_INTERRUPT2_MFIN_ACT
#define MFRC522_BASIC_DEFAULT_CLEAR_TEMPERATURE_ERROR
uint8_t mfrc522_basic_generate_random(uint8_t buf[25])
basic example generate the random
#define MFRC522_BASIC_DEFAULT_RX_CRC_GENERATION
#define MFRC522_BASIC_DEFAULT_TIMER_CONSTANT_RECEPTION
#define MFRC522_BASIC_DEFAULT_INTERRUPT1_TX
uint8_t mfrc522_interface_uart_deinit(void)
interface uart deinit
uint8_t mfrc522_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
uint8_t mfrc522_interface_reset_gpio_deinit(void)
interface reset gpio deinit
uint8_t mfrc522_interface_spi_read(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus read
uint8_t mfrc522_interface_spi_write(uint8_t reg, uint8_t *buf, uint16_t len)
interface spi bus write
void mfrc522_interface_delay_ms(uint32_t ms)
interface delay ms
uint16_t mfrc522_interface_uart_read(uint8_t *buf, uint16_t len)
interface uart read
uint8_t mfrc522_interface_reset_gpio_init(void)
interface reset gpio init
uint8_t mfrc522_interface_spi_deinit(void)
interface spi bus deinit
uint8_t mfrc522_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
uint8_t mfrc522_interface_spi_init(void)
interface spi bus init
uint8_t mfrc522_interface_uart_flush(void)
interface uart flush
uint8_t mfrc522_interface_reset_gpio_write(uint8_t value)
interface reset gpio write
uint8_t mfrc522_interface_iic_deinit(void)
interface iic bus deinit
uint8_t mfrc522_interface_iic_init(void)
interface iic bus init
void mfrc522_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t mfrc522_interface_uart_init(void)
interface uart init
uint8_t mfrc522_interface_uart_write(uint8_t *buf, uint16_t len)
interface uart write