NFC: add specific FeliCa type read option

This commit is contained in:
nullableVoidPtr
2022-12-06 02:58:11 +08:00
parent eaa2dea075
commit 68b3cc233b
16 changed files with 225 additions and 197 deletions

View File

@@ -29,7 +29,8 @@ void nfc_scene_felica_read_success_on_enter(void* context) {
FelicaSystem* current_system = felica_data->systems;
while(current_system) {
furi_string_cat_printf(temp_str, "\nSystem %04X (#%d):", current_system->code, current_system->number);
furi_string_cat_printf(
temp_str, "\nSystem %04X (#%d):", current_system->code, current_system->number);
furi_string_cat_printf(temp_str, "\nIDm:\n ");
for(size_t i = 0; i < 8; i++) {
furi_string_cat_printf(temp_str, "%02X", current_system->idm[i]);

View File

@@ -51,7 +51,8 @@ void nfc_scene_nfc_data_info_on_enter(void* context) {
for(size_t i = 0; i < nfc_data->uid_len; i++) {
furi_string_cat_printf(temp_str, " %02X", nfc_data->uid[i]);
}
furi_string_cat_printf(temp_str, "\nATQA: %02X %02X ", nfc_data->a_data.atqa[1], nfc_data->a_data.atqa[0]);
furi_string_cat_printf(
temp_str, "\nATQA: %02X %02X ", nfc_data->a_data.atqa[1], nfc_data->a_data.atqa[0]);
furi_string_cat_printf(temp_str, " SAK: %02X", nfc_data->a_data.sak);
// Set application specific data

View File

@@ -30,7 +30,8 @@ void nfc_scene_nfca_read_success_on_enter(void* context) {
for(size_t i = 0; i < data->uid_len; i++) {
furi_string_cat_printf(temp_str, " %02X", data->uid[i]);
}
furi_string_cat_printf(temp_str, "\nATQA: %02X %02X ", data->a_data.atqa[1], data->a_data.atqa[0]);
furi_string_cat_printf(
temp_str, "\nATQA: %02X %02X ", data->a_data.atqa[1], data->a_data.atqa[0]);
furi_string_cat_printf(temp_str, " SAK: %02X", data->a_data.sak);
widget_add_text_scroll_element(widget, 0, 0, 128, 52, furi_string_get_cstr(temp_str));

View File

@@ -7,6 +7,7 @@ enum SubmenuIndex {
SubmenuIndexReadMfUltralight,
SubmenuIndexReadEMV,
SubmenuIndexReadNFCA,
SubmenuIndexReadFelica,
};
void nfc_scene_read_card_type_submenu_callback(void* context, uint32_t index) {
@@ -49,6 +50,12 @@ void nfc_scene_read_card_type_on_enter(void* context) {
SubmenuIndexReadNFCA,
nfc_scene_read_card_type_submenu_callback,
nfc);
submenu_add_item(
submenu,
"Read FeliCa",
SubmenuIndexReadFelica,
nfc_scene_read_card_type_submenu_callback,
nfc);
uint32_t state = scene_manager_get_scene_state(nfc->scene_manager, NfcSceneReadCardType);
submenu_set_selected_item(submenu, state);
@@ -85,6 +92,11 @@ bool nfc_scene_read_card_type_on_event(void* context, SceneManagerEvent event) {
scene_manager_next_scene(nfc->scene_manager, NfcSceneRead);
consumed = true;
}
if(event.event == SubmenuIndexReadFelica) {
nfc->dev->dev_data.read_mode = NfcReadModeFelica;
scene_manager_next_scene(nfc->scene_manager, NfcSceneRead);
consumed = true;
}
scene_manager_set_scene_state(nfc->scene_manager, NfcSceneReadCardType, event.event);
}
return consumed;