rfid_timer_emulator.h 873 B

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include <furi_hal.h>
  3. #include "key_info.h"
  4. #include "encoder_generic.h"
  5. #include "encoder_emmarin.h"
  6. #include "encoder_hid_h10301.h"
  7. #include "encoder_indala_40134.h"
  8. #include "encoder_ioprox.h"
  9. #include "pulse_joiner.h"
  10. #include <map>
  11. class RfidTimerEmulator {
  12. public:
  13. RfidTimerEmulator();
  14. ~RfidTimerEmulator();
  15. void start(LfrfidKeyType type, const uint8_t* data, uint8_t data_size);
  16. void stop();
  17. private:
  18. EncoderGeneric* current_encoder = nullptr;
  19. std::map<LfrfidKeyType, EncoderGeneric*> encoders = {
  20. {LfrfidKeyType::KeyEM4100, new EncoderEM()},
  21. {LfrfidKeyType::KeyH10301, new EncoderHID_H10301()},
  22. {LfrfidKeyType::KeyI40134, new EncoderIndala_40134()},
  23. {LfrfidKeyType::KeyIoProxXSF, new EncoderIoProx()},
  24. };
  25. PulseJoiner pulse_joiner;
  26. static void timer_update_callback(void* ctx);
  27. };