xref: /nrf52832-nimble/packages/NimBLE-latest/nimble/host/mesh/include/mesh/model_srv.h (revision 042d53a763ad75cb1465103098bb88c245d95138)
1 /*
2  * Copyright (c) 2017 Intel Corporation
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef __MODEL_SRV_H__
8 #define __MODEL_SRV_H__
9 
10 struct bt_mesh_gen_onoff_srv_cb {
11     int (*get)(struct bt_mesh_model *model, u8_t *state);
12     int (*set)(struct bt_mesh_model *model, u8_t state);
13 };
14 
15 extern const struct bt_mesh_model_op gen_onoff_srv_op[];
16 
17 #define BT_MESH_MODEL_GEN_ONOFF_SRV(srv, pub)		\
18 	BT_MESH_MODEL(BT_MESH_MODEL_ID_GEN_ONOFF_SRV,	\
19 		      gen_onoff_srv_op, pub, srv)
20 
21 struct bt_mesh_gen_level_srv_cb {
22     int (*get)(struct bt_mesh_model *model, s16_t *level);
23     int (*set)(struct bt_mesh_model *model, s16_t level);
24 };
25 
26 extern const struct bt_mesh_model_op gen_level_srv_op[];
27 
28 #define BT_MESH_MODEL_GEN_LEVEL_SRV(srv, pub)		\
29 	BT_MESH_MODEL(BT_MESH_MODEL_ID_GEN_LEVEL_SRV,	\
30 		      gen_level_srv_op, pub, srv)
31 
32 struct bt_mesh_light_lightness_srv_cb {
33     int (*get)(struct bt_mesh_model *model, s16_t *level);
34     int (*set)(struct bt_mesh_model *model, s16_t level);
35 };
36 
37 extern const struct bt_mesh_model_op light_lightness_srv_op[];
38 
39 #define BT_MESH_MODEL_LIGHT_LIGHTNESS_SRV(srv, pub)		\
40 	BT_MESH_MODEL(BT_MESH_MODEL_ID_LIGHT_LIGHTNESS_SRV,	\
41 		      light_lightness_srv_op, pub, srv)
42 
43 
44 void bt_mesh_set_gen_onoff_srv_cb(struct bt_mesh_gen_onoff_srv_cb *gen_onoff_cb);
45 void bt_mesh_set_gen_level_srv_cb(struct bt_mesh_gen_level_srv_cb *gen_level_cb);
46 void bt_mesh_set_light_lightness_srv_cb(struct bt_mesh_light_lightness_srv_cb *light_lightness_cb);
47 
48 #endif
49