Hi Frédéric, On Thu, Sep 11, 2025 at 6:37 AM Frédéric Danis <frederic.danis@xxxxxxxxxxxxx> wrote: > > This add the following test: > - HFP/HF/PSI/BV-04-C > Verify that the HF can query the currently selected operator name. > > Improve MINIMAL_SLC_SESSION macro to be able to set the service, call, > callsetup and callheld indicators at connection time. > --- > unit/test-hfp.c | 50 +++++++++++++++++++++++++++++++++++++++---------- > 1 file changed, 40 insertions(+), 10 deletions(-) > > diff --git a/unit/test-hfp.c b/unit/test-hfp.c > index 371415a68..8ab6c7bf5 100644 > --- a/unit/test-hfp.c > +++ b/unit/test-hfp.c > @@ -699,7 +699,7 @@ static void test_hf_robustness(gconstpointer data) > context_quit(context); > } > > -#define MINIMAL_SLC_SESSION \ > +#define MINIMAL_SLC_SESSION(service, call, callsetup, callheld) \ WARNING:MACRO_ARG_UNUSED: Argument 'service' is not used in function-like macro #10: FILE: unit/test-hfp.c:702: +#define MINIMAL_SLC_SESSION(service, call, callsetup, callheld) \ raw_pdu('\r', '\n', '+', 'B', 'R', 'S', 'F', ':', \ ' ', '0', '\r', '\n'), \ frg_pdu('\r', '\n', 'O', 'K', '\r', '\n'), \ WARNING:MACRO_ARG_UNUSED: Argument 'call' is not used in function-like macro #10: FILE: unit/test-hfp.c:702: +#define MINIMAL_SLC_SESSION(service, call, callsetup, callheld) \ raw_pdu('\r', '\n', '+', 'B', 'R', 'S', 'F', ':', \ ' ', '0', '\r', '\n'), \ frg_pdu('\r', '\n', 'O', 'K', '\r', '\n'), \ WARNING:MACRO_ARG_UNUSED: Argument 'callsetup' is not used in function-like macro #10: FILE: unit/test-hfp.c:702: +#define MINIMAL_SLC_SESSION(service, call, callsetup, callheld) \ raw_pdu('\r', '\n', '+', 'B', 'R', 'S', 'F', ':', \ ' ', '0', '\r', '\n'), \ frg_pdu('\r', '\n', 'O', 'K', '\r', '\n'), \ WARNING:MACRO_ARG_UNUSED: Argument 'callheld' is not used in function-like macro #10: FILE: unit/test-hfp.c:702: +#define MINIMAL_SLC_SESSION(service, call, callsetup, callheld) \ raw_pdu('\r', '\n', '+', 'B', 'R', 'S', 'F', ':', \ ' ', '0', '\r', '\n'), \ frg_pdu('\r', '\n', 'O', 'K', '\r', '\n'), \ - total: 0 errors, 4 warnings, 108 lines checked > raw_pdu('\r', '\n', '+', 'B', 'R', 'S', 'F', ':', \ > ' ', '0', '\r', '\n'), \ > frg_pdu('\r', '\n', 'O', 'K', '\r', '\n'), \ > @@ -722,10 +722,15 @@ static void test_hf_robustness(gconstpointer data) > frg_pdu('\r', '\n'), \ > frg_pdu('\r', '\n', 'O', 'K', '\r', '\n'), \ > raw_pdu('\r', '\n', '+', 'C', 'I', 'N', 'D', ':', ' '), \ > - frg_pdu('0', ',', '0', ',', '0', ',', '0', ',', '5'), \ > - frg_pdu(',', '0', ',', '5', '\r', '\n'), \ > + frg_pdu(service, ',', call, ',', callsetup, ',', callheld, ','), \ > + frg_pdu('5', ',', '0', ',', '5', '\r', '\n'), \ > frg_pdu('\r', '\n', 'O', 'K', '\r', '\n'), \ > - raw_pdu('\r', '\n', 'O', 'K', '\r', '\n') > + raw_pdu('\r', '\n', 'O', 'K', '\r', '\n'), \ > + raw_pdu('\r', '\n', 'O', 'K', '\r', '\n'), \ > + raw_pdu('\r', '\n', '+', 'C', 'O', 'P', 'S', ':', ' '), \ > + frg_pdu('0', ',', '0', ',', '\"', 'T', 'E', 'S', 'T'), \ > + frg_pdu('\"', '\r', '\n'), \ > + frg_pdu('\r', '\n', 'O', 'K', '\r', '\n') > > static void hf_session_ready_cb(enum hfp_result res, enum hfp_error cme_err, > void *user_data) > @@ -745,7 +750,13 @@ static void hf_update_indicator(enum hfp_indicator indicator, uint32_t val, > if (!context->session.completed) { > switch (indicator) { > case HFP_INDICATOR_SERVICE: > - g_assert_cmpint(val, ==, 0); > + if (g_str_equal(test_name, "/HFP/HF/PSI/BV-03-C") || > + g_str_equal(test_name, "/HFP/HF/TRS/BV-01-C") || > + g_str_equal(test_name, > + "/hfp_hf/test_session_minimal")) > + g_assert_cmpint(val, ==, 0); > + else > + g_assert_cmpint(val, ==, 1); > break; > case HFP_INDICATOR_CALL: > g_assert_cmpint(val, ==, 0); > @@ -789,9 +800,22 @@ static void hf_update_indicator(enum hfp_indicator indicator, uint32_t val, > } > } > > +static void hf_update_operator(const char *operator_name, void *user_data) > +{ > + struct context *context = user_data; > + const char *test_name = context->data->test_name; > + > + if (tester_use_debug()) > + tester_debug("operator updated: %s", operator_name); > + > + if (g_str_equal(test_name, "/HFP/HF/PSI/BV-04-C")) > + g_assert_cmpstr(operator_name, ==, "TEST"); > +} > + > static struct hfp_hf_callbacks hf_session_callbacks = { > .session_ready = hf_session_ready_cb, > .update_indicator = hf_update_indicator, > + .update_operator = hf_update_operator, > }; > > static void test_hf_session_done(enum hfp_result res, enum hfp_error cme_err, > @@ -996,13 +1020,13 @@ int main(int argc, char *argv[]) > > define_hf_test("/hfp_hf/test_session_minimal", test_hf_session, > NULL, test_hf_session_done, > - MINIMAL_SLC_SESSION, > + MINIMAL_SLC_SESSION('0', '0', '0', '0'), > data_end()); > > /* Transfer Signal Strength Indication - HF */ > define_hf_test("/HFP/HF/PSI/BV-01-C", test_hf_session, > NULL, test_hf_session_done, > - MINIMAL_SLC_SESSION, > + MINIMAL_SLC_SESSION('1', '0', '0', '0'), > frg_pdu('\r', '\n', '+', 'C', 'I', 'E', 'V', ':'), > frg_pdu(' ', '5', ',', '3', '\r', '\n'), > data_end()); > @@ -1010,7 +1034,7 @@ int main(int argc, char *argv[]) > /* Transfer Roaming Status Indication - HF */ > define_hf_test("/HFP/HF/PSI/BV-02-C", test_hf_session, > NULL, test_hf_session_done, > - MINIMAL_SLC_SESSION, > + MINIMAL_SLC_SESSION('1', '0', '0', '0'), > frg_pdu('\r', '\n', '+', 'C', 'I', 'E', 'V', ':'), > frg_pdu(' ', '6', ',', '1', '\r', '\n'), > frg_pdu('\r', '\n', '+', 'C', 'I', 'E', 'V', ':'), > @@ -1020,15 +1044,21 @@ int main(int argc, char *argv[]) > /* Transfer Battery Level Indication - HF */ > define_hf_test("/HFP/HF/PSI/BV-03-C", test_hf_session, > NULL, test_hf_session_done, > - MINIMAL_SLC_SESSION, > + MINIMAL_SLC_SESSION('0', '0', '0', '0'), > frg_pdu('\r', '\n', '+', 'C', 'I', 'E', 'V', ':'), > frg_pdu(' ', '7', ',', '3', '\r', '\n'), > data_end()); > > + /* Transfer Operator name - HF */ > + define_hf_test("/HFP/HF/PSI/BV-04-C", test_hf_session, > + NULL, test_hf_session_done, > + MINIMAL_SLC_SESSION('1', '0', '0', '0'), > + data_end()); > + > /* Transfer Registration Status - HF */ > define_hf_test("/HFP/HF/TRS/BV-01-C", test_hf_session, > NULL, test_hf_session_done, > - MINIMAL_SLC_SESSION, > + MINIMAL_SLC_SESSION('0', '0', '0', '0'), > frg_pdu('\r', '\n', '+', 'C', 'I', 'E', 'V', ':'), > frg_pdu(' ', '1', ',', '1', '\r', '\n'), > frg_pdu('\r', '\n', '+', 'C', 'I', 'E', 'V', ':'), > -- > 2.43.0 > > -- Luiz Augusto von Dentz