From 21df969ba0ae5c987f20360ef0141c155250ccb9 Mon Sep 17 00:00:00 2001 From: Matthias Ringwald Date: Mon, 8 Jan 2024 15:37:31 +0100 Subject: [PATCH] hfp_hf: store hf indicators in hfp --- src/classic/hfp.c | 8 ++++++++ src/classic/hfp.h | 1 + src/classic/hfp_hf.c | 3 +++ 3 files changed, 12 insertions(+) diff --git a/src/classic/hfp.c b/src/classic/hfp.c index 1b9b0db24..a9d7903bc 100644 --- a/src/classic/hfp.c +++ b/src/classic/hfp.c @@ -84,6 +84,9 @@ static btstack_packet_handler_t hfp_ag_callback; static btstack_packet_handler_t hfp_hf_rfcomm_packet_handler; static btstack_packet_handler_t hfp_ag_rfcomm_packet_handler; +static uint8_t hfp_hf_indicators_nr; +static const uint8_t * hfp_hf_indicators; + static uint16_t hfp_allowed_sco_packet_types; static hfp_connection_t * hfp_sco_establishment_active; @@ -2254,6 +2257,11 @@ void hfp_set_hf_rfcomm_packet_handler(btstack_packet_handler_t handler){ hfp_hf_rfcomm_packet_handler = handler; } +void hfp_set_hf_indicators(uint8_t indicators_nr, const uint8_t * indicators) { + hfp_hf_indicators_nr = indicators_nr; + hfp_hf_indicators = indicators; +} + void hfp_init(void){ hfp_allowed_sco_packet_types = SCO_PACKET_TYPES_ALL; } diff --git a/src/classic/hfp.h b/src/classic/hfp.h index 82af13e53..de7a704c5 100644 --- a/src/classic/hfp.h +++ b/src/classic/hfp.h @@ -805,6 +805,7 @@ void hfp_set_ag_rfcomm_packet_handler(btstack_packet_handler_t handler); void hfp_set_hf_callback(btstack_packet_handler_t callback); void hfp_set_hf_rfcomm_packet_handler(btstack_packet_handler_t handler); +void hfp_set_hf_indicators(uint8_t indicators_nr, const uint8_t * indicators); void hfp_init(void); void hfp_deinit(void); diff --git a/src/classic/hfp_hf.c b/src/classic/hfp_hf.c index 429d135e8..78bf92530 100644 --- a/src/classic/hfp_hf.c +++ b/src/classic/hfp_hf.c @@ -1588,6 +1588,9 @@ void hfp_hf_init_hf_indicators(int indicators_nr, const uint16_t * indicators){ for (i = 0; i < hfp_hf_indicators_nr ; i++){ hfp_hf_indicators[i] = (uint8_t) indicators[i]; } + + // store copy in hfp to setup generic_status_indicators during SLC + hfp_set_hf_indicators(indicators_nr, hfp_hf_indicators); } uint8_t hfp_hf_establish_service_level_connection(bd_addr_t bd_addr){