From 20c1d61a23da869eed49db0c8f901d8f61fff5bd Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Thu, 7 Dec 2017 03:54:01 +0100 Subject: HO: Implement load based handover, as handover_decision_2.c Change-Id: Ice2d3ef5668564a9d3bc4d5118d59dfaa9af6978 --- include/osmocom/bsc/handover_cfg.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'include/osmocom/bsc/handover_cfg.h') diff --git a/include/osmocom/bsc/handover_cfg.h b/include/osmocom/bsc/handover_cfg.h index b5a0d1b7d..ff73fa328 100644 --- a/include/osmocom/bsc/handover_cfg.h +++ b/include/osmocom/bsc/handover_cfg.h @@ -20,6 +20,13 @@ struct handover_cfg *ho_cfg_init(void *ctx, enum handover_cfg_ctx_type ctx_type, typedef void (*ho_cfg_on_change_cb_t)(void *ctx, enum handover_cfg_ctx_type ctx_type); +/* ho_cfg_* code gets called during initialization of the global gsm_network struct, which is included in + * various utility programs that don't need most of gsm_data.c, definitely no handover. The on_change + * callback from the ho_cfg touches internals of the handover decision, which would cause utility + * programs to require linking of most of the handover code. To break this linking cascade, have the + * on_change callbacks as function pointers. */ +extern ho_cfg_on_change_cb_t ho_cfg_on_change_congestion_check_interval_cb; + #define HO_CFG_STR_HANDOVER "Handover options\n" #define HO_CFG_STR_WIN HO_CFG_STR_HANDOVER "Measurement averaging settings\n" #define HO_CFG_STR_WIN_RXLEV HO_CFG_STR_WIN "Received-Level averaging\n" @@ -157,7 +164,8 @@ static inline const char *congestion_check_interval2a(int val) "Disable in-call assignment\n" \ "Enable in-call assignment\n") \ \ - HO_CFG_ONE_MEMBER(int, congestion_check_interval, 10, NULL, \ + HO_CFG_ONE_MEMBER(int, congestion_check_interval, 10, \ + ho_cfg_on_change_congestion_check_interval_cb, \ "handover congestion-check", "disabled|<1-60>", \ a2congestion_check_interval, "%s", congestion_check_interval2a, \ HO_CFG_STR_HANDOVER \ -- cgit v1.2.3