rfid_worker.h 887 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include "key_info.h"
  3. #include "rfid_reader.h"
  4. #include "rfid_writer.h"
  5. #include "rfid_timer_emulator.h"
  6. #include "rfid_key.h"
  7. #include "state_sequencer.h"
  8. class RfidWorker {
  9. public:
  10. RfidWorker();
  11. ~RfidWorker();
  12. void start_read();
  13. bool read();
  14. bool detect();
  15. bool any_read();
  16. void stop_read();
  17. enum class WriteResult : uint8_t {
  18. Ok,
  19. NotWritable,
  20. Nothing,
  21. };
  22. void start_write();
  23. WriteResult write();
  24. void stop_write();
  25. void start_emulate();
  26. void stop_emulate();
  27. RfidKey key;
  28. private:
  29. RfidWriter writer;
  30. RfidReader reader;
  31. RfidTimerEmulator emulator;
  32. WriteResult write_result;
  33. TickSequencer* write_sequence;
  34. void sq_write();
  35. void sq_write_start_validate();
  36. void sq_write_validate();
  37. uint16_t validate_counts;
  38. void sq_write_stop_validate();
  39. };