Merge branch 'ofw_dev' into nfcrefactoring

This commit is contained in:
MX
2023-11-11 20:18:55 +04:00
29 changed files with 669 additions and 412 deletions

View File

@@ -21,7 +21,7 @@ typedef enum {
NfcCustomEventTextInputDone,
NfcCustomEventDictAttackDone,
NfcCustomEventRpcLoad,
NfcCustomEventRpcLoadFile,
NfcCustomEventRpcExit,
NfcCustomEventRpcSessionClose,

View File

@@ -694,15 +694,17 @@ static bool nfc_protocol_support_scene_rpc_on_event(NfcApp* instance, SceneManag
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
if(event.event == NfcCustomEventRpcLoad && instance->rpc_state == NfcRpcStateIdle) {
furi_string_set(instance->file_path, rpc_system_app_get_data(instance->rpc_ctx));
const bool load_success = nfc_load_file(instance, instance->file_path, false);
if(load_success) {
nfc_protocol_support_scene_rpc_setup_ui_and_emulate(instance);
if(event.event == NfcCustomEventRpcLoadFile) {
bool success = false;
if(instance->rpc_state == NfcRpcStateIdle) {
if(nfc_load_file(instance, instance->file_path, false)) {
nfc_protocol_support_scene_rpc_setup_ui_and_emulate(instance);
success = true;
}
}
rpc_system_app_confirm(instance->rpc_ctx, RpcAppEventLoadFile, load_success);
rpc_system_app_confirm(instance->rpc_ctx, success);
} else if(event.event == NfcCustomEventRpcExit) {
rpc_system_app_confirm(instance->rpc_ctx, RpcAppEventAppExit, true);
rpc_system_app_confirm(instance->rpc_ctx, true);
scene_manager_stop(instance->scene_manager);
view_dispatcher_stop(instance->view_dispatcher);
} else if(event.event == NfcCustomEventRpcSessionClose) {

View File

@@ -14,22 +14,24 @@ bool nfc_back_event_callback(void* context) {
return scene_manager_handle_back_event(nfc->scene_manager);
}
static void nfc_app_rpc_command_callback(RpcAppSystemEvent rpc_event, void* context) {
static void nfc_app_rpc_command_callback(const RpcAppSystemEvent* event, void* context) {
furi_assert(context);
NfcApp* nfc = (NfcApp*)context;
furi_assert(nfc->rpc_ctx);
if(rpc_event == RpcAppEventSessionClose) {
if(event->type == RpcAppEventTypeSessionClose) {
view_dispatcher_send_custom_event(nfc->view_dispatcher, NfcCustomEventRpcSessionClose);
rpc_system_app_set_callback(nfc->rpc_ctx, NULL, NULL);
nfc->rpc_ctx = NULL;
} else if(rpc_event == RpcAppEventAppExit) {
} else if(event->type == RpcAppEventTypeAppExit) {
view_dispatcher_send_custom_event(nfc->view_dispatcher, NfcCustomEventRpcExit);
} else if(rpc_event == RpcAppEventLoadFile) {
view_dispatcher_send_custom_event(nfc->view_dispatcher, NfcCustomEventRpcLoad);
} else if(event->type == RpcAppEventTypeLoadFile) {
furi_assert(event->data.type == RpcAppSystemEventDataTypeString);
furi_string_set(nfc->file_path, event->data.string);
view_dispatcher_send_custom_event(nfc->view_dispatcher, NfcCustomEventRpcLoadFile);
} else {
rpc_system_app_confirm(nfc->rpc_ctx, rpc_event, false);
rpc_system_app_confirm(nfc->rpc_ctx, false);
}
}