nRF5 SDK for Mesh v5.0.0
light_lightness_setup_server.h
1 /* Copyright (c) 2010 - 2020, Nordic Semiconductor ASA
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without modification,
5  * are permitted provided that the following conditions are met:
6  *
7  * 1. Redistributions of source code must retain the above copyright notice, this
8  * list of conditions and the following disclaimer.
9  *
10  * 2. Redistributions in binary form, except as embedded into a Nordic
11  * Semiconductor ASA integrated circuit in a product or a software update for
12  * such product, must reproduce the above copyright notice, this list of
13  * conditions and the following disclaimer in the documentation and/or other
14  * materials provided with the distribution.
15  *
16  * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
17  * contributors may be used to endorse or promote products derived from this
18  * software without specific prior written permission.
19  *
20  * 4. This software, with or without modification, must only be used with a
21  * Nordic Semiconductor ASA integrated circuit.
22  *
23  * 5. Any software provided in binary form under this license must not be reverse
24  * engineered, decompiled, modified and/or disassembled.
25  *
26  * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
27  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
28  * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
29  * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
30  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
32  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
35  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36  */
37 
38 #ifndef LIGHT_LIGHTNESS_SERVER_H__
39 #define LIGHT_LIGHTNESS_SERVER_H__
40 
41 #include <stdint.h>
42 #include "access.h"
43 #include "light_lightness_common.h"
44 #include "model_common.h"
45 
46 #include "generic_ponoff_setup_server.h"
47 #include "generic_level_server.h"
48 
63 #define LIGHT_LIGHTNESS_SERVER_MODEL_ID 0x1300
64 
66 #define LIGHT_LIGHTNESS_SETUP_SERVER_MODEL_ID 0x1301
67 
68 /* Forward declaration */
69 typedef struct __light_lightness_server_t light_lightness_server_t;
70 
71 /* Forward declaration */
72 typedef struct __light_lightness_setup_server_t light_lightness_setup_server_t;
73 
86 typedef void (*light_lightness_state_set_cb_t)(const light_lightness_setup_server_t * p_self,
87  const access_message_rx_meta_t * p_meta,
88  const light_lightness_set_params_t * p_in,
89  const model_transition_t * p_in_transition,
91 
99 typedef void (*light_lightness_state_get_cb_t)(const light_lightness_setup_server_t * p_self,
100  const access_message_rx_meta_t * p_meta,
102 
110 typedef void (*light_lightness_state_last_get_cb_t)(const light_lightness_setup_server_t * p_self,
111  const access_message_rx_meta_t * p_meta,
113 
124 typedef void (*light_lightness_state_default_set_cb_t)(const light_lightness_setup_server_t * p_self,
125  const access_message_rx_meta_t * p_meta,
128 
136 typedef void (*light_lightness_state_default_get_cb_t)(const light_lightness_setup_server_t * p_self,
137  const access_message_rx_meta_t * p_meta,
139 
150 typedef void (*light_lightness_state_range_set_cb_t)(const light_lightness_setup_server_t * p_self,
151  const access_message_rx_meta_t * p_meta,
154 
162 typedef void (*light_lightness_state_range_get_cb_t)(const light_lightness_setup_server_t * p_self,
163  const access_message_rx_meta_t * p_meta,
165 
181 typedef void (*light_lightness_state_delta_set_cb_t)(const light_lightness_setup_server_t * p_self,
182  const access_message_rx_meta_t * p_meta,
184  const model_transition_t * p_in_transition,
186 
187 
203 typedef void (*light_lightness_state_move_set_cb_t)(const light_lightness_setup_server_t * p_self,
204  const access_message_rx_meta_t * p_meta,
206  const model_transition_t * p_in_transition,
208 
212 typedef struct
213 {
224 
228 typedef struct
229 {
236 
237  /* There are no callbacks for the state for this model, these
238  * callbacks are defined for the setup server. */
240 
243 {
246 
249 
252  generic_level_server_t generic_level_srv;
253 
256 };
257 
279 uint32_t light_lightness_server_status_publish(const light_lightness_server_t * p_server,
280  const light_lightness_status_params_t * p_params);
281 
303 uint32_t light_lightness_server_linear_status_publish(light_lightness_server_t * p_server,
304  const light_lightness_linear_status_params_t * p_params);
305 
328 uint32_t light_lightness_server_last_status_publish(light_lightness_server_t * p_server,
329  const light_lightness_last_status_params_t * p_params);
330 
352 uint32_t light_lightness_server_default_status_publish(const light_lightness_server_t * p_server,
353  const light_lightness_default_status_params_t * p_params);
354 
377 uint32_t light_lightness_server_range_status_publish(const light_lightness_server_t * p_server,
378  const light_lightness_range_status_params_t * p_params);
379 
383 typedef struct
384 {
388 
392 typedef struct
393 {
395  uint8_t element_index;
402 
406 
407 typedef struct
408 {
409  uint8_t handle;
410  bool initialized;
412 
415 {
418 
420  light_lightness_server_t light_lightness_srv;
421 
423  generic_ponoff_setup_server_t generic_ponoff_setup_srv;
424 
427 
430 };
431 
452 uint32_t light_lightness_setup_server_init(light_lightness_setup_server_t * p_server,
453  uint8_t element_index);
496 uint32_t light_lightness_ponoff_binding_setup(light_lightness_setup_server_t * p_s_server,
497  light_lightness_saved_values_t * p_saved_values);
498 
500 #endif /* LIGHT_LIGHTNESS_SERVER_H__ */
uint32_t light_lightness_server_last_status_publish(light_lightness_server_t *p_server, const light_lightness_last_status_params_t *p_params)
Publishes unsolicited Status message.
void(* light_lightness_state_last_get_cb_t)(const light_lightness_setup_server_t *p_self, const access_message_rx_meta_t *p_meta, light_lightness_last_status_params_t *p_out)
Callback type for Light Lightness Last Get message.
uint16_t access_model_handle_t
Access layer handle type.
Definition: access.h:162
void(* light_lightness_state_move_set_cb_t)(const light_lightness_setup_server_t *p_self, const access_message_rx_meta_t *p_meta, const light_lightness_move_set_params_t *p_in, const model_transition_t *p_in_transition, light_lightness_status_params_t *p_out)
Callback type for Light Lightness move Set/Set Unacknowledged "message".
Parameters for the light_lightness Linear Status message.
Light Lightness server callback list.
Structure for tracking TID expiry for the models.
Definition: model_common.h:169
Message format for the light_lightness Default set message.
tid_tracker_t tid_tracker
Tid tracker structure.
nrf_mesh_transmic_size_t transmic_size
TransMIC size used by the outgoing server messages.
bool force_segmented
If server should force outgoing messages as segmented messages.
Parameters for the light_lightness Last Status message.
light_lightness_server_t light_lightness_srv
Parent model context for - Light Lightness server.
uint32_t light_lightness_server_status_publish(const light_lightness_server_t *p_server, const light_lightness_status_params_t *p_params)
Publishes unsolicited Status message.
uint32_t light_lightness_server_linear_status_publish(light_lightness_server_t *p_server, const light_lightness_linear_status_params_t *p_params)
Publishes unsolicited Status message.
generic_ponoff_setup_server_t generic_ponoff_setup_srv
Parent model context for - Generic Power OnOff Setup server.
Unpacked message structure typedefs are used for API interfaces and for implementing model code...
uint32_t light_lightness_server_default_status_publish(const light_lightness_server_t *p_server, const light_lightness_default_status_params_t *p_params)
Publishes unsolicited Status message.
void(* light_lightness_state_set_cb_t)(const light_lightness_setup_server_t *p_self, const access_message_rx_meta_t *p_meta, const light_lightness_set_params_t *p_in, const model_transition_t *p_in_transition, light_lightness_status_params_t *p_out)
Callback type for Light Lightness Set/Set Unacknowledged message.
const light_lightness_setup_server_callbacks_t * p_callbacks
Callback list.
light_lightness_setup_server_state_cbs_t light_lightness_cbs
Transaction callbacks for the Light Lightness states.
light_lightness_state_t state
State for this instance.
bool force_segmented
If server should force outgoing messages as segmented messages.
access_model_handle_t model_handle
Model handle assigned to this instance.
Transaction callbacks for the Light Lightness states.
nrf_mesh_transmic_size_t transmic_size
TransMIC size used by the outgoing server messages.
void(* light_lightness_state_default_get_cb_t)(const light_lightness_setup_server_t *p_self, const access_message_rx_meta_t *p_meta, light_lightness_default_status_params_t *p_out)
Callback type for Light Lightness Default Get message.
void(* light_lightness_state_range_set_cb_t)(const light_lightness_setup_server_t *p_self, const access_message_rx_meta_t *p_meta, const light_lightness_range_set_params_t *p_in, light_lightness_range_status_params_t *p_out)
Callback type for Light Lightness Range Set/Set Unacknowledged message.
Message format for the light_lightness delta set "message".
uint32_t light_lightness_ponoff_binding_setup(light_lightness_setup_server_t *p_s_server, light_lightness_saved_values_t *p_saved_values)
Function to do the OnPowerup binding.
uint32_t light_lightness_setup_server_init(light_lightness_setup_server_t *p_server, uint8_t element_index)
Initializes Light Lightness Setup server.
Metadata for received messages.
Definition: access.h:196
Parameters for the light_lightness Default Status message.
Parameter format for code while booting - the stored values will be read and passed to the model to d...
User provided settings and callbacks for the model instance.
User provided settings and callbacks for the model instance.
light_lightness_server_settings_t settings
Settings and callbacks for this instance.
void(* light_lightness_state_range_get_cb_t)(const light_lightness_setup_server_t *p_self, const access_message_rx_meta_t *p_meta, light_lightness_range_status_params_t *p_out)
Callback type for Light Lightness Range Get message.
nrf_mesh_transmic_size_t
Message MIC size selection.
Definition: nrf_mesh.h:385
light_lightness_setup_server_settings_t settings
Model settings and callbacks for this instance.
void(* light_lightness_state_delta_set_cb_t)(const light_lightness_setup_server_t *p_self, const access_message_rx_meta_t *p_meta, const light_lightness_delta_set_params_t *p_in, const model_transition_t *p_in_transition, light_lightness_status_params_t *p_out)
Callback type for Light Lightness delta Set/Set Unacknowledged "message".
uint32_t light_lightness_server_range_status_publish(const light_lightness_server_t *p_server, const light_lightness_range_status_params_t *p_params)
Publishes unsolicited Status message.
Message format for the light_lightness move set "message".
Message format for the light_lightness Range set message.
Parameters for the light_lightness Status message.
access_model_handle_t model_handle
Model handle assigned to this instance.
void(* light_lightness_state_get_cb_t)(const light_lightness_setup_server_t *p_self, const access_message_rx_meta_t *p_meta, light_lightness_status_params_t *p_out)
Callback type for Light Lightness Get message.
Parameters for the light_lightness Range Status message.
void(* light_lightness_state_default_set_cb_t)(const light_lightness_setup_server_t *p_self, const access_message_rx_meta_t *p_meta, const light_lightness_default_set_params_t *p_in, light_lightness_default_status_params_t *p_out)
Callback type for Light Lightness Default Set/Set Unacknowledged message.
generic_level_server_t generic_level_srv
Parent model context - Generic Level server, user must provide a state callback.
Generic Transition parameters for the model messages.
Definition: model_common.h:162

Documentation feedback | Developer Zone | Subscribe | Updated