This is an automated email from the ASF dual-hosted git repository. janc pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git
commit ef6afc456f3acd952f3206830c94424fa1378723 Author: Mariusz Skamra <[email protected]> AuthorDate: Mon Nov 18 09:29:22 2024 +0100 btshell: Add 'broadcast-sink-set-sync-params' command This adds 'broadcast-sink-set-sync-params' commands to be used to set the PA Sync parameters to be used. --- apps/btshell/src/cmd.c | 7 +++++ apps/btshell/src/cmd_leaudio.c | 60 ++++++++++++++++++++++++++++++++++-------- apps/btshell/src/cmd_leaudio.h | 2 ++ 3 files changed, 58 insertions(+), 11 deletions(-) diff --git a/apps/btshell/src/cmd.c b/apps/btshell/src/cmd.c index aad564a1a..87f5d9f1d 100644 --- a/apps/btshell/src/cmd.c +++ b/apps/btshell/src/cmd.c @@ -4965,6 +4965,13 @@ static const struct shell_cmd btshell_commands[] = { .sc_cmd_func = cmd_leaudio_broadcast_sink_metadata_update, #if MYNEWT_VAL(SHELL_CMD_HELP) .help = &cmd_leaudio_broadcast_sink_metadata_update_help, +#endif + }, + { + .sc_cmd = "broadcast-sink-set-sync-params", + .sc_cmd_func = cmd_leaudio_broadcast_sink_sync_params_set, +#if MYNEWT_VAL(SHELL_CMD_HELP) + .help = &cmd_leaudio_broadcast_sink_sync_params_set_help, #endif }, #endif /* BLE_AUDIO_BROADCAST_SINK */ diff --git a/apps/btshell/src/cmd_leaudio.c b/apps/btshell/src/cmd_leaudio.c index 8cc3e5457..3e3a685e0 100644 --- a/apps/btshell/src/cmd_leaudio.c +++ b/apps/btshell/src/cmd_leaudio.c @@ -392,17 +392,14 @@ cmd_leaudio_broadcast_stop(int argc, char **argv) #if (MYNEWT_VAL(BLE_AUDIO_BROADCAST_SINK)) #include "audio/ble_audio_broadcast_sink.h" -#define BROADCAST_SINK_PA_SYNC_TIMEOUT_DEFAULT 0x07D0 +#define BROADCAST_SINK_PA_SYNC_SKIP_DFLT 0x0000 +#define BROADCAST_SINK_PA_SYNC_TIMEOUT_DFLT 0x07D0 -static int -broadcast_sink_pa_sync_params_get(struct ble_gap_periodic_sync_params *params) -{ - params->skip = 0; - params->sync_timeout = BROADCAST_SINK_PA_SYNC_TIMEOUT_DEFAULT; - params->reports_disabled = false; - - return 0; -} +static struct ble_gap_periodic_sync_params broadcast_sink_periodic_sync_params = { + .skip = BROADCAST_SINK_PA_SYNC_SKIP_DFLT, + .sync_timeout = BROADCAST_SINK_PA_SYNC_TIMEOUT_DFLT, + .reports_disabled = false +}; static void codec_specific_config_printf(const struct ble_audio_codec_id *unused, const uint8_t *data, @@ -479,7 +476,8 @@ broadcast_sink_action_fn(struct ble_audio_broadcast_sink_action *action, void *a switch (action->type) { case BLE_AUDIO_BROADCAST_SINK_ACTION_PA_SYNC: console_printf("PA Sync:\n"); - return broadcast_sink_pa_sync_params_get(action->pa_sync.out_params); + *action->pa_sync.out_params = broadcast_sink_periodic_sync_params; + break; case BLE_AUDIO_BROADCAST_SINK_ACTION_BIG_SYNC: console_printf("BIG Sync:\nsource_id=0x%02x iso_interval=0x%04x" " presentation_delay=%" PRIu32 "[us]\n", @@ -648,6 +646,46 @@ cmd_leaudio_broadcast_sink_metadata_update(int argc, char **argv) return rc; } +#if MYNEWT_VAL(SHELL_CMD_HELP) +static const struct shell_param cmd_leaudio_broadcast_sink_sync_params_set_params[] = { + {"skip", "usage: =[0x0000-0x01F3], default: 0x0000"}, + {"sync_timeout", "usage: =[0x000A-0x4000], default: 0x07D0"}, + {NULL, NULL} +}; + +const struct shell_cmd_help cmd_leaudio_broadcast_sink_sync_params_set_help = { + .summary = "Set Broadcast Sink sync parameters", + .usage = NULL, + .params = cmd_leaudio_broadcast_sink_sync_params_set_params +}; +#endif /* SHELL_CMD_HELP */ + +int +cmd_leaudio_broadcast_sink_sync_params_set(int argc, char **argv) +{ + int rc; + + rc = parse_arg_init(argc - 1, argv + 1); + if (rc != 0) { + return rc; + } + + broadcast_sink_periodic_sync_params.skip = parse_arg_uint16_dflt("skip", BROADCAST_SINK_PA_SYNC_SKIP_DFLT, &rc); + if (rc != 0) { + console_printf("invalid 'skip' parameter\n"); + return rc; + } + + broadcast_sink_periodic_sync_params.sync_timeout = parse_arg_time_dflt("sync_timeout", 10000, + BROADCAST_SINK_PA_SYNC_TIMEOUT_DFLT, &rc); + if (rc != 0) { + console_printf("invalid 'sync_timeout' parameter\n"); + return rc; + } + + return rc; +} + static int broadcast_sink_audio_event_handler(struct ble_audio_event *event, void *arg) { diff --git a/apps/btshell/src/cmd_leaudio.h b/apps/btshell/src/cmd_leaudio.h index 477b33a21..1704c6f4d 100644 --- a/apps/btshell/src/cmd_leaudio.h +++ b/apps/btshell/src/cmd_leaudio.h @@ -46,10 +46,12 @@ int cmd_leaudio_broadcast_stop(int argc, char **argv); extern const struct shell_cmd_help cmd_leaudio_broadcast_sink_start_help; extern const struct shell_cmd_help cmd_leaudio_broadcast_sink_stop_help; extern const struct shell_cmd_help cmd_leaudio_broadcast_sink_metadata_update_help; +extern const struct shell_cmd_help cmd_leaudio_broadcast_sink_sync_params_set_help; int cmd_leaudio_broadcast_sink_start(int argc, char **argv); int cmd_leaudio_broadcast_sink_stop(int argc, char **argv); int cmd_leaudio_broadcast_sink_metadata_update(int argc, char **argv); +int cmd_leaudio_broadcast_sink_sync_params_set(int argc, char **argv); extern const struct shell_cmd_help cmd_leaudio_scan_delegator_receive_state_add_help; extern const struct shell_cmd_help cmd_leaudio_scan_delegator_receive_state_remove_help;
