Re: [PATCH BlueZ 2/4] unit/test-hfp: Add Operator name test for HF

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux