#include "encoder-emmarine.h" #include "protocols/protocol-emmarin.h" #include void EncoderEM::init(const uint8_t* data, const uint8_t data_size) { ProtocolEMMarin em_marin; em_marin.encode(data, data_size, reinterpret_cast(&card_data), sizeof(uint64_t)); card_data_index = 0; } // data transmitted as manchester encoding // 0 - high2low // 1 - low2high void EncoderEM::get_next(bool* polarity, uint16_t* period, uint16_t* pulse) { *period = clocks_per_bit; *pulse = clocks_per_bit / 2; *polarity = (card_data >> (63 - card_data_index)) & 1; card_data_index++; if(card_data_index >= 64) { card_data_index = 0; } }