lfrfid_worker.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /**
  2. * @file lfrfid_worker.h
  3. *
  4. * LFRFID worker
  5. */
  6. #pragma once
  7. #include <toolbox/protocols/protocol_dict.h>
  8. #include "protocols/lfrfid_protocols.h"
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. typedef enum {
  13. LFRFIDWorkerWriteOK,
  14. LFRFIDWorkerWriteProtocolCannotBeWritten,
  15. LFRFIDWorkerWriteFobCannotBeWritten,
  16. LFRFIDWorkerWriteTooLongToWrite,
  17. } LFRFIDWorkerWriteResult;
  18. typedef enum {
  19. LFRFIDWorkerReadTypeAuto,
  20. LFRFIDWorkerReadTypeASKOnly,
  21. LFRFIDWorkerReadTypePSKOnly,
  22. } LFRFIDWorkerReadType;
  23. typedef enum {
  24. LFRFIDWorkerReadSenseStart, // TODO: not implemented
  25. LFRFIDWorkerReadSenseEnd, // TODO: not implemented
  26. LFRFIDWorkerReadSenseCardStart,
  27. LFRFIDWorkerReadSenseCardEnd,
  28. LFRFIDWorkerReadStartASK,
  29. LFRFIDWorkerReadStartPSK,
  30. LFRFIDWorkerReadDone,
  31. } LFRFIDWorkerReadResult;
  32. typedef enum {
  33. LFRFIDWorkerReadRawFileError,
  34. LFRFIDWorkerReadRawOverrun,
  35. } LFRFIDWorkerReadRawResult;
  36. typedef enum {
  37. LFRFIDWorkerEmulateRawFileError,
  38. LFRFIDWorkerEmulateRawOverrun,
  39. } LFRFIDWorkerEmulateRawResult;
  40. typedef void (
  41. *LFRFIDWorkerReadCallback)(LFRFIDWorkerReadResult result, ProtocolId protocol, void* context);
  42. typedef void (*LFRFIDWorkerWriteCallback)(LFRFIDWorkerWriteResult result, void* context);
  43. typedef void (*LFRFIDWorkerReadRawCallback)(LFRFIDWorkerReadRawResult result, void* context);
  44. typedef void (*LFRFIDWorkerEmulateRawCallback)(LFRFIDWorkerEmulateRawResult result, void* context);
  45. typedef struct LFRFIDWorker LFRFIDWorker;
  46. /**
  47. * Allocate LF-RFID worker
  48. * @return LFRFIDWorker*
  49. */
  50. LFRFIDWorker* lfrfid_worker_alloc(ProtocolDict* dict);
  51. /**
  52. * Free LF-RFID worker
  53. * @param worker
  54. */
  55. void lfrfid_worker_free(LFRFIDWorker* worker);
  56. /**
  57. * Start LF-RFID worker thread
  58. * @param worker
  59. */
  60. void lfrfid_worker_start_thread(LFRFIDWorker* worker);
  61. /**
  62. * Stop LF-RFID worker thread
  63. * @param worker
  64. */
  65. void lfrfid_worker_stop_thread(LFRFIDWorker* worker);
  66. /**
  67. * @brief Start read mode
  68. *
  69. * @param worker
  70. * @param type
  71. * @param callback
  72. * @param context
  73. */
  74. void lfrfid_worker_read_start(
  75. LFRFIDWorker* worker,
  76. LFRFIDWorkerReadType type,
  77. LFRFIDWorkerReadCallback callback,
  78. void* context);
  79. /**
  80. * @brief Start write mode
  81. *
  82. * @param worker
  83. * @param protocol
  84. * @param callback
  85. * @param context
  86. */
  87. void lfrfid_worker_write_start(
  88. LFRFIDWorker* worker,
  89. LFRFIDProtocol protocol,
  90. LFRFIDWorkerWriteCallback callback,
  91. void* context);
  92. /**
  93. * Start emulate mode
  94. * @param worker
  95. */
  96. void lfrfid_worker_emulate_start(LFRFIDWorker* worker, LFRFIDProtocol protocol);
  97. /**
  98. * @brief Start raw read mode
  99. *
  100. * @param worker
  101. * @param filename
  102. * @param type
  103. * @param callback
  104. * @param context
  105. */
  106. void lfrfid_worker_read_raw_start(
  107. LFRFIDWorker* worker,
  108. const char* filename,
  109. LFRFIDWorkerReadType type,
  110. LFRFIDWorkerReadRawCallback callback,
  111. void* context);
  112. /**
  113. * Emulate raw read mode
  114. * @param worker
  115. * @param filename
  116. * @param callback
  117. * @param context
  118. */
  119. void lfrfid_worker_emulate_raw_start(
  120. LFRFIDWorker* worker,
  121. const char* filename,
  122. LFRFIDWorkerEmulateRawCallback callback,
  123. void* context);
  124. /**
  125. * Stop all modes
  126. * @param worker
  127. */
  128. void lfrfid_worker_stop(LFRFIDWorker* worker);
  129. #ifdef __cplusplus
  130. }
  131. #endif