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