gen4.c 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "gen4.h"
  2. #include "core/check.h"
  3. Gen4* gen4_alloc() {
  4. Gen4* instance = (Gen4*)malloc(sizeof(Gen4));
  5. return instance;
  6. }
  7. void gen4_free(Gen4* instance) {
  8. furi_check(instance != NULL);
  9. free(instance);
  10. }
  11. void gen4_reset(Gen4* instance) {
  12. furi_check(instance != NULL);
  13. memset(&instance->config, 0, sizeof(Gen4Config));
  14. memset(&instance->revision, 0, sizeof(Gen4Revision));
  15. }
  16. void gen4_copy(Gen4* dest, const Gen4* source) {
  17. furi_check(dest != NULL);
  18. furi_check(source != NULL);
  19. memcpy(dest, source, sizeof(Gen4));
  20. }
  21. char* gen4_get_shadow_mode_name(Gen4ShadowMode mode) {
  22. switch(mode) {
  23. case Gen4ShadowModePreWrite:
  24. return "Pre-Write";
  25. case Gen4ShadowModeRestore:
  26. return "Restore";
  27. case Gen4ShadowModeDisabled:
  28. return "Disabled";
  29. case Gen4ShadowModeHighSpeedDisabled:
  30. return "Disabled (High-speed)";
  31. case Gen4ShadowModeSplit:
  32. return "Split";
  33. default:
  34. return "Unknown";
  35. }
  36. }
  37. char* gen4_get_direct_write_mode_name(Gen4DirectWriteBlock0Mode mode) {
  38. switch(mode) {
  39. case Gen4DirectWriteBlock0ModeEnabled:
  40. return "Enabled";
  41. case Gen4DirectWriteBlock0ModeDisabled:
  42. return "Disabled";
  43. case Gen4DirectWriteBlock0ModeDefault:
  44. return "Default";
  45. default:
  46. return "Unknown";
  47. }
  48. }
  49. char* gen4_get_uid_len_num(Gen4UIDLength code) {
  50. switch(code) {
  51. case Gen4UIDLengthSingle:
  52. return "4";
  53. case Gen4UIDLengthDouble:
  54. return "7";
  55. case Gen4UIDLengthTriple:
  56. return "10";
  57. default:
  58. return "Unknown";
  59. }
  60. }
  61. char* gen4_get_configuration_name(const Gen4Config* config) {
  62. switch(config->data_parsed.protocol) {
  63. case Gen4ProtocolMfClassic: {
  64. switch(config->data_parsed.total_blocks) {
  65. case 255:
  66. return "MIFARE Classic 4K";
  67. case 63:
  68. return "MIFARE Classic 1K";
  69. case 19:
  70. return "MIFARE Classic Mini (0.3K)";
  71. default:
  72. return "Unknown";
  73. }
  74. } break;
  75. case Gen4ProtocolMfUltralight: {
  76. switch(config->data_parsed.total_blocks) {
  77. case 63:
  78. return "MIFARE Ultralight";
  79. case 127:
  80. return "NTAG 2XX";
  81. default:
  82. return "Unknown";
  83. }
  84. } break;
  85. default:
  86. return "Unknown";
  87. break;
  88. };
  89. }