MeshX 0.4
This repository provides an implementation for Bluetooth Low Energy (BLE) Mesh network nodes. The project allows you to create BLE mesh nodes that can communicate with each other, enabling the development of smart home solutions or other IoT-based applications.
Loading...
Searching...
No Matches
meshx_ble_mesh_light_srv.h
Go to the documentation of this file.
1/**
2 * Copyright (c) 2024 - 2025 MeshX
3 *
4 * @file meshx_ble_mesh_light_srv.h
5 * @brief Header file for the MeshX BLE Mesh Light Server module.
6 * This file defines the data structures, function prototypes, and
7 * callback parameters for managing the Light Server models in a BLE Mesh network.
8 * It includes support for various lighting models such as Light CTL, HSL, xyL, and LC.
9 *
10 * @details
11 * - Defines state change event structures for different lighting models.
12 * - Provides APIs for initializing, creating, deleting, and managing Light Server instances.
13 * - Supports Light CTL Server state management, including setting and restoring states.
14 * - Includes callback parameters for handling received lighting messages.
15 *
16 * @author Pranjal Chanda
17 *
18 */
19
20#ifndef __MESHX_BLE_MESH_LIGHT_SRV_H__
21#define __MESHX_BLE_MESH_LIGHT_SRV_H__
22
24#include "meshx_control_task.h"
25
26/** Parameter of Light Lightness Actual state change event */
27typedef struct
28{
29 uint16_t lightness; /*!< The value of Light Lightness Actual state */
31
32/** Parameter of Light Lightness Linear state change event */
33typedef struct
34{
35 uint16_t lightness; /*!< The value of Light Lightness Linear state */
37
38/** Parameter of Light Lightness Default state change event */
39typedef struct
40{
41 uint16_t lightness; /*!< The value of Light Lightness Default state */
43
44/** Parameters of Light Lightness Range state change event */
45typedef struct
46{
47 uint16_t range_min; /*!< The minimum value of Light Lightness Range state */
48 uint16_t range_max; /*!< The maximum value of Light Lightness Range state */
50
51/** Parameters of Light CTL state change event */
52typedef struct
53{
54 uint16_t lightness; /*!< The value of Light CTL Lightness state */
55 uint16_t temperature; /*!< The value of Light CTL Temperature state */
56 int16_t delta_uv; /*!< The value of Light CTL Delta UV state */
58
59/** Parameters of Light CTL Temperature state change event */
60typedef struct
61{
62 uint16_t temperature; /*!< The value of Light CTL Temperature state */
63 int16_t delta_uv; /*!< The value of Light CTL Delta UV state */
65
66/** Parameters of Light CTL Temperature Range state change event */
67typedef struct
68{
69 uint16_t range_min; /*!< The minimum value of Light CTL Temperature Range state */
70 uint16_t range_max; /*!< The maximum value of Light CTL Temperature Range state */
72
73/** Parameters of Light CTL Default state change event */
74typedef struct
75{
76 uint16_t lightness; /*!< The value of Light Lightness Default state */
77 uint16_t temperature; /*!< The value of Light CTL Temperature Default state */
78 int16_t delta_uv; /*!< The value of Light CTL Delta UV Default state */
80
81/** Parameters of Light HSL state change event */
82typedef struct
83{
84 uint16_t lightness; /*!< The value of Light HSL Lightness state */
85 uint16_t hue; /*!< The value of Light HSL Hue state */
86 uint16_t saturation; /*!< The value of Light HSL Saturation state */
88
89/** Parameter of Light HSL Hue state change event */
90typedef struct
91{
92 uint16_t hue; /*!< The value of Light HSL Hue state */
94
95/** Parameter of Light HSL Saturation state change event */
96typedef struct
97{
98 uint16_t saturation; /*!< The value of Light HSL Saturation state */
100
101/** Parameters of Light HSL Default state change event */
102typedef struct
103{
104 uint16_t lightness; /*!< The value of Light HSL Lightness Default state */
105 uint16_t hue; /*!< The value of Light HSL Hue Default state */
106 uint16_t saturation; /*!< The value of Light HSL Saturation Default state */
108
109/** Parameters of Light HSL Range state change event */
110typedef struct
111{
112 uint16_t hue_range_min; /*!< The minimum hue value of Light HSL Range state */
113 uint16_t hue_range_max; /*!< The maximum hue value of Light HSL Range state */
114 uint16_t saturation_range_min; /*!< The minimum saturation value of Light HSL Range state */
115 uint16_t saturation_range_max; /*!< The maximum saturation value of Light HSL Range state */
117
118/** Parameters of Light xyL state change event */
119typedef struct
120{
121 uint16_t lightness; /*!< The value of Light xyL Lightness state */
122 uint16_t x; /*!< The value of Light xyL x state */
123 uint16_t y; /*!< The value of Light xyL y state */
125
126/** Parameters of Light xyL Default state change event */
127typedef struct
128{
129 uint16_t lightness; /*!< The value of Light Lightness Default state */
130 uint16_t x; /*!< The value of Light xyL x Default state */
131 uint16_t y; /*!< The value of Light xyL y Default state */
133
134/** Parameters of Light xyL Range state change event */
135typedef struct
136{
137 uint16_t x_range_min; /*!< The minimum value of Light xyL x Range state */
138 uint16_t x_range_max; /*!< The maximum value of Light xyL x Range state */
139 uint16_t y_range_min; /*!< The minimum value of Light xyL y Range state */
140 uint16_t y_range_max; /*!< The maximum value of Light xyL y Range state */
142
143/** Parameter of Light LC Mode state change event */
144typedef struct
145{
146 uint8_t mode; /*!< The value of Light LC Mode state */
148
149/** Parameter of Light LC Occupancy Mode state change event */
150typedef struct
151{
152 uint8_t mode; /*!< The value of Light LC Occupancy Mode state */
154
155/** Parameter of Light LC Light OnOff state change event */
156typedef struct
157{
158 uint8_t onoff; /*!< The value of Light LC Light OnOff state */
160
161/** Parameters of Light LC Property state change event */
162typedef struct
163{
164 uint16_t property_id; /*!< The property id of Light LC Property state */
165 struct net_buf_simple *property_value; /*!< The property value of Light LC Property state */
167
168/** Parameters of Sensor Status state change event */
169typedef struct
170{
171 uint16_t property_id; /*!< The value of Sensor Property ID */
172 /** Parameters of Sensor Status related state */
173 union
174 {
175 uint8_t occupancy; /*!< The value of Light LC Occupancy state */
176 uint32_t set_occupancy_to_1_delay; /*!< The value of Light LC Set Occupancy to 1 Delay state */
177 uint32_t ambient_luxlevel; /*!< The value of Light LC Ambient Luxlevel state */
180
181/**
182 * @brief Lighting Server Model state change value union
183 */
184typedef union
185{
186 /**
187 * The recv_op in ctx can be used to decide which state is changed.
188 */
206 meshx_state_change_light_lc_om_set_t lc_om_set; /*!< Light LC Occupancy Mode Set */
211
212typedef struct {
213 uint16_t lightness_linear; /*!< The present value of Light Lightness Linear state */
214 uint16_t target_lightness_linear; /*!< The target value of Light Lightness Linear state */
215
216 uint16_t lightness_actual; /*!< The present value of Light Lightness Actual state */
217 uint16_t target_lightness_actual; /*!< The target value of Light Lightness Actual state */
218
219 uint16_t lightness_last; /*!< The value of Light Lightness Last state */
220 uint16_t lightness_default; /*!< The value of Light Lightness Default state */
221
222 uint8_t status_code; /*!< The status code of setting Light Lightness Range state */
223 uint16_t lightness_range_min; /*!< The minimum value of Light Lightness Range state */
224 uint16_t lightness_range_max; /*!< The maximum value of Light Lightness Range state */
226
227typedef struct {
228 uint16_t lightness; /*!< The present value of Light CTL Lightness state */
229 uint16_t target_lightness; /*!< The target value of Light CTL Lightness state */
230
231 uint16_t temperature; /*!< The present value of Light CTL Temperature state */
232 uint16_t target_temperature; /*!< The target value of Light CTL Temperature state */
233
234 int16_t delta_uv; /*!< The present value of Light CTL Delta UV state */
235 int16_t target_delta_uv; /*!< The target value of Light CTL Delta UV state */
236
237 uint8_t status_code; /*!< The statue code of setting Light CTL Temperature Range state */
238 uint16_t temperature_range_min; /*!< The minimum value of Light CTL Temperature Range state */
239 uint16_t temperature_range_max; /*!< The maximum value of Light CTL Temperature Range state */
240
241 uint16_t lightness_default; /*!< The value of Light Lightness Default state */
242 uint16_t temperature_default; /*!< The value of Light CTL Temperature Default state */
243 int16_t delta_uv_default; /*!< The value of Light CTL Delta UV Default state */
245
246typedef struct {
247 uint16_t lightness; /*!< The present value of Light HSL Lightness state */
248 uint16_t target_lightness; /*!< The target value of Light HSL Lightness state */
249
250 uint16_t hue; /*!< The present value of Light HSL Hue state */
251 uint16_t target_hue; /*!< The target value of Light HSL Hue state */
252
253 uint16_t saturation; /*!< The present value of Light HSL Saturation state */
254 uint16_t target_saturation; /*!< The target value of Light HSL Saturation state */
255
256 uint16_t lightness_default; /*!< The value of Light Lightness Default state */
257 uint16_t hue_default; /*!< The value of Light HSL Hue Default state */
258 uint16_t saturation_default; /*!< The value of Light HSL Saturation Default state */
259
260 uint8_t status_code; /*!< The status code of setting Light HSL Hue & Saturation Range state */
261 uint16_t hue_range_min; /*!< The minimum value of Light HSL Hue Range state */
262 uint16_t hue_range_max; /*!< The maximum value of Light HSL Hue Range state */
263 uint16_t saturation_range_min; /*!< The minimum value of Light HSL Saturation state */
264 uint16_t saturation_range_max; /*!< The maximum value of Light HSL Saturation state */
266
267typedef struct {
268 uint16_t lightness; /*!< The present value of Light xyL Lightness state */
269 uint16_t target_lightness; /*!< The target value of Light xyL Lightness state */
270
271 uint16_t x; /*!< The present value of Light xyL x state */
272 uint16_t target_x; /*!< The target value of Light xyL x state */
273
274 uint16_t y; /*!< The present value of Light xyL y state */
275 uint16_t target_y; /*!< The target value of Light xyL y state */
276
277 uint16_t lightness_default; /*!< The value of Light Lightness Default state */
278 uint16_t x_default; /*!< The value of Light xyL x Default state */
279 uint16_t y_default; /*!< The value of Light xyL y Default state */
280
281 uint8_t status_code; /*!< The status code of setting Light xyL x & y Range state */
282 uint16_t x_range_min; /*!< The minimum value of Light xyL x Range state */
283 uint16_t x_range_max; /*!< The maximum value of Light xyL x Range state */
284 uint16_t y_range_min; /*!< The minimum value of Light xyL y Range state */
285 uint16_t y_range_max; /*!< The maximum value of Light xyL y Range state */
287
288typedef struct {
289 /**
290 * 0b0 The controller is turned off.
291 * - The binding with the Light Lightness state is disabled.
292 * 0b1 The controller is turned on.
293 * - The binding with the Light Lightness state is enabled.
294 */
295 uint32_t mode : 1; /*!< The value of Light LC Mode state */
296 uint32_t occupancy_mode : 1; /*!< The value of Light LC Occupancy Mode state */
297 uint32_t light_onoff : 1; /*!< The present value of Light LC Light OnOff state */
298 uint32_t target_light_onoff : 1; /*!< The target value of Light LC Light OnOff state */
299 uint32_t occupancy : 1; /*!< The value of Light LC Occupancy state */
300 uint32_t ambient_luxlevel : 24; /*!< The value of Light LC Ambient LuxLevel state */
301
302 /**
303 * 1. Light LC Linear Output = max((Lightness Out)^2/65535, Regulator Output)
304 * 2. If the Light LC Mode state is set to 0b1, the binding is enabled and upon
305 * a change of the Light LC Linear Output state, the following operation
306 * shall be performed:
307 * Light Lightness Linear = Light LC Linear Output
308 * 3. If the Light LC Mode state is set to 0b0, the binding is disabled (i.e.,
309 * upon a change of the Light LC Linear Output state, no operation on the
310 * Light Lightness Linear state is performed).
311 */
312 uint16_t linear_output; /*!< The value of Light LC Linear Output state */
314
315/**
316 * @brief Lighting Server Model state
317 * Used to set/restore the model state values internally
318 */
320{
321 meshx_light_lightness_state_t lightness; /*!< Light Lightness state */
322 meshx_light_ctl_state_t ctl; /*!< Light CTL state */
323 meshx_light_hsl_state_t hsl; /*!< Light HSL state */
324 meshx_light_xyl_state_t xyl; /*!< Light xyL state */
325 meshx_light_lc_state_t lc; /*!< Light LC state */
327
328/** Lighting Server Model callback parameters */
330{
331 meshx_ctx_t ctx; /*!< Context of the received messages */
332 meshx_model_t model; /*!< Pointer to Lighting Server Models */
333 meshx_lighting_server_state_change_t state_change; /*!< Value of the received Lighting Messages */
335
337{
338 uint16_t lightness; /*!< The present value of Light CTL Lightness state */
339 uint16_t target_lightness; /*!< The target value of Light CTL Lightness state */
340
341 uint16_t temperature; /*!< The present value of Light CTL Temperature state */
342 uint16_t target_temperature; /*!< The target value of Light CTL Temperature state */
343
344 int16_t delta_uv; /*!< The present value of Light CTL Delta UV state */
345 int16_t target_delta_uv; /*!< The target value of Light CTL Delta UV state */
346
347 uint8_t status_code; /*!< The statue code of setting Light CTL Temperature Range state */
348 uint16_t temperature_range_min; /*!< The minimum value of Light CTL Temperature Range state */
349 uint16_t temperature_range_max; /*!< The maximum value of Light CTL Temperature Range state */
350
351 uint16_t lightness_default; /*!< The value of Light Lightness Default state */
352 uint16_t temperature_default; /*!< The value of Light CTL Temperature Default state */
353 int16_t delta_uv_default; /*!< The value of Light CTL Delta UV Default state */
355
356/**
357 * @brief Structure representing the Light CTL Server model.
358 *
359 * This structure contains the model and state information for the Light CTL Server.
360 */
362{
363 meshx_model_t model; /**< Light CTL Server model */
364 meshx_light_ctl_srv_state_t state; /**< State of the Light CTL Server */
366
367/**
368 * @brief Initialize the platform-specific Light Server.
369 *
370 * This function sets up the necessary resources for the Light Server.
371 *
372 * @return
373 * - MESHX_SUCCESS on success.
374 * - Appropriate error code on failure.
375 */
377
378/**
379 * @brief Restore the Light Server model state from persistent storage.
380 *
381 * This function restores the Light Server model state from persistent storage.
382 *
383 * @param[in] p_model Pointer to the model instance to be restored.
384 * @param[in] state Pointer to the state data to be restored.
385 * @param[in] state_len Length of the state data in bytes.
386 *
387 * @return meshx_err_t Returns an error code indicating success or failure of the operation.
388 * - MESHX_SUCCESS on success.
389 * - MESHX_ERR_INVALID_ARG if any parameter is invalid.
390 * - MESHX_ERR_INVALID_STATE if the state data is corrupted.
391 * - Other error codes for implementation-specific failures.
392 */
394
395/**
396 * @brief Creates and initializes a Light CTL (Color Temperature Lightness) Setup Server model instance.
397 *
398 * This function sets up the Light CTL Setup Server for a given model, configuring publication and server context pointers.
399 *
400 * @param[in] p_model Pointer to the parent model instance.
401 * @param[out] p_pub Pointer to the publication context to be initialized.
402 * @param[out] p_ctl_srv Pointer to the Light CTL Setup Server context to be initialized.
403 *
404 * @return meshx_err_t Error code indicating the result of the operation.
405 * - MESHX_OK on success
406 * - Appropriate error code otherwise
407 */
411
412/**
413 * @brief Create a Light CTL Server instance.
414 *
415 * This function initializes and allocates resources for a Light CTL Server model.
416 *
417 * @param[in] p_model Pointer to the model instance.
418 * @param[out] p_pub Pointer to the publication context.
419 * @param[out] p_ctl_srv Pointer to the Light CTL Server instance.
420 *
421 * @return
422 * - MESHX_SUCCESS on success.
423 * - Appropriate error code on failure.
424 */
426
427/**
428 * @brief Create a Light Lightness Server instance.
429 *
430 * This function initializes and allocates resources for a Light Lightness Server model.
431 *
432 * @param[in] p_model Pointer to the model instance.
433 * @param[out] p_pub Pointer to the publication context.
434 * @param[out] p_lightness_srv Pointer to the Light Lightness Server instance.
435 *
436 * @return
437 * - MESHX_SUCCESS on success.
438 * - Appropriate error code on failure.
439 */
441
442/**
443 * @brief Create a Light HSL Server instance.
444 *
445 * This function initializes and allocates resources for a Light HSL Server model.
446 *
447 * @param[in] p_model Pointer to the model instance.
448 * @param[out] p_pub Pointer to the publication context.
449 * @param[out] p_hsl_srv Pointer to the Light HSL Server instance.
450 *
451 * @return
452 * - MESHX_SUCCESS on success.
453 * - Appropriate error code on failure.
454 */
456
457/**
458 * @brief Create a Light xyL Server instance.
459 *
460 * This function initializes and allocates resources for a Light xyL Server model.
461 *
462 * @param[in] p_model Pointer to the model instance.
463 * @param[out] p_pub Pointer to the publication context.
464 * @param[out] p_xyl_srv Pointer to the Light xyL Server instance.
465 *
466 * @return
467 * - MESHX_SUCCESS on success.
468 * - Appropriate error code on failure.
469 */
471
472/**
473 * @brief Create a Light LC Server instance.
474 *
475 * This function initializes and allocates resources for a Light LC (Light Control) Server model.
476 *
477 * @param[in] p_model Pointer to the model instance.
478 * @param[out] p_pub Pointer to the publication context.
479 * @param[out] p_lc_srv Pointer to the Light LC Server instance.
480 *
481 * @return
482 * - MESHX_SUCCESS on success.
483 * - Appropriate error code on failure.
484 */
486
487/**
488 * @brief Delete a Light CTL Server instance.
489 *
490 * This function releases resources associated with a Light CTL Server model.
491 *
492 * @param[in,out] p_pub Pointer to the publication context to be deleted.
493 * @param[in,out] p_ctl_srv Pointer to the Light CTL Server instance to be deleted.
494 *
495 * @return
496 * - MESHX_SUCCESS on success.
497 * - Appropriate error code on failure.
498 */
500
501/**
502 * @brief Set the state of the Light CTL Server.
503 *
504 * This function updates the state of the Light CTL Server with the provided parameters.
505 *
506 * @param[in] p_model Pointer to the model instance.
507 * @param[in] delta_uv Delta UV value.
508 * @param[in] lightness Lightness value.
509 * @param[in] temperature Temperature value.
510 * @param[in] temp_range_max Maximum temperature range.
511 * @param[in] temp_range_min Minimum temperature range.
512 *
513 * @return
514 * - MESHX_SUCCESS on success.
515 * - Appropriate error code on failure.
516 */
518 uint16_t delta_uv,
519 uint16_t lightness,
520 uint16_t temperature,
521 uint16_t temp_range_max,
522 uint16_t temp_range_min);
523
524/**
525 * @brief Restore the state of the Light CTL Server.
526 *
527 * This function restores the state of the Light CTL Server with the provided parameters.
528 *
529 * @param[in] p_model Pointer to the model instance.
530 * @param[in] delta_uv Delta UV value.
531 * @param[in] lightness Lightness value.
532 * @param[in] temperature Temperature value.
533 * @param[in] temp_range_max Maximum temperature range.
534 * @param[in] temp_range_min Minimum temperature range.
535 *
536 * @return
537 * - MESHX_SUCCESS on success.
538 * - Appropriate error code on failure.
539 */
541 uint16_t delta_uv,
542 uint16_t lightness,
543 uint16_t temperature,
544 uint16_t temp_range_max,
545 uint16_t temp_range_min);
546
547/**
548 * @brief Send a status message from the Light Server.
549 * This function constructs and sends a status message containing the current state of the Light Server.
550 * @param[in] p_model Pointer to the Light Server model.
551 * @param[in] p_ctx Pointer to the context containing message information.
552 * @param[in] state_change The state change data to be sent in the status message.
553 * @return
554 * - MESHX_SUCCESS: Successfully sent the status message.
555 * - MESHX_INVALID_ARG: Invalid argument provided.
556 * - MESHX_ERR_PLAT: Platform-specific error occurred.
557 */
559 const meshx_ctx_t *p_ctx,
560 const meshx_lighting_server_state_change_t *state_change);
561
562#if CONFIG_ENABLE_LIGHT_SERVER
564
565/**
566 * @brief Light Server send parameters.
567 * Used by meshXBaseLightServerModel::plat_send_msg to forward state change events.
568 */
570{
571 meshx_model_t *p_model; /**< Pointer to the server model. */
572 meshx_ctx_t *p_ctx; /**< Pointer to the context. */
573 meshx_lighting_server_state_change_t *state_change; /**< State change information. */
575#endif /* CONFIG_ENABLE_LIGHT_SERVER */
576
577#endif /* __MESHX_BLE_MESH_LIGHT_SRV_H__ */
Common BLE Mesh interface definitions and utility functions.
struct meshx_model meshx_model_t
struct meshx_ctx meshx_ctx_t
Structure to hold context information for BLE Mesh operations.
void * meshx_ptr_t
Definition meshx_ble_mesh_cmn_def.h:636
meshx_err_t meshx_plat_light_ctl_setup_srv_create(meshx_ptr_t p_model, meshx_ptr_t *p_pub, meshx_ptr_t *p_ctl_srv)
Creates and initializes a Light CTL (Color Temperature Lightness) Setup Server model instance.
meshx_err_t meshx_plat_set_light_ctl_srv_state(meshx_ptr_t p_model, uint16_t delta_uv, uint16_t lightness, uint16_t temperature, uint16_t temp_range_max, uint16_t temp_range_min)
Set the state of the Light CTL Server.
meshx_err_t meshx_plat_light_srv_delete(meshx_ptr_t *p_pub, meshx_ptr_t *p_ctl_srv)
Delete a Light CTL Server instance.
struct meshx_light_ctl_srv_state meshx_light_ctl_srv_state_t
meshx_err_t meshx_plat_light_lc_srv_create(meshx_ptr_t p_model, meshx_ptr_t *p_pub, meshx_ptr_t *p_lc_srv)
Create a Light LC Server instance.
struct meshx_light_ctl_srv meshx_light_ctl_srv_t
Structure representing the Light CTL Server model.
meshx_err_t meshx_get_ctl_setup_srv_model(meshx_ptr_t p_model)
Definition meshx_model_ctl.cpp:684
struct meshx_lighting_server_state meshx_lighting_server_state_t
Lighting Server Model state Used to set/restore the model state values internally.
meshx_err_t meshx_plat_light_ctl_srv_create(meshx_ptr_t p_model, meshx_ptr_t *p_pub, meshx_ptr_t *p_ctl_srv)
Create a Light CTL Server instance.
meshx_err_t meshx_plat_light_hsl_srv_create(meshx_ptr_t p_model, meshx_ptr_t *p_pub, meshx_ptr_t *p_hsl_srv)
Create a Light HSL Server instance.
struct meshx_light_server_send_params meshx_light_server_send_params_t
Light Server send parameters. Used by meshXBaseLightServerModel::plat_send_msg to forward state chang...
meshx_err_t meshx_plat_light_srv_restore(meshx_ptr_t p_model, const meshx_lighting_server_state_t *state, uint16_t state_len)
Restore the Light Server model state from persistent storage.
struct meshx_lighting_server_cb_param meshx_lighting_server_cb_param_t
control_task_msg_handle_t meshx_lighting_server_cb
Definition meshx_ble_mesh_light_srv.h:563
meshx_err_t meshx_plat_gen_light_srv_send_status(const meshx_model_t *p_model, const meshx_ctx_t *p_ctx, const meshx_lighting_server_state_change_t *state_change)
Send a status message from the Light Server. This function constructs and sends a status message cont...
meshx_err_t meshx_plat_light_xyl_srv_create(meshx_ptr_t p_model, meshx_ptr_t *p_pub, meshx_ptr_t *p_xyl_srv)
Create a Light xyL Server instance.
meshx_err_t meshx_plat_light_lightness_srv_create(meshx_ptr_t p_model, meshx_ptr_t *p_pub, meshx_ptr_t *p_lightness_srv)
Create a Light Lightness Server instance.
meshx_err_t meshx_plat_light_ctl_srv_restore(meshx_ptr_t p_model, uint16_t delta_uv, uint16_t lightness, uint16_t temperature, uint16_t temp_range_max, uint16_t temp_range_min)
Restore the state of the Light CTL Server.
meshx_err_t meshx_plat_get_ctl_setup_srv_model(meshx_ptr_t p_model)
meshx_err_t meshx_plat_light_srv_init(void)
Initialize the platform-specific Light Server.
Header file for the control task in the BLE mesh node application.
meshx_err_t(* control_task_msg_handle_t)(dev_struct_t *pdev, control_task_msg_evt_t evt, void *params)
Function pointer type for control task message handler.
Definition meshx_control_task.h:188
meshx_err_t
MeshX Error Codes.
Definition meshx_err.h:43
uint8_t state
Definition meshx_serial.c:39
Definition meshx_ble_mesh_light_srv.h:337
int16_t target_delta_uv
Definition meshx_ble_mesh_light_srv.h:345
int16_t delta_uv_default
Definition meshx_ble_mesh_light_srv.h:353
uint16_t temperature_default
Definition meshx_ble_mesh_light_srv.h:352
uint16_t lightness_default
Definition meshx_ble_mesh_light_srv.h:351
uint8_t status_code
Definition meshx_ble_mesh_light_srv.h:347
uint16_t temperature_range_min
Definition meshx_ble_mesh_light_srv.h:348
int16_t delta_uv
Definition meshx_ble_mesh_light_srv.h:344
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:338
uint16_t temperature_range_max
Definition meshx_ble_mesh_light_srv.h:349
uint16_t target_lightness
Definition meshx_ble_mesh_light_srv.h:339
uint16_t target_temperature
Definition meshx_ble_mesh_light_srv.h:342
uint16_t temperature
Definition meshx_ble_mesh_light_srv.h:341
Structure representing the Light CTL Server model.
Definition meshx_ble_mesh_light_srv.h:362
meshx_light_ctl_srv_state_t state
Definition meshx_ble_mesh_light_srv.h:364
meshx_model_t model
Definition meshx_ble_mesh_light_srv.h:363
Definition meshx_ble_mesh_light_srv.h:227
uint16_t temperature
Definition meshx_ble_mesh_light_srv.h:231
uint16_t target_temperature
Definition meshx_ble_mesh_light_srv.h:232
uint16_t temperature_range_max
Definition meshx_ble_mesh_light_srv.h:239
uint8_t status_code
Definition meshx_ble_mesh_light_srv.h:237
int16_t delta_uv
Definition meshx_ble_mesh_light_srv.h:234
uint16_t temperature_default
Definition meshx_ble_mesh_light_srv.h:242
uint16_t lightness_default
Definition meshx_ble_mesh_light_srv.h:241
uint16_t target_lightness
Definition meshx_ble_mesh_light_srv.h:229
int16_t delta_uv_default
Definition meshx_ble_mesh_light_srv.h:243
int16_t target_delta_uv
Definition meshx_ble_mesh_light_srv.h:235
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:228
uint16_t temperature_range_min
Definition meshx_ble_mesh_light_srv.h:238
Definition meshx_ble_mesh_light_srv.h:246
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:247
uint16_t hue
Definition meshx_ble_mesh_light_srv.h:250
uint16_t lightness_default
Definition meshx_ble_mesh_light_srv.h:256
uint16_t hue_range_max
Definition meshx_ble_mesh_light_srv.h:262
uint16_t saturation_default
Definition meshx_ble_mesh_light_srv.h:258
uint16_t target_lightness
Definition meshx_ble_mesh_light_srv.h:248
uint16_t target_hue
Definition meshx_ble_mesh_light_srv.h:251
uint16_t hue_default
Definition meshx_ble_mesh_light_srv.h:257
uint8_t status_code
Definition meshx_ble_mesh_light_srv.h:260
uint16_t saturation_range_max
Definition meshx_ble_mesh_light_srv.h:264
uint16_t target_saturation
Definition meshx_ble_mesh_light_srv.h:254
uint16_t saturation_range_min
Definition meshx_ble_mesh_light_srv.h:263
uint16_t hue_range_min
Definition meshx_ble_mesh_light_srv.h:261
uint16_t saturation
Definition meshx_ble_mesh_light_srv.h:253
Definition meshx_ble_mesh_light_srv.h:288
uint32_t occupancy_mode
Definition meshx_ble_mesh_light_srv.h:296
uint32_t ambient_luxlevel
Definition meshx_ble_mesh_light_srv.h:300
uint32_t light_onoff
Definition meshx_ble_mesh_light_srv.h:297
uint32_t mode
Definition meshx_ble_mesh_light_srv.h:295
uint32_t target_light_onoff
Definition meshx_ble_mesh_light_srv.h:298
uint16_t linear_output
Definition meshx_ble_mesh_light_srv.h:312
uint32_t occupancy
Definition meshx_ble_mesh_light_srv.h:299
Definition meshx_ble_mesh_light_srv.h:212
uint16_t target_lightness_actual
Definition meshx_ble_mesh_light_srv.h:217
uint16_t lightness_last
Definition meshx_ble_mesh_light_srv.h:219
uint16_t lightness_linear
Definition meshx_ble_mesh_light_srv.h:213
uint16_t target_lightness_linear
Definition meshx_ble_mesh_light_srv.h:214
uint16_t lightness_default
Definition meshx_ble_mesh_light_srv.h:220
uint16_t lightness_actual
Definition meshx_ble_mesh_light_srv.h:216
uint8_t status_code
Definition meshx_ble_mesh_light_srv.h:222
uint16_t lightness_range_max
Definition meshx_ble_mesh_light_srv.h:224
uint16_t lightness_range_min
Definition meshx_ble_mesh_light_srv.h:223
Light Server send parameters. Used by meshXBaseLightServerModel::plat_send_msg to forward state chang...
Definition meshx_ble_mesh_light_srv.h:570
meshx_lighting_server_state_change_t * state_change
Definition meshx_ble_mesh_light_srv.h:573
meshx_model_t * p_model
Definition meshx_ble_mesh_light_srv.h:571
meshx_ctx_t * p_ctx
Definition meshx_ble_mesh_light_srv.h:572
Definition meshx_ble_mesh_light_srv.h:267
uint16_t x_range_min
Definition meshx_ble_mesh_light_srv.h:282
uint16_t x_default
Definition meshx_ble_mesh_light_srv.h:278
uint16_t target_lightness
Definition meshx_ble_mesh_light_srv.h:269
uint16_t lightness_default
Definition meshx_ble_mesh_light_srv.h:277
uint16_t y_range_min
Definition meshx_ble_mesh_light_srv.h:284
uint8_t status_code
Definition meshx_ble_mesh_light_srv.h:281
uint16_t x
Definition meshx_ble_mesh_light_srv.h:271
uint16_t y
Definition meshx_ble_mesh_light_srv.h:274
uint16_t target_x
Definition meshx_ble_mesh_light_srv.h:272
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:268
uint16_t x_range_max
Definition meshx_ble_mesh_light_srv.h:283
uint16_t y_default
Definition meshx_ble_mesh_light_srv.h:279
uint16_t y_range_max
Definition meshx_ble_mesh_light_srv.h:285
uint16_t target_y
Definition meshx_ble_mesh_light_srv.h:275
Definition meshx_ble_mesh_light_srv.h:330
meshx_ctx_t ctx
Definition meshx_ble_mesh_light_srv.h:331
meshx_model_t model
Definition meshx_ble_mesh_light_srv.h:332
meshx_lighting_server_state_change_t state_change
Definition meshx_ble_mesh_light_srv.h:333
Lighting Server Model state Used to set/restore the model state values internally.
Definition meshx_ble_mesh_light_srv.h:320
meshx_light_ctl_state_t ctl
Definition meshx_ble_mesh_light_srv.h:322
meshx_light_lightness_state_t lightness
Definition meshx_ble_mesh_light_srv.h:321
meshx_light_lc_state_t lc
Definition meshx_ble_mesh_light_srv.h:325
meshx_light_xyl_state_t xyl
Definition meshx_ble_mesh_light_srv.h:324
meshx_light_hsl_state_t hsl
Definition meshx_ble_mesh_light_srv.h:323
Definition meshx_ble_mesh_light_srv.h:75
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:76
uint16_t temperature
Definition meshx_ble_mesh_light_srv.h:77
int16_t delta_uv
Definition meshx_ble_mesh_light_srv.h:78
Definition meshx_ble_mesh_light_srv.h:53
int16_t delta_uv
Definition meshx_ble_mesh_light_srv.h:56
uint16_t temperature
Definition meshx_ble_mesh_light_srv.h:55
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:54
Definition meshx_ble_mesh_light_srv.h:68
uint16_t range_max
Definition meshx_ble_mesh_light_srv.h:70
uint16_t range_min
Definition meshx_ble_mesh_light_srv.h:69
Definition meshx_ble_mesh_light_srv.h:61
uint16_t temperature
Definition meshx_ble_mesh_light_srv.h:62
int16_t delta_uv
Definition meshx_ble_mesh_light_srv.h:63
Definition meshx_ble_mesh_light_srv.h:103
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:104
uint16_t saturation
Definition meshx_ble_mesh_light_srv.h:106
uint16_t hue
Definition meshx_ble_mesh_light_srv.h:105
Definition meshx_ble_mesh_light_srv.h:91
uint16_t hue
Definition meshx_ble_mesh_light_srv.h:92
Definition meshx_ble_mesh_light_srv.h:111
uint16_t hue_range_max
Definition meshx_ble_mesh_light_srv.h:113
uint16_t saturation_range_max
Definition meshx_ble_mesh_light_srv.h:115
uint16_t saturation_range_min
Definition meshx_ble_mesh_light_srv.h:114
uint16_t hue_range_min
Definition meshx_ble_mesh_light_srv.h:112
Definition meshx_ble_mesh_light_srv.h:97
uint16_t saturation
Definition meshx_ble_mesh_light_srv.h:98
Definition meshx_ble_mesh_light_srv.h:83
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:84
uint16_t hue
Definition meshx_ble_mesh_light_srv.h:85
uint16_t saturation
Definition meshx_ble_mesh_light_srv.h:86
Definition meshx_ble_mesh_light_srv.h:157
uint8_t onoff
Definition meshx_ble_mesh_light_srv.h:158
Definition meshx_ble_mesh_light_srv.h:145
uint8_t mode
Definition meshx_ble_mesh_light_srv.h:146
Definition meshx_ble_mesh_light_srv.h:151
uint8_t mode
Definition meshx_ble_mesh_light_srv.h:152
Definition meshx_ble_mesh_light_srv.h:163
struct net_buf_simple * property_value
Definition meshx_ble_mesh_light_srv.h:165
uint16_t property_id
Definition meshx_ble_mesh_light_srv.h:164
Definition meshx_ble_mesh_light_srv.h:40
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:41
Definition meshx_ble_mesh_light_srv.h:34
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:35
Definition meshx_ble_mesh_light_srv.h:46
uint16_t range_max
Definition meshx_ble_mesh_light_srv.h:48
uint16_t range_min
Definition meshx_ble_mesh_light_srv.h:47
Definition meshx_ble_mesh_light_srv.h:28
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:29
Definition meshx_ble_mesh_light_srv.h:128
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:129
uint16_t y
Definition meshx_ble_mesh_light_srv.h:131
uint16_t x
Definition meshx_ble_mesh_light_srv.h:130
Definition meshx_ble_mesh_light_srv.h:136
uint16_t x_range_min
Definition meshx_ble_mesh_light_srv.h:137
uint16_t y_range_min
Definition meshx_ble_mesh_light_srv.h:139
uint16_t y_range_max
Definition meshx_ble_mesh_light_srv.h:140
uint16_t x_range_max
Definition meshx_ble_mesh_light_srv.h:138
Definition meshx_ble_mesh_light_srv.h:120
uint16_t x
Definition meshx_ble_mesh_light_srv.h:122
uint16_t y
Definition meshx_ble_mesh_light_srv.h:123
uint16_t lightness
Definition meshx_ble_mesh_light_srv.h:121
Definition meshx_ble_mesh_light_srv.h:170
uint32_t ambient_luxlevel
Definition meshx_ble_mesh_light_srv.h:177
uint8_t occupancy
Definition meshx_ble_mesh_light_srv.h:175
uint32_t set_occupancy_to_1_delay
Definition meshx_ble_mesh_light_srv.h:176
uint16_t property_id
Definition meshx_ble_mesh_light_srv.h:171
Lighting Server Model state change value union.
Definition meshx_ble_mesh_light_srv.h:185
meshx_state_change_light_hsl_range_set_t hsl_range_set
Definition meshx_ble_mesh_light_srv.h:201
meshx_state_change_light_lc_property_set_t lc_property_set
Definition meshx_ble_mesh_light_srv.h:208
meshx_state_change_light_ctl_temperature_set_t ctl_temp_set
Definition meshx_ble_mesh_light_srv.h:194
meshx_state_change_light_xyl_default_set_t xyl_default_set
Definition meshx_ble_mesh_light_srv.h:203
meshx_state_change_light_ctl_default_set_t ctl_default_set
Definition meshx_ble_mesh_light_srv.h:196
meshx_state_change_light_lightness_linear_set_t lightness_linear_set
Definition meshx_ble_mesh_light_srv.h:190
meshx_state_change_light_hsl_hue_set_t hsl_hue_set
Definition meshx_ble_mesh_light_srv.h:198
meshx_state_change_light_lightness_default_set_t lightness_default_set
Definition meshx_ble_mesh_light_srv.h:191
meshx_state_change_light_lc_mode_set_t lc_mode_set
Definition meshx_ble_mesh_light_srv.h:205
meshx_state_change_light_lc_light_onoff_set_t lc_light_onoff_set
Definition meshx_ble_mesh_light_srv.h:207
meshx_state_change_light_lightness_set_t lightness_set
Definition meshx_ble_mesh_light_srv.h:189
meshx_state_change_light_xyl_set_t xyl_set
Definition meshx_ble_mesh_light_srv.h:202
meshx_state_change_light_hsl_default_set_t hsl_default_set
Definition meshx_ble_mesh_light_srv.h:200
meshx_state_change_light_xyl_range_set_t xyl_range_set
Definition meshx_ble_mesh_light_srv.h:204
meshx_state_change_sensor_status_t sensor_status
Definition meshx_ble_mesh_light_srv.h:209
meshx_state_change_light_hsl_saturation_set_t hsl_saturation_set
Definition meshx_ble_mesh_light_srv.h:199
meshx_state_change_light_lc_om_set_t lc_om_set
Definition meshx_ble_mesh_light_srv.h:206
meshx_state_change_light_ctl_temperature_range_set_t ctl_temp_range_set
Definition meshx_ble_mesh_light_srv.h:195
meshx_state_change_light_lightness_range_set_t lightness_range_set
Definition meshx_ble_mesh_light_srv.h:192
meshx_state_change_light_hsl_set_t hsl_set
Definition meshx_ble_mesh_light_srv.h:197
meshx_state_change_light_ctl_set_t ctl_set
Definition meshx_ble_mesh_light_srv.h:193