From c26ea5ca18383614a1987f7ff08b976983d63d6a Mon Sep 17 00:00:00 2001 From: Sandro Kalatozishvili Date: Tue, 10 Oct 2023 04:03:39 +0400 Subject: [PATCH] Fixed furi_assert fail for view dispatcher custom callback set function --- deploy.sh | 3 ++- xremote.h | 2 +- xremote_learn.c | 10 ++++++++-- xremote_signal.c | 30 ++++++++++++++---------------- xremote_signal.h | 4 ++-- 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/deploy.sh b/deploy.sh index 0c81c28..0812f7a 100755 --- a/deploy.sh +++ b/deploy.sh @@ -4,6 +4,7 @@ # Change it according to the root path of the used firmware FLIPPER_FIRMWARE="/opt/flipper/firmwares/unleashed-firmware" +#FLIPPER_FIRMWARE="/opt/flipper/firmwares/flipperzero-firmware" # Private variables XREMOTE_PROJ_PATH=$(dirname $(readlink -f "$0")) @@ -26,4 +27,4 @@ for arg in "$@"; do if [[ $arg == "--run" || $arg == "-r" ]]; then [ $DEPLOY_DONE -eq 1 ] && sudo qflipper fi -done \ No newline at end of file +done diff --git a/xremote.h b/xremote.h index 057055b..ec63288 100644 --- a/xremote.h +++ b/xremote.h @@ -10,6 +10,6 @@ #define XREMOTE_VERSION_MAJOR 1 #define XREMOTE_VERSION_MINOR 0 -#define XREMOTE_BUILD_NUMBER 4 +#define XREMOTE_BUILD_NUMBER 5 void xremote_get_version(char* version, size_t length); diff --git a/xremote_learn.c b/xremote_learn.c index eb8e095..6bbd3b6 100644 --- a/xremote_learn.c +++ b/xremote_learn.c @@ -255,6 +255,12 @@ static void xremote_learn_finish(XRemoteLearnContext* learn_ctx) { xremote_learn_switch_to_view(learn_ctx, XRemoteViewSubmenu); } +static bool xremote_learn_custom_event_dummy_callback(void* context, uint32_t event) { + UNUSED(context); + UNUSED(event); + return true; +} + static bool xremote_learn_custom_event_callback(void* context, uint32_t event) { xremote_app_assert(context, false); XRemoteLearnContext* learn_ctx = context; @@ -363,8 +369,8 @@ static void xremote_learn_context_free(XRemoteLearnContext* learn_ctx) { xremote_learn_exit_dialog_free(learn_ctx); ViewDispatcher* view_disp = learn_ctx->app_ctx->view_dispatcher; - view_dispatcher_set_custom_event_callback(view_disp, NULL); - view_dispatcher_set_event_callback_context(view_disp, NULL); + view_dispatcher_set_custom_event_callback( + view_disp, xremote_learn_custom_event_dummy_callback); view_dispatcher_remove_view(view_disp, XRemoteViewTextInput); text_input_free(learn_ctx->text_input); diff --git a/xremote_signal.c b/xremote_signal.c index 59c29c6..91bad7d 100644 --- a/xremote_signal.c +++ b/xremote_signal.c @@ -91,34 +91,32 @@ void xremote_signal_receiver_set_rx_callback( rx_ctx->rx_callback = rx_callback; } -void xremote_signal_receiver_start(XRemoteSignalReceiver* rx_ctx) { - xremote_app_assert_void((rx_ctx && rx_ctx->worker && !rx_ctx->started)); +void xremote_signal_receiver_attach(XRemoteSignalReceiver* rx_ctx) { + xremote_app_assert_void((rx_ctx && rx_ctx->worker)); infrared_worker_rx_set_received_signal_callback( - rx_ctx->worker, xremote_signal_receiver_rx_callback, (void*)rx_ctx); + rx_ctx->worker, xremote_signal_receiver_rx_callback, rx_ctx); +} +void xremote_signal_receiver_detach(XRemoteSignalReceiver* rx_ctx) { + xremote_app_assert_void((rx_ctx && rx_ctx->worker)); + infrared_worker_rx_set_received_signal_callback(rx_ctx->worker, NULL, NULL); +} + +void xremote_signal_receiver_start(XRemoteSignalReceiver* rx_ctx) { + xremote_app_assert_void((rx_ctx && !rx_ctx->started)); + xremote_signal_receiver_attach(rx_ctx); infrared_worker_rx_start(rx_ctx->worker); xremote_app_notification_blink(rx_ctx->notifications); rx_ctx->started = true; } void xremote_signal_receiver_stop(XRemoteSignalReceiver* rx_ctx) { - xremote_app_assert_void((rx_ctx && rx_ctx->worker && rx_ctx->started)); - infrared_worker_rx_set_received_signal_callback(rx_ctx->worker, NULL, NULL); + xremote_app_assert_void((rx_ctx && rx_ctx->started)); + xremote_signal_receiver_detach(rx_ctx); infrared_worker_rx_stop(rx_ctx->worker); rx_ctx->started = false; } -void xremote_signal_receiver_pause(XRemoteSignalReceiver* rx_ctx) { - xremote_app_assert_void((rx_ctx && rx_ctx->worker)); - infrared_worker_rx_set_received_signal_callback(rx_ctx->worker, NULL, NULL); -} - -void xremote_signal_receiver_resume(XRemoteSignalReceiver* rx_ctx) { - xremote_app_assert_void((rx_ctx && rx_ctx->worker)); - infrared_worker_rx_set_received_signal_callback( - rx_ctx->worker, xremote_signal_receiver_rx_callback, (void*)rx_ctx); -} - InfraredSignal* xremote_signal_receiver_get_signal(XRemoteSignalReceiver* rx_ctx) { xremote_app_assert(rx_ctx, NULL); return rx_ctx->signal; diff --git a/xremote_signal.h b/xremote_signal.h index ea10d2e..e7c60b2 100644 --- a/xremote_signal.h +++ b/xremote_signal.h @@ -29,5 +29,5 @@ InfraredSignal* xremote_signal_receiver_get_signal(XRemoteSignalReceiver* rx_ctx void xremote_signal_receiver_start(XRemoteSignalReceiver* rx_ctx); void xremote_signal_receiver_stop(XRemoteSignalReceiver* rx_ctx); -void xremote_signal_receiver_pause(XRemoteSignalReceiver* rx_ctx); -void xremote_signal_receiver_resume(XRemoteSignalReceiver* rx_ctx); +void xremote_signal_receiver_detach(XRemoteSignalReceiver* rx_ctx); +void xremote_signal_receiver_attach(XRemoteSignalReceiver* rx_ctx);