LibDriver MFRC522  1.0.0
MFRC522 full-featured driver
driver_mfrc522_basic.c
Go to the documentation of this file.
1 
37 #include "driver_mfrc522_basic.h"
38 
39 static mfrc522_handle_t gs_handle;
49 {
50  if (mfrc522_irq_handler(&gs_handle) != 0)
51  {
52  return 1;
53  }
54  else
55  {
56  return 0;
57  }
58 }
59 
70 uint8_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 
723 uint8_t mfrc522_basic_deinit(void)
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 
762 uint8_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 
986 uint8_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 
1023 uint8_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
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
mfrc522 handle structure definition