nfc_supported_card.c 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "nfc_supported_card.h"
  2. #include "plantain_parser.h"
  3. #include "troika_parser.h"
  4. #include "plantain_4k_parser.h"
  5. #include "troika_4k_parser.h"
  6. #include "two_cities.h"
  7. #include "all_in_one.h"
  8. NfcSupportedCard nfc_supported_card[NfcSupportedCardTypeEnd] = {
  9. [NfcSupportedCardTypePlantain] =
  10. {
  11. .protocol = NfcDeviceProtocolMifareClassic,
  12. .verify = plantain_parser_verify,
  13. .read = plantain_parser_read,
  14. .parse = plantain_parser_parse,
  15. },
  16. [NfcSupportedCardTypeTroika] =
  17. {
  18. .protocol = NfcDeviceProtocolMifareClassic,
  19. .verify = troika_parser_verify,
  20. .read = troika_parser_read,
  21. .parse = troika_parser_parse,
  22. },
  23. [NfcSupportedCardTypePlantain4K] =
  24. {
  25. .protocol = NfcDeviceProtocolMifareClassic,
  26. .verify = plantain_4k_parser_verify,
  27. .read = plantain_4k_parser_read,
  28. .parse = plantain_4k_parser_parse,
  29. },
  30. [NfcSupportedCardTypeTroika4K] =
  31. {
  32. .protocol = NfcDeviceProtocolMifareClassic,
  33. .verify = troika_4k_parser_verify,
  34. .read = troika_4k_parser_read,
  35. .parse = troika_4k_parser_parse,
  36. },
  37. [NfcSupportedCardTypeTwoCities] =
  38. {
  39. .protocol = NfcDeviceProtocolMifareClassic,
  40. .verify = two_cities_parser_verify,
  41. .read = two_cities_parser_read,
  42. .parse = two_cities_parser_parse,
  43. },
  44. [NfcSupportedCardTypeAllInOne] =
  45. {
  46. .protocol = NfcDeviceProtocolMifareUl,
  47. .verify = all_in_one_parser_verify,
  48. .read = all_in_one_parser_read,
  49. .parse = all_in_one_parser_parse,
  50. },
  51. };
  52. bool nfc_supported_card_verify_and_parse(NfcDeviceData* dev_data) {
  53. furi_assert(dev_data);
  54. bool card_parsed = false;
  55. for(size_t i = 0; i < COUNT_OF(nfc_supported_card); i++) {
  56. if(nfc_supported_card[i].parse(dev_data)) {
  57. card_parsed = true;
  58. break;
  59. }
  60. }
  61. return card_parsed;
  62. }