1 /*
2 * Copyright (c) 2022 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7 #include <stdlib.h>
8 #include <zephyr/shell/shell.h>
9 #include <zephyr/bluetooth/mesh.h>
10 #include <zephyr/bluetooth/mesh/shell.h>
11
12 #include "utils.h"
13
cmd_seq_start(const struct shell * sh,size_t argc,char * argv[])14 static int cmd_seq_start(const struct shell *sh, size_t argc, char *argv[])
15 {
16 uint16_t elem_addr;
17 int err = 0;
18
19 elem_addr = shell_strtoul(argv[1], 0, &err);
20 if (err) {
21 shell_warn(sh, "Unable to parse input string argument");
22 return err;
23 }
24
25 bt_mesh_shell_target_ctx.dst = elem_addr;
26 shell_print(sh, "mesh dst set to 0x%04x", elem_addr);
27
28 err = bt_mesh_op_agg_cli_seq_start(bt_mesh_shell_target_ctx.net_idx,
29 bt_mesh_shell_target_ctx.app_idx,
30 bt_mesh_shell_target_ctx.dst, elem_addr);
31 if (err) {
32 shell_error(sh, "Failed to configure Opcodes Aggregator Context (err %d)", err);
33 }
34
35 return 0;
36 }
37
cmd_seq_send(const struct shell * sh,size_t argc,char * argv[])38 static int cmd_seq_send(const struct shell *sh, size_t argc, char *argv[])
39 {
40 int err;
41
42 err = bt_mesh_op_agg_cli_seq_send();
43 if (err) {
44 shell_error(sh, "Failed to send Opcodes Aggregator Sequence message (err %d)", err);
45 }
46
47 return 0;
48 }
49
cmd_seq_abort(const struct shell * sh,size_t argc,char * argv[])50 static int cmd_seq_abort(const struct shell *sh, size_t argc, char *argv[])
51 {
52 bt_mesh_op_agg_cli_seq_abort();
53
54 return 0;
55 }
56
57 SHELL_STATIC_SUBCMD_SET_CREATE(
58 op_agg_cmds,
59 SHELL_CMD_ARG(seq-start, NULL, "<ElemAddr>", cmd_seq_start, 2, 0),
60 SHELL_CMD_ARG(seq-send, NULL, NULL, cmd_seq_send, 1, 0),
61 SHELL_CMD_ARG(seq-abort, NULL, NULL, cmd_seq_abort, 1, 0),
62 SHELL_SUBCMD_SET_END);
63
64 SHELL_SUBCMD_ADD((mesh, models), opagg, &op_agg_cmds, "Opcode Aggregator Cli commands",
65 bt_mesh_shell_mdl_cmds_help, 1, 1);
66