#pragma once #include "pulse_sequencer.h" #include "../ibutton_key.h" #include #include #include class KeyEmulator { public: KeyEmulator(OneWireSlave* onewire_slave); ~KeyEmulator(); void start(iButtonKey* key); bool emulated(); void stop(); private: DS1990 dallas_key; OneWireSlave* onewire_slave; PulseSequencer pulser; uint32_t pulse_data[72]; std::atomic anything_emulated; void start_cyfral_emulate(iButtonKey* key); void start_metakom_emulate(iButtonKey* key); void start_dallas_emulate(iButtonKey* key); void set_pulse_data_cyfral(uint8_t index, const uint32_t* data); void set_pulse_data_metakom(uint8_t index, const uint32_t* data); void result_callback(bool success, void* ctx); };