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_model_lightness.hpp
Go to the documentation of this file.
1/**
2 * @file meshx_model_lightness.hpp
3 *
4 * @brief Header file for MeshX Light Lightness Models
5 * This file contains the declarations and definitions for the MeshX Light Lightness Models,
6 * including the Light Lightness Server and Client models for basic brightness control.
7 *
8 * Key Features:
9 * - Implements Bluetooth SIG-defined Light Lightness model
10 * - Inherits from meshXServerModel and meshXClientModel templates
11 * - Provides standard Light Lightness control operations
12 * - Integrates with MeshX transmission control
13 *
14 * @author Pranjal Chanda
15 * @date 2024-2025
16 * @copyright Copyright 2024 - 2025 MeshX
17 */
18
19#ifndef _MESHX_MODEL_LIGHTNESS_HPP_
20#define _MESHX_MODEL_LIGHTNESS_HPP_
21
22#include <meshx_model_class.hpp>
24
25#define MESHX_LIGHT_LIGHTNESS_CLIENT_MODEL_TEMPLATE_PROTO
26#define MESHX_LIGHT_LIGHTNESS_CLIENT_MODEL_TEMPLATE_PARAMS
27
28#define MESHX_LIGHT_LIGHTNESS_SERVER_MODEL_TEMPLATE_PROTO
29#define MESHX_LIGHT_LIGHTNESS_SERVER_MODEL_TEMPLATE_PARAMS
30
31/**
32 * @brief Structure to hold the Light Lightness model state.
33 */
35{
36 uint16_t present_lightness; /**< Present lightness value */
37 uint16_t target_lightness; /**< Target lightness value */
38 uint16_t lightness_last; /**< Last lightness value */
39 uint16_t lightness_default; /**< Default lightness value */
40 uint16_t range_min; /**< Minimum range value */
41 uint16_t range_max; /**< Maximum range value */
42};
43
45
46/**
47 * @brief Structure to hold the parameters for sending a Light Lightness message.
48 */
50{
51 meshx_model_t *model; /**< Pointer to the Light Lightness client model. */
52 meshx_ctx_t *ctx; /**< The context of the message. */
53 uint8_t tid; /**< Transaction ID of the message. Only used by Client */
54 meshx_light_lightness_model_state_t state; /**< The state of the message. */
55};
56
58
59#if CONFIG_ENABLE_LIGHT_LIGHTNESS_CLIENT
60
61/**
62 * @brief Structure to hold the Light Lightness Client to element message.
63 */
64struct meshx_light_lightness_cli_el_msg
65{
66 meshx_cli_model_send_param_header_t header; /**< Client model send param header */
67 meshx_light_lightness_model_state_t state; /**< The state of the message. */
68};
69
70using meshx_light_lightness_cli_el_msg_t = struct meshx_light_lightness_cli_el_msg;
71
72/**
73 * @class meshXLightLightnessClientModel
74 * @brief A template class for creating Light Lightness Client models.
75 *
76 * This class is derived from meshXClientModel and provides a convenient interface for
77 * creating Light Lightness Client models. It handles the Light Lightness state change
78 * notifications from the MeshX stack and publishes the state change event to the
79 * element layer.
80 */
82class meshXLightLightnessClientModel MESHX_LIGHT_LIGHTNESS_CLIENT_MODEL_TEMPLATE_PARAMS
83 : public meshXClientModel<meshXBaseLightClientModel, meshx_light_lightness_send_params_t>
84{
85private:
86 /* New or updated model state from BLE layer */
88
89 meshx_err_t meshx_state_change_notify (
91 uint8_t status
92 );
93
95
96public:
99 meshx_err_t request_lightness (uint16_t lightness, uint8_t tid);
100
101 meshXLightLightnessClientModel(
102 meshXElementIF *parent_element = nullptr,
103 meshx_ptr_t parent_element_state = nullptr,
104 uint16_t model_func_id = 0
105 );
106 ~meshXLightLightnessClientModel() = default;
107};
108
109#endif /* CONFIG_ENABLE_LIGHT_LIGHTNESS_CLIENT */
110
111/********************************************************************************************************************************** */
112#if CONFIG_ENABLE_LIGHT_LIGHTNESS_SERVER
113
114/**
115 * @brief Structure to hold the Light Lightness Server to element message.
116 */
117struct meshx_light_lightness_srv_el_msg
118{
119 meshx_srv_model_send_param_header_t header; /**< Server model send param header */
120 meshx_light_lightness_model_state_t state; /**< The state of the message. */
121};
122
123using meshx_light_lightness_srv_el_msg_t = struct meshx_light_lightness_srv_el_msg;
124
125/**
126 * @class meshXLightLightnessServerModel
127 * @brief A template class for creating Light Lightness Server models.
128 *
129 * This class is derived from meshXServerModel and provides a convenient interface for
130 * creating Light Lightness Server models. It handles the Light Lightness state change
131 * notifications from the MeshX stack and publishes the state change event to the
132 * element layer.
133 */
135class meshXLightLightnessServerModel MESHX_LIGHT_LIGHTNESS_SERVER_MODEL_TEMPLATE_PARAMS
136 : public meshXServerModel<meshXBaseLightServerModel, meshx_light_lightness_send_params_t>
137{
138private:
139 /* New or updated model state from BLE layer */
141
142 meshx_err_t plat_model_create (MESHX_MODEL* p_plat_model_ptr = nullptr) override;
143 meshx_err_t plat_model_delete (void) override;
145
146public:
149 meshx_err_t request_status (uint16_t dst_addr = 0);
150
151 meshXLightLightnessServerModel(
152 meshXElementIF *parent_element = nullptr,
153 meshx_ptr_t parent_element_state = nullptr,
154 uint16_t model_func_id = 0
155 );
156 ~meshXLightLightnessServerModel() = default;
157};
158
159#endif /* CONFIG_ENABLE_LIGHT_LIGHTNESS_SERVER */
160
161#endif /* _MESHX_MODEL_LIGHTNESS_HPP_ */
Base class for all client models in the mesh network.
Definition meshx_model_class.hpp:429
virtual meshx_err_t plat_model_create(MESHX_MODEL *p_plat_model_ptr=nullptr)=0
Create logical model instance.
virtual meshx_err_t plat_model_delete(void)=0
Delete logical model instance.
virtual meshx_err_t element_state_change_handle(void)=0
Handle state change request from element.
virtual meshx_err_t model_from_ble_cb(dev_struct_t *dev, control_task_msg_evt_t evt, meshx_ptr_t data)=0
virtual meshx_err_t model_send(meshx_send_packet_params_t *params)=0
Base class for all server models in MeshX.
Definition meshx_model_class.hpp:366
Header file for MeshX Light Client model declarations.
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
struct meshx_gen_light_cli_cb_param meshx_gen_light_cli_cb_param_t
Callback parameters for Generic Light Client Model events. This structure is used to pass information...
struct dev_struct dev_struct_t
Structure representing the device composition and elements.
uint32_t control_task_msg_evt_t
Type definition for control task message event.
Definition meshx_control_task.h:81
meshx_err_t
MeshX Error Codes.
Definition meshx_err.h:43
Template declarations for MeshX model wrapper classes.
struct meshx_cli_model_send_param_header meshx_cli_model_send_param_header_t
Definition meshx_model_class.hpp:417
struct meshx_srv_model_send_param_header meshx_srv_model_send_param_header_t
Definition meshx_model_class.hpp:354
struct meshx_light_lightness_model_state meshx_light_lightness_model_state_t
Definition meshx_model_lightness.hpp:44
#define MESHX_LIGHT_LIGHTNESS_SERVER_MODEL_TEMPLATE_PARAMS
Definition meshx_model_lightness.hpp:29
#define MESHX_LIGHT_LIGHTNESS_CLIENT_MODEL_TEMPLATE_PARAMS
Definition meshx_model_lightness.hpp:26
#define MESHX_LIGHT_LIGHTNESS_CLIENT_MODEL_TEMPLATE_PROTO
Definition meshx_model_lightness.hpp:25
#define MESHX_LIGHT_LIGHTNESS_SERVER_MODEL_TEMPLATE_PROTO
Definition meshx_model_lightness.hpp:28
struct meshx_light_lightness_send_params meshx_light_lightness_send_params_t
Definition meshx_model_lightness.hpp:57
uint8_t state
Definition meshx_serial.c:39
Structure to hold the Light Lightness model state.
Definition meshx_model_lightness.hpp:35
uint16_t lightness_last
Definition meshx_model_lightness.hpp:38
uint16_t range_min
Definition meshx_model_lightness.hpp:40
uint16_t target_lightness
Definition meshx_model_lightness.hpp:37
uint16_t lightness_default
Definition meshx_model_lightness.hpp:39
uint16_t present_lightness
Definition meshx_model_lightness.hpp:36
uint16_t range_max
Definition meshx_model_lightness.hpp:41
Structure to hold the parameters for sending a Light Lightness message.
Definition meshx_model_lightness.hpp:50
uint8_t tid
Definition meshx_model_lightness.hpp:53
meshx_light_lightness_model_state_t state
Definition meshx_model_lightness.hpp:54
meshx_ctx_t * ctx
Definition meshx_model_lightness.hpp:52
meshx_model_t * model
Definition meshx_model_lightness.hpp:51