Removing duplicate code in t5577 passwd clear

This commit is contained in:
gid9798
2023-05-29 22:15:07 +03:00
parent 18a895310c
commit a4c1ad22ef
6 changed files with 42 additions and 147 deletions
+29 -2
View File
@@ -54,7 +54,12 @@ static void t5577_write_reset() {
t5577_write_bit(0);
}
static void t5577_write_block(uint8_t block, bool lock_bit, uint32_t data) {
static void t5577_write_block_pass(
uint8_t block,
bool lock_bit,
uint32_t data,
bool with_pass,
uint32_t password) {
furi_delay_us(T5577_TIMING_WAIT_TIME * 8);
// start gap
@@ -63,6 +68,13 @@ static void t5577_write_block(uint8_t block, bool lock_bit, uint32_t data) {
// opcode for page 0
t5577_write_opcode(T5577_OPCODE_PAGE_0);
// password
if(with_pass) {
for(uint8_t i = 0; i < 32; i++) {
t5577_write_bit((password >> (31 - i)) & 1);
}
}
// lock bit
t5577_write_bit(lock_bit);
@@ -82,11 +94,26 @@ static void t5577_write_block(uint8_t block, bool lock_bit, uint32_t data) {
t5577_write_reset();
}
static void t5577_write_block_simple(uint8_t block, bool lock_bit, uint32_t data) {
t5577_write_block_pass(block, lock_bit, data, false, 0);
}
void t5577_write(LFRFIDT5577* data) {
t5577_start();
FURI_CRITICAL_ENTER();
for(size_t i = 0; i < data->blocks_to_write; i++) {
t5577_write_block(i, false, data->block[i]);
t5577_write_block_simple(i, false, data->block[i]);
}
t5577_write_reset();
FURI_CRITICAL_EXIT();
t5577_stop();
}
void t5577_write_with_pass(LFRFIDT5577* data, uint32_t password) {
t5577_start();
FURI_CRITICAL_ENTER();
for(size_t i = 0; i < data->blocks_to_write; i++) {
t5577_write_block_pass(0, false, data->block[i], true, password);
}
t5577_write_reset();
FURI_CRITICAL_EXIT();
+2
View File
@@ -51,6 +51,8 @@ typedef struct {
*/
void t5577_write(LFRFIDT5577* data);
void t5577_write_with_pass(LFRFIDT5577* data, uint32_t password);
#ifdef __cplusplus
}
#endif