From: Kevin Day Date: Fri, 2 May 2025 00:59:00 +0000 (-0500) Subject: Update: Switch to use fll_program_signal_check_loop() and fll_program_signal_check_si... X-Git-Url: https://git.kevux.org/?a=commitdiff_plain;h=f3bba73e9fa16b70966871dd42abd86ffaf2aefd;p=controller Update: Switch to use fll_program_signal_check_loop() and fll_program_signal_check_simple(). --- diff --git a/sources/c/program/controller/main/common/define.h b/sources/c/program/controller/main/common/define.h index 01157bb..053b1a7 100644 --- a/sources/c/program/controller/main/common/define.h +++ b/sources/c/program/controller/main/common/define.h @@ -103,6 +103,17 @@ extern "C" { #endif // _di_controller_signal_d_ /** + * A macro wrapping the appropriate signal check function based on threaded/non-threaded support. + */ +#ifndef _di_controller_signal_check_ + #ifdef _di_thread_support_ + #define macro_controller_signal_check(program, state) fll_program_signal_check_loop(program, state) + #else + #define macro_controller_signal_check(program, state) fll_program_signal_check_simple(program, state) + #endif // _di_thread_support_ +#endif // _di_controller_signal_check_ + +/** * Controller "with" codes. * * controller_with_*_d: diff --git a/sources/c/program/controller/main/signal.c b/sources/c/program/controller/main/signal.c index 7db1558..f598dbd 100644 --- a/sources/c/program/controller/main/signal.c +++ b/sources/c/program/controller/main/signal.c @@ -4,41 +4,6 @@ extern "C" { #endif -#if !defined(_di_controller_signal_check_) && defined(_di_thread_support_) - f_status_t controller_signal_check(controller_t * const main) { - - if (!main) return F_false; - if (main->program.signal_received) return F_true; - - if (!((++main->program.signal_check) % controller_signal_check_d)) { - if (F_status_set_fine(fll_program_standard_signal_received(&main->program)) == F_interrupt) { - main->setting.state.status = F_status_set_error(F_interrupt); - - return F_true; - } - - main->program.signal_check = 0; - } - - return F_false; - } -#endif // !defined(_di_controller_signal_check_) && defined(_di_thread_support_) - -#if !defined(_di_controller_signal_check_) && !defined(_di_thread_support_) - f_status_t controller_signal_check(controller_t * const main) { - - if (!main) return F_false; - - if (main->program.signal_received) { - main->setting.state.status = F_status_set_error(F_interrupt); - - return F_true; - } - - return F_false; - } -#endif // !defined(_di_controller_signal_check_) && !defined(_di_thread_support_) - #if !defined(_di_controller_signal_handler_) && !defined(_di_thread_support_) void controller_signal_handler(controller_t * const main) { diff --git a/sources/c/program/controller/main/signal.h b/sources/c/program/controller/main/signal.h index 5ee1b6e..1c029ab 100644 --- a/sources/c/program/controller/main/signal.h +++ b/sources/c/program/controller/main/signal.h @@ -17,38 +17,6 @@ extern "C" { #endif /** - * Check to see if a signal is received. - * - * If main.signal is non-zero, then this handles the following signals: - * - F_signal_abort - * - F_signal_broken_pipe - * - F_signal_hangup - * - F_signal_interrupt - * - F_signal_quit - * - F_signal_termination - * - * There is a threaded and a non-threaded version of this. - * The non-threaded version checks periodically using controller_signal_check_d and updates main->signal_check as needed. - * The threaded version checks the flag state which is set by a separate thread that is blocking until signal is received. - * - * @param main - * The main program and settings data. - * - * This does not alter main.setting.state.status. - * - * @return - * F_true on signal received. - * F_false otherwise. - * - * @see controller_signal_handler() - * - * @see fll_program_standard_signal_received() - */ -#ifndef _di_controller_signal_check_ - extern f_status_t controller_signal_check(controller_t * const main); -#endif // _di_controller_signal_check_ - -/** * Signal handler for signals/interrupts. * * This blocks until an expected signal is recieved.