Skip to content

Commit

Permalink
RFID: fix read info screen (#1723)
Browse files Browse the repository at this point in the history
* RFID: fix read info screen
* Fix line break for long data string
* Protocol data redecoding before write

Co-authored-by: SG <who.just.the.doctor@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
  • Loading branch information
3 people committed Sep 19, 2022
1 parent d80329b commit fb476c2
Show file tree
Hide file tree
Showing 15 changed files with 65 additions and 6 deletions.
11 changes: 5 additions & 6 deletions applications/main/lfrfid/scenes/lfrfid_scene_read_success.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,13 @@ void lfrfid_scene_read_success_on_enter(void* context) {
uint8_t* data = (uint8_t*)malloc(size);
protocol_dict_get_data(app->dict, app->protocol_id, data, size);
for(uint8_t i = 0; i < size; i++) {
if(i != 0) {
string_cat_printf(tmp_string, " ");
}

if(i >= 9) {
string_cat_printf(tmp_string, "...");
string_cat_printf(tmp_string, "..");
break;
} else {
if(i != 0) {
string_cat_printf(tmp_string, " ");
}
string_cat_printf(tmp_string, "%02X", data[i]);
}
}
Expand All @@ -43,7 +42,7 @@ void lfrfid_scene_read_success_on_enter(void* context) {
string_cat_printf(tmp_string, "\r\n%s", string_get_cstr(render_data));
string_clear(render_data);

widget_add_string_element(
widget_add_string_multiline_element(
widget, 0, 16, AlignLeft, AlignTop, FontSecondary, string_get_cstr(tmp_string));

notification_message_block(app->notifications, &sequence_set_green_255);
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_awid.c
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,10 @@ bool protocol_awid_write_data(ProtocolAwid* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_awid_encode(protocol->data, (uint8_t*)protocol->encoded_data);
protocol_awid_decode(protocol->encoded_data, protocol->data);

protocol_awid_encode(protocol->data, (uint8_t*)protocol->encoded_data);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
8 changes: 8 additions & 0 deletions lib/lfrfid/protocols/protocol_em4100.c
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,14 @@ bool protocol_em4100_write_data(ProtocolEM4100* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_em4100_encoder_start(protocol);
em4100_decode(
(uint8_t*)&protocol->encoded_data,
sizeof(EM4100DecodedData),
protocol->data,
EM4100_DECODED_DATA_SIZE);

protocol_em4100_encoder_start(protocol);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_fdx_a.c
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,10 @@ bool protocol_fdx_a_write_data(ProtocolFDXA* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_fdx_a_encoder_start(protocol);
protocol_fdx_a_decode(protocol->encoded_data, protocol->data);

protocol_fdx_a_encoder_start(protocol);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_fdx_b.c
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,10 @@ bool protocol_fdx_b_write_data(ProtocolFDXB* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_fdx_b_encoder_start(protocol);
protocol_fdx_b_decode(protocol);

protocol_fdx_b_encoder_start(protocol);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_gallagher.c
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,10 @@ bool protocol_gallagher_write_data(ProtocolGallagher* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_gallagher_encoder_start(protocol);
protocol_gallagher_decode(protocol);

protocol_gallagher_encoder_start(protocol);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_h10301.c
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,10 @@ bool protocol_h10301_write_data(ProtocolH10301* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_h10301_encoder_start(protocol);
protocol_h10301_decode(protocol->encoded_data, protocol->data);

protocol_h10301_encoder_start(protocol);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_hid_ex_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,10 @@ bool protocol_hid_ex_generic_write_data(ProtocolHIDEx* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_hid_ex_generic_encoder_start(protocol);
protocol_hid_ex_generic_decode(protocol->encoded_data, protocol->data);

protocol_hid_ex_generic_encoder_start(protocol);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_hid_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,10 @@ bool protocol_hid_generic_write_data(ProtocolHID* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_hid_generic_encoder_start(protocol);
protocol_hid_generic_decode(protocol->encoded_data, protocol->data);

protocol_hid_generic_encoder_start(protocol);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_io_prox_xsf.c
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,10 @@ bool protocol_io_prox_xsf_write_data(ProtocolIOProxXSF* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_io_prox_xsf_encode(protocol->data, protocol->encoded_data);
protocol_io_prox_xsf_decode(protocol->encoded_data, protocol->data);

protocol_io_prox_xsf_encode(protocol->data, protocol->encoded_data);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_jablotron.c
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,10 @@ bool protocol_jablotron_write_data(ProtocolJablotron* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_jablotron_encoder_start(protocol);
protocol_jablotron_decode(protocol);

protocol_jablotron_encoder_start(protocol);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_pac_stanley.c
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,10 @@ bool protocol_pac_stanley_write_data(ProtocolPACStanley* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_pac_stanley_encoder_start(protocol);
protocol_pac_stanley_decode(protocol);

protocol_pac_stanley_encoder_start(protocol);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_paradox.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,10 @@ bool protocol_paradox_write_data(ProtocolParadox* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_paradox_encode(protocol->data, (uint8_t*)protocol->encoded_data);
protocol_paradox_decode(protocol->encoded_data, protocol->data);

protocol_paradox_encode(protocol->data, (uint8_t*)protocol->encoded_data);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_pyramid.c
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,10 @@ bool protocol_pyramid_write_data(ProtocolPyramid* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_pyramid_encode(protocol);
protocol_pyramid_decode(protocol);

protocol_pyramid_encoder_start(protocol);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down
4 changes: 4 additions & 0 deletions lib/lfrfid/protocols/protocol_viking.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,10 @@ bool protocol_viking_write_data(ProtocolViking* protocol, void* data) {
LFRFIDWriteRequest* request = (LFRFIDWriteRequest*)data;
bool result = false;

// Correct protocol data by redecoding
protocol_viking_encoder_start(protocol);
protocol_viking_decode(protocol);

protocol_viking_encoder_start(protocol);

if(request->write_type == LFRFIDWriteTypeT5577) {
Expand Down

0 comments on commit fb476c2

Please sign in to comment.