xref: /btstack/src/mesh/mesh_generic_level_client.h (revision 2fca4dad957cd7b88f4657ed51e89c12615dda72)
1f4854a5eSMatthias Ringwald /*
2f4854a5eSMatthias Ringwald  * Copyright (C) 2019 BlueKitchen GmbH
3f4854a5eSMatthias Ringwald  *
4f4854a5eSMatthias Ringwald  * Redistribution and use in source and binary forms, with or without
5f4854a5eSMatthias Ringwald  * modification, are permitted provided that the following conditions
6f4854a5eSMatthias Ringwald  * are met:
7f4854a5eSMatthias Ringwald  *
8f4854a5eSMatthias Ringwald  * 1. Redistributions of source code must retain the above copyright
9f4854a5eSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer.
10f4854a5eSMatthias Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
11f4854a5eSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer in the
12f4854a5eSMatthias Ringwald  *    documentation and/or other materials provided with the distribution.
13f4854a5eSMatthias Ringwald  * 3. Neither the name of the copyright holders nor the names of
14f4854a5eSMatthias Ringwald  *    contributors may be used to endorse or promote products derived
15f4854a5eSMatthias Ringwald  *    from this software without specific prior written permission.
16f4854a5eSMatthias Ringwald  * 4. Any redistribution, use, or modification is done solely for
17f4854a5eSMatthias Ringwald  *    personal benefit and not for any commercial purpose or for
18f4854a5eSMatthias Ringwald  *    monetary gain.
19f4854a5eSMatthias Ringwald  *
20f4854a5eSMatthias Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21f4854a5eSMatthias Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22f4854a5eSMatthias Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23*2fca4dadSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN
24*2fca4dadSMilanka Ringwald  * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25f4854a5eSMatthias Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26f4854a5eSMatthias Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27f4854a5eSMatthias Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28f4854a5eSMatthias Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29f4854a5eSMatthias Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30f4854a5eSMatthias Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31f4854a5eSMatthias Ringwald  * SUCH DAMAGE.
32f4854a5eSMatthias Ringwald  *
33f4854a5eSMatthias Ringwald  * Please inquire about commercial licensing options at
34f4854a5eSMatthias Ringwald  * [email protected]
35f4854a5eSMatthias Ringwald  *
36f4854a5eSMatthias Ringwald  */
37f4854a5eSMatthias Ringwald 
38f4854a5eSMatthias Ringwald #ifndef __MESH_GENERIC_LEVEL_CLIENT_H
39f4854a5eSMatthias Ringwald #define __MESH_GENERIC_LEVEL_CLIENT_H
40f4854a5eSMatthias Ringwald 
41f4854a5eSMatthias Ringwald #include <stdint.h>
42f4854a5eSMatthias Ringwald 
43f4854a5eSMatthias Ringwald #include "mesh/mesh_access.h"
44f4854a5eSMatthias Ringwald 
45f4854a5eSMatthias Ringwald #ifdef __cplusplus
46f4854a5eSMatthias Ringwald extern "C"
47f4854a5eSMatthias Ringwald {
48f4854a5eSMatthias Ringwald #endif
49f4854a5eSMatthias Ringwald 
50f4854a5eSMatthias Ringwald const mesh_operation_t * mesh_generic_level_client_get_operations(void);
51f4854a5eSMatthias Ringwald /**
52f4854a5eSMatthias Ringwald  * @brief Register packet handler
53f4854a5eSMatthias Ringwald  * @param generic_level_client_model
54f4854a5eSMatthias Ringwald  * @param events_packet_handler
55f4854a5eSMatthias Ringwald  */
56f4854a5eSMatthias Ringwald void mesh_generic_level_client_register_packet_handler(mesh_model_t *mesh_model, btstack_packet_handler_t events_packet_handler);
57f4854a5eSMatthias Ringwald 
58f4854a5eSMatthias Ringwald /**
59f4854a5eSMatthias Ringwald  * @brief Set Level value
60f4854a5eSMatthias Ringwald  * @param  mesh_model
61f4854a5eSMatthias Ringwald  * @param  dest
62f4854a5eSMatthias Ringwald  * @param  netkey_index
63f4854a5eSMatthias Ringwald  * @param  appkey_index
64f4854a5eSMatthias Ringwald  * @param  level_value
65f4854a5eSMatthias Ringwald  * @param  transition_time_gdtt
66f4854a5eSMatthias Ringwald  * @param  delay_time_gdtt
67f4854a5eSMatthias Ringwald  * @param  transaction_id
68f4854a5eSMatthias Ringwald  * @return status    0 if successful
69f4854a5eSMatthias Ringwald  */
70f4854a5eSMatthias Ringwald uint8_t mesh_generic_level_client_level_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index,
71f4854a5eSMatthias Ringwald     int16_t level_value, uint8_t transition_time_gdtt, uint8_t delay_time_gdtt, uint8_t transaction_id);
72f4854a5eSMatthias Ringwald 
73f4854a5eSMatthias Ringwald /**
74f4854a5eSMatthias Ringwald  * @brief  Get present Level value
75f4854a5eSMatthias Ringwald  * @param  mesh_model
76f4854a5eSMatthias Ringwald  * @param  dest
77f4854a5eSMatthias Ringwald  * @param  netkey_index
78f4854a5eSMatthias Ringwald  * @param  appkey_index
79f4854a5eSMatthias Ringwald  * @param  level_value
80f4854a5eSMatthias Ringwald  * @param  transition_time_gdtt
81f4854a5eSMatthias Ringwald  * @param  delay_time_gdtt
82f4854a5eSMatthias Ringwald  * @param  transaction_id
83f4854a5eSMatthias Ringwald  * @return transaction_id    if transaction_id == 0, it is invalid
84f4854a5eSMatthias Ringwald  */
85f4854a5eSMatthias Ringwald uint8_t mesh_generic_level_client_level_set_unacknowledged(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index,
86f4854a5eSMatthias Ringwald     int16_t level_value, uint8_t transition_time_gdtt, uint8_t delay_time_gdtt, uint8_t transaction_id);
87f4854a5eSMatthias Ringwald 
88f4854a5eSMatthias Ringwald /**
89f4854a5eSMatthias Ringwald  * @brief  Get present Level value
90f4854a5eSMatthias Ringwald  * @param  mesh_model
91f4854a5eSMatthias Ringwald  * @param  dest
92f4854a5eSMatthias Ringwald  * @param  netkey_index
93f4854a5eSMatthias Ringwald  * @param  appkey_index
94f4854a5eSMatthias Ringwald  * @return status    0 if successful
95f4854a5eSMatthias Ringwald  */
96f4854a5eSMatthias Ringwald uint8_t mesh_generic_level_client_level_get(mesh_model_t *mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
97f4854a5eSMatthias Ringwald 
98f4854a5eSMatthias Ringwald /**
99f4854a5eSMatthias Ringwald  * @brief Publish level value by sending an unacknowledged set message to the publish destination
100f4854a5eSMatthias Ringwald  * @param  mesh_model
101f4854a5eSMatthias Ringwald  * @param  level_value
102f4854a5eSMatthias Ringwald  * @param  transaction_id
103f4854a5eSMatthias Ringwald  * @return status    0 if successful
104f4854a5eSMatthias Ringwald  */
10539018edaSMilanka Ringwald uint8_t mesh_generic_level_client_publish_level(mesh_model_t * mesh_model, int16_t level_value, uint8_t transaction_id);
106f4854a5eSMatthias Ringwald 
107f4854a5eSMatthias Ringwald /**
108f4854a5eSMatthias Ringwald  * @brief Set Level value
109f4854a5eSMatthias Ringwald  * @param  mesh_model
110f4854a5eSMatthias Ringwald  * @param  dest
111f4854a5eSMatthias Ringwald  * @param  netkey_index
112f4854a5eSMatthias Ringwald  * @param  appkey_index
113f4854a5eSMatthias Ringwald  * @param  delta_value
114f4854a5eSMatthias Ringwald  * @param  transition_time_gdtt
115f4854a5eSMatthias Ringwald  * @param  delay_time_gdtt
116f4854a5eSMatthias Ringwald  * @param  transaction_id
117f4854a5eSMatthias Ringwald  * @return status    0 if successful
118f4854a5eSMatthias Ringwald  */
119f4854a5eSMatthias Ringwald uint8_t mesh_generic_level_client_delta_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index,
120f4854a5eSMatthias Ringwald     int16_t delta_value, uint8_t transition_time_gdtt, uint8_t delay_time_gdtt, uint8_t transaction_id);
121f4854a5eSMatthias Ringwald 
122f4854a5eSMatthias Ringwald /**
123f4854a5eSMatthias Ringwald  * @brief  Get present Level value
124f4854a5eSMatthias Ringwald  * @param  mesh_model
125f4854a5eSMatthias Ringwald  * @param  dest
126f4854a5eSMatthias Ringwald  * @param  netkey_index
127f4854a5eSMatthias Ringwald  * @param  appkey_index
128f4854a5eSMatthias Ringwald  * @param  delta_value
129f4854a5eSMatthias Ringwald  * @param  transition_time_gdtt
130f4854a5eSMatthias Ringwald  * @param  delay_time_gdtt
131f4854a5eSMatthias Ringwald  * @param  transaction_id
132f4854a5eSMatthias Ringwald  * @return transaction_id    if transaction_id == 0, it is invalid
133f4854a5eSMatthias Ringwald  */
134f4854a5eSMatthias Ringwald uint8_t mesh_generic_level_client_delta_set_unacknowledged(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index,
135f4854a5eSMatthias Ringwald     int16_t delta_value, uint8_t transition_time_gdtt, uint8_t delay_time_gdtt, uint8_t transaction_id);
136f4854a5eSMatthias Ringwald 
137f4854a5eSMatthias Ringwald /**
138f4854a5eSMatthias Ringwald  * @brief Set Level value
139f4854a5eSMatthias Ringwald  * @param  mesh_model
140f4854a5eSMatthias Ringwald  * @param  dest
141f4854a5eSMatthias Ringwald  * @param  netkey_index
142f4854a5eSMatthias Ringwald  * @param  appkey_index
143f4854a5eSMatthias Ringwald  * @param  delta_value          used to calculate the speed of the transition of the Generic Level state
144f4854a5eSMatthias Ringwald  * @param  transition_time_gdtt
145f4854a5eSMatthias Ringwald  * @param  delay_time_gdtt
146f4854a5eSMatthias Ringwald  * @param  transaction_id
147f4854a5eSMatthias Ringwald  * @return status    0 if successful
148f4854a5eSMatthias Ringwald  */
149f4854a5eSMatthias Ringwald uint8_t mesh_generic_level_client_move_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index,
150f4854a5eSMatthias Ringwald     int16_t delta_value, uint8_t transition_time_gdtt, uint8_t delay_time_gdtt, uint8_t transaction_id);
151f4854a5eSMatthias Ringwald 
152f4854a5eSMatthias Ringwald /**
153f4854a5eSMatthias Ringwald  * @brief  Get present Level value
154f4854a5eSMatthias Ringwald  * @param  mesh_model
155f4854a5eSMatthias Ringwald  * @param  dest
156f4854a5eSMatthias Ringwald  * @param  netkey_index
157f4854a5eSMatthias Ringwald  * @param  appkey_index
158f4854a5eSMatthias Ringwald  * @param  delta_value        used to calculate the speed of the transition of the Generic Level state
159f4854a5eSMatthias Ringwald  * @param  transition_time_gdtt
160f4854a5eSMatthias Ringwald  * @param  delay_time_gdtt
161f4854a5eSMatthias Ringwald  * @param  transaction_id
162f4854a5eSMatthias Ringwald  * @return transaction_id    if transaction_id == 0, it is invalid
163f4854a5eSMatthias Ringwald  */
164f4854a5eSMatthias Ringwald uint8_t mesh_generic_level_client_move_set_unacknowledged(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index,
165f4854a5eSMatthias Ringwald     int16_t delta_value, uint8_t transition_time_gdtt, uint8_t delay_time_gdtt, uint8_t transaction_id);
166f4854a5eSMatthias Ringwald 
167f4854a5eSMatthias Ringwald #ifdef __cplusplus
168f4854a5eSMatthias Ringwald } /* end of extern "C" */
169f4854a5eSMatthias Ringwald #endif
170f4854a5eSMatthias Ringwald 
171f4854a5eSMatthias Ringwald #endif
172