mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2025-12-13 13:09:49 +04:00
[FL-2754, FL-3945] EM4305 support (#4069)
* Initial EM4305 write support * Support for writing EM4100 data to EM4305 blank tags * F18 API version bump * Satisfy pvs * Lib: cleanup em4305 code * Mask size fix * Electra * Fix leftovers from a previous implementation * Viking * Gallagher * LFRFID: cleanup em4305 Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
@@ -407,6 +407,24 @@ bool protocol_electra_write_data(ProtocolElectra* protocol, void* data) {
|
||||
request->t5577.blocks_to_write = 5;
|
||||
result = true;
|
||||
}
|
||||
if(request->write_type == LFRFIDWriteTypeEM4305) {
|
||||
request->em4305.word[4] =
|
||||
(EM4x05_MODULATION_MANCHESTER | EM4x05_SET_BITRATE(64) | (8 << EM4x05_MAXBLOCK_SHIFT));
|
||||
uint64_t encoded_data_reversed = 0;
|
||||
uint64_t encoded_epilogue_reversed = 0;
|
||||
for(uint8_t i = 0; i < 64; i++) {
|
||||
encoded_data_reversed = (encoded_data_reversed << 1) |
|
||||
((protocol->encoded_base_data >> i) & 1);
|
||||
encoded_epilogue_reversed = (encoded_epilogue_reversed << 1) |
|
||||
((protocol->encoded_epilogue >> i) & 1);
|
||||
}
|
||||
request->em4305.word[5] = encoded_data_reversed & 0xFFFFFFFF;
|
||||
request->em4305.word[6] = encoded_data_reversed >> 32;
|
||||
request->em4305.word[7] = encoded_epilogue_reversed & 0xFFFFFFFF;
|
||||
request->em4305.word[8] = encoded_epilogue_reversed >> 32;
|
||||
request->em4305.mask = 0x01F0;
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user