1 /*
2  * Copyright (c) 2021 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #ifndef ZEPHYR_INCLUDE_BLUETOOTH_MESH_SHELL_H_
7 #define ZEPHYR_INCLUDE_BLUETOOTH_MESH_SHELL_H_
8 
9 #include <zephyr/bluetooth/mesh.h>
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 /** Maximum number of faults the health server can have. */
16 #define BT_MESH_SHELL_CUR_FAULTS_MAX 4
17 
18 /**
19  *  A helper to define a health publication context for shell with the shell's
20  *  maximum number of faults the element can have.
21  *
22  *  @param _name Name given to the publication context variable.
23  */
24 #define BT_MESH_SHELL_HEALTH_PUB_DEFINE(_name)                                 \
25 		BT_MESH_HEALTH_PUB_DEFINE(_name,                               \
26 					  BT_MESH_SHELL_CUR_FAULTS_MAX);
27 
28 /** Target context for the mesh shell */
29 struct bt_mesh_shell_target {
30 	/* Current destination address */
31 	uint16_t dst;
32 	/* Current net index */
33 	uint16_t net_idx;
34 	/* Current app index */
35 	uint16_t app_idx;
36 };
37 
38 /** @brief External reference to health server */
39 extern struct bt_mesh_health_srv bt_mesh_shell_health_srv;
40 
41 /** @brief External reference to health server metadata */
42 extern const struct bt_mesh_models_metadata_entry health_srv_meta[];
43 
44 /** @brief External reference to health client */
45 extern struct bt_mesh_health_cli bt_mesh_shell_health_cli;
46 
47 /** @brief External reference to Firmware Update Server */
48 extern struct bt_mesh_dfu_srv bt_mesh_shell_dfu_srv;
49 
50 /** @brief External reference to Firmware Update Client */
51 extern struct bt_mesh_dfu_cli bt_mesh_shell_dfu_cli;
52 
53 /** @brief External reference to BLOB Transfer Server */
54 extern struct bt_mesh_blob_srv bt_mesh_shell_blob_srv;
55 
56 /** @brief External reference to BLOB Transfer Client */
57 extern struct bt_mesh_blob_cli bt_mesh_shell_blob_cli;
58 
59 /** @brief External reference to Remote Provisioning Client */
60 extern struct bt_mesh_rpr_cli bt_mesh_shell_rpr_cli;
61 
62 /** @brief External reference to provisioning handler. */
63 extern struct bt_mesh_prov bt_mesh_shell_prov;
64 
65 /** @brief External reference to shell target context. */
66 extern struct bt_mesh_shell_target bt_mesh_shell_target_ctx;
67 
68 #ifdef __cplusplus
69 }
70 #endif
71 
72 #endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_SHELL_H_ */
73