From f6a508b283ce1c97ffbb79ee2d430a050c5503bf Mon Sep 17 00:00:00 2001 From: Tilen Date: Sun, 26 Jul 2026 06:46:38 +0200 Subject: [PATCH] fix: increase guards for optional functions --- CHANGELOG.md | 2 ++ lwbtn/src/include/lwbtn/lwbtn.h | 10 ++++++++-- lwbtn/src/lwbtn/lwbtn.c | 18 +++++++++--------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7039c4..6bb4c7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## Develop +- Guard all optional functions with the conditional compilation depending on the user configuration + ## v1.3.1 - Fire the on-press/on-release events as soon as the transition happen. Do not wait next process cycle. diff --git a/lwbtn/src/include/lwbtn/lwbtn.h b/lwbtn/src/include/lwbtn/lwbtn.h index 00f9bfe..ccccf31 100644 --- a/lwbtn/src/include/lwbtn/lwbtn.h +++ b/lwbtn/src/include/lwbtn/lwbtn.h @@ -171,13 +171,18 @@ typedef struct lwbtn { #endif /* LWBTN_CFG_GET_STATE_MODE != LWBTN_GET_STATE_MODE_MANUAL || __DOXYGEN__ */ } lwbtn_t; +/* Core functions */ uint8_t lwbtn_init_ex(lwbtn_t* lwobj, lwbtn_btn_t* btns, uint16_t btns_cnt, lwbtn_get_state_fn get_state_fn, lwbtn_evt_fn evt_fn); uint8_t lwbtn_process_ex(lwbtn_t* lwobj, lwbtn_time_t mstime); uint8_t lwbtn_process_btn_ex(lwbtn_t* lwobj, lwbtn_btn_t* btn, lwbtn_time_t mstime); -uint8_t lwbtn_set_btn_state(lwbtn_btn_t* btn, uint8_t state); -uint8_t lwbtn_is_btn_active(const lwbtn_btn_t* btn); uint8_t lwbtn_reset(lwbtn_t* lwobj, lwbtn_btn_t* btn); +uint8_t lwbtn_is_btn_active(const lwbtn_btn_t* btn); + +/* State function */ +#if LWBTN_CFG_GET_STATE_MODE != LWBTN_GET_STATE_MODE_CALLBACK || __DOXYGEN__ +uint8_t lwbtn_set_btn_state(lwbtn_btn_t* btn, uint8_t state); +#endif /* LWBTN_CFG_GET_STATE_MODE != LWBTN_GET_STATE_MODE_CALLBACK || __DOXYGEN__ */ /* Debounce configuration functions */ lwbtn_time_t lwbtn_debounce_get_press_time(const lwbtn_btn_t* btn); @@ -239,6 +244,7 @@ uint8_t lwbtn_click_get_count(const lwbtn_btn_t* btn); */ #define lwbtn_process_btn(btn, mstime) lwbtn_process_btn_ex(NULL, (btn), (mstime)) +/* Keep alive functions */ #if LWBTN_CFG_USE_KEEPALIVE || __DOXYGEN__ lwbtn_time_t lwbtn_keepalive_get_period(const lwbtn_btn_t* btn); diff --git a/lwbtn/src/lwbtn/lwbtn.c b/lwbtn/src/lwbtn/lwbtn.c index 0b3c0a3..3e1bb76 100644 --- a/lwbtn/src/lwbtn/lwbtn.c +++ b/lwbtn/src/lwbtn/lwbtn.c @@ -408,25 +408,27 @@ lwbtn_process_btn_ex(lwbtn_t* lwobj, lwbtn_btn_t* btn, lwbtn_time_t mstime) { return 0; } +#if LWBTN_CFG_GET_STATE_MODE != LWBTN_GET_STATE_MODE_CALLBACK || __DOXYGEN__ + /** * \brief Set button state to either "active" or "inactive". + * + * \note Available only when \ref LWBTN_CFG_GET_STATE_MODE is NOT set to \ref LWBTN_GET_STATE_MODE_CALLBACK, + * which implies that user can use callback or direct (dynamic configuration) state set + * * \param[in] btn: Button instance * \param[in] state: New button state. `1` is for active (pressed), `0` is for inactive (released). * \return `1` on success, `0` otherwise */ uint8_t lwbtn_set_btn_state(lwbtn_btn_t* btn, uint8_t state) { -#if LWBTN_CFG_GET_STATE_MODE != LWBTN_GET_STATE_MODE_CALLBACK btn->curr_state = state; btn->flags |= LWBTN_FLAG_MANUAL_STATE; return 1; -#else /* LWBTN_CFG_GET_STATE_MODE != LWBTN_GET_STATE_MODE_CALLBACK */ - (void)btn; - (void)state; - return 0; -#endif /* LWBTN_CFG_GET_STATE_MODE != LWBTN_GET_STATE_MODE_CALLBACK */ } +#endif /* LWBTN_CFG_GET_STATE_MODE != LWBTN_GET_STATE_MODE_CALLBACK || __DOXYGEN__ */ + /** * \brief Check if button is active. * @@ -543,7 +545,7 @@ lwbtn_debounce_set_release_time(lwbtn_btn_t* btn, lwbtn_time_t time) { #endif /* LWBTN_CFG_TIME_DEBOUNCE_RELEASE_DYNAMIC || __DOXYGEN__ */ -/* Click configuration functions */ +#if LWBTN_CFG_USE_CLICK || __DOXYGEN__ /** * \brief Get minimum pressed time for valid click event, for specific button @@ -681,8 +683,6 @@ lwbtn_click_set_max_consecutive(lwbtn_btn_t* btn, uint8_t max) { #endif /* LWBTN_CFG_CLICK_MAX_CONSECUTIVE_DYNAMIC || __DOXYGEN__ */ -#if LWBTN_CFG_USE_CLICK || __DOXYGEN__ - /** * \brief Get number of consecutive click events on a button since the last events. *