MeshX 0.3
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_cli.h File Reference

Header file for BLE Mesh Light Client functionality in the MeshX framework. This file contains declarations and includes required for implementing BLE Mesh Light Client operations. More...

Include dependency graph for meshx_ble_mesh_light_cli.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  meshx_light_lightness_set_t
 Bluetooth Mesh Light Lightness Client Model Get and Set parameters structure. More...
 
struct  meshx_light_lightness_linear_set_t
 
struct  meshx_light_lightness_default_set_t
 
struct  meshx_light_lightness_range_set_t
 
struct  meshx_light_ctl_set_t
 
struct  meshx_light_ctl_temperature_set_t
 
struct  meshx_light_ctl_temperature_range_set_t
 
struct  meshx_light_ctl_default_set_t
 
struct  meshx_light_hsl_set_t
 
struct  meshx_light_hsl_hue_set_t
 
struct  meshx_light_hsl_saturation_set_t
 
struct  meshx_light_hsl_default_set_t
 
struct  meshx_light_hsl_range_set_t
 
struct  meshx_light_xyl_set_t
 
struct  meshx_light_xyl_default_set_t
 
struct  meshx_light_xyl_range_set_t
 
struct  meshx_light_lc_mode_set_t
 
struct  meshx_light_lc_om_set_t
 
struct  meshx_light_lc_light_onoff_set_t
 
struct  meshx_light_lc_property_get_t
 
struct  meshx_light_lc_property_set_t
 
union  meshx_light_client_get_state_t
 Lighting Client Model get message union. More...
 
union  meshx_light_client_set_state_t
 Lighting Client Model set message union. More...
 
struct  meshx_light_lightness_status_cb_t
 Bluetooth Mesh Light Lightness Client Model Get and Set callback parameters structure. More...
 
struct  meshx_light_lightness_linear_status_cb_t
 
struct  meshx_light_lightness_last_status_cb_t
 
struct  meshx_light_lightness_default_status_cb_t
 
struct  meshx_light_lightness_range_status_cb_t
 
struct  meshx_light_ctl_status_cb_t
 
struct  meshx_light_ctl_temperature_status_cb_t
 
struct  meshx_light_ctl_temperature_range_status_cb_t
 
struct  meshx_light_ctl_default_status_cb_t
 
struct  meshx_light_hsl_status_cb_t
 
struct  meshx_light_hsl_target_status_cb_t
 
struct  meshx_light_hsl_hue_status_cb_t
 
struct  meshx_light_hsl_saturation_status_cb_t
 
struct  meshx_light_hsl_default_status_cb_t
 
struct  meshx_light_hsl_range_status_cb_t
 
struct  meshx_light_xyl_status_cb_t
 
struct  meshx_light_xyl_target_status_cb_t
 
struct  meshx_light_xyl_default_status_cb_t
 
struct  meshx_light_xyl_range_status_cb_t
 
struct  meshx_light_lc_mode_status_cb_t
 
struct  meshx_light_lc_om_status_cb_t
 
struct  meshx_light_lc_light_onoff_status_cb_t
 
struct  meshx_light_lc_property_status_cb_t
 
union  meshx_gen_light_client_status_cb_t
 
struct  meshx_gen_light_cli_cb_param
 Callback parameters for Generic Light Client Model events. This structure is used to pass information about the received messages and their context to the application. It includes the context, model pointer, event type, and status values. The status values are encapsulated in a union to handle different types of status messages that the Generic Light Client Model can receive. Each status type corresponds to a specific operation code (opcode) defined in the BLE Mesh specification, allowing the application to handle them appropriately. More...
 

Typedefs

typedef control_task_msg_handle_t meshx_gen_light_client_cb_t
 
typedef 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 about the received messages and their context to the application. It includes the context, model pointer, event type, and status values. The status values are encapsulated in a union to handle different types of status messages that the Generic Light Client Model can receive. Each status type corresponds to a specific operation code (opcode) defined in the BLE Mesh specification, allowing the application to handle them appropriately.
 

Enumerations

enum  meshx_gen_light_cli_evt_t {
  MESHX_GEN_LIGHT_CLI_EVT_GET = MESHX_BIT(0) ,
  MESHX_GEN_LIGHT_CLI_EVT_SET = MESHX_BIT(1) ,
  MESHX_GEN_LIGHT_CLI_PUBLISH = MESHX_BIT(2) ,
  MESHX_GEN_LIGHT_CLI_TIMEOUT = MESHX_BIT(3) ,
  MESHX_GEN_LIGHT_CLI_EVT_ALL
}
 

Functions

meshx_err_t meshx_plat_gen_light_client_init (void)
 Initialize the Generic Light Client Model. This function sets up the necessary parameters and resources for the Generic Light Client Model to operate correctly.
 
meshx_err_t meshx_plat_light_ctl_client_create (meshx_ptr_t p_model, meshx_ptr_t *p_pub, meshx_ptr_t *p_light_ctl_cli)
 Creates and initializes a Light CTL (Color Temperature Light) client model instance.
 
meshx_err_t meshx_plat_light_client_delete (meshx_ptr_t *p_pub, meshx_ptr_t *p_cli)
 Deletes the Light client instance and its associated publication context.
 
meshx_err_t meshx_plat_light_client_send_msg (meshx_ptr_t p_model, meshx_light_client_set_state_t *p_set, uint16_t opcode, uint16_t addr, uint16_t net_idx, uint16_t app_idx, bool is_get_opcode)
 Sends a Light Client message over BLE Mesh.
 

Detailed Description

Header file for BLE Mesh Light Client functionality in the MeshX framework. This file contains declarations and includes required for implementing BLE Mesh Light Client operations.

Copyright (c) 2024 - 2025 MeshX

Author
Pranjal Chanda

Definition in file meshx_ble_mesh_light_cli.h.

Typedef Documentation

◆ meshx_gen_light_cli_cb_param_t

Callback parameters for Generic Light Client Model events. This structure is used to pass information about the received messages and their context to the application. It includes the context, model pointer, event type, and status values. The status values are encapsulated in a union to handle different types of status messages that the Generic Light Client Model can receive. Each status type corresponds to a specific operation code (opcode) defined in the BLE Mesh specification, allowing the application to handle them appropriately.

◆ meshx_gen_light_client_cb_t

Enumeration Type Documentation

◆ meshx_gen_light_cli_evt_t

Enumerator
MESHX_GEN_LIGHT_CLI_EVT_GET MESHX_BIT(0) 
MESHX_GEN_LIGHT_CLI_EVT_SET MESHX_BIT(1) 
MESHX_GEN_LIGHT_CLI_PUBLISH MESHX_BIT(2) 
MESHX_GEN_LIGHT_CLI_TIMEOUT MESHX_BIT(3) 
MESHX_GEN_LIGHT_CLI_EVT_ALL ( MESHX_GEN_LIGHT_CLI_EVT_GET | MESHX_GEN_LIGHT_CLI_EVT_SET | MESHX_GEN_LIGHT_CLI_PUBLISH | MESHX_GEN_LIGHT_CLI_TIMEOUT) 

Definition at line 20 of file meshx_ble_mesh_light_cli.h.

Function Documentation

◆ meshx_plat_gen_light_client_init()

meshx_err_t meshx_plat_gen_light_client_init ( void )

Initialize the Generic Light Client Model. This function sets up the necessary parameters and resources for the Generic Light Client Model to operate correctly.

Returns
meshx_err_t Returns MESHX_SUCCESS on successful initialization, or an appropriate error code on failure.

Definition at line 114 of file esp_gen_light_cli_model.c.

115{
118 {
119 return MESHX_SUCCESS; // Already initialized
120 }
122
123 // Register the callback for handling messages sent to the BLE layer
124 esp_err_t esp_err = esp_ble_mesh_register_light_client_callback(
126 if (esp_err != ESP_OK)
127 err = MESHX_ERR_PLAT;
128 return err;
129}
static void esp_ble_mesh_light_client_cb(MESHX_GEN_LIGHT_CLI_CB_EVT event, MESHX_GEN_LIGHT_CLI_CB_PARAM *param)
Callback function for BLE Mesh Light Client events.
meshx_err_t
MeshX Error Codes.
Definition meshx_err.h:39
@ MESHX_SUCCESS
Definition meshx_err.h:40
@ MESHX_ERR_PLAT
Definition meshx_err.h:43
#define MESHX_CLIENT_INIT_MAGIC_NO
uint16_t meshx_client_init
#define MESHX_GEN_LIGHT_CLI_CB
Here is the call graph for this function:
Here is the caller graph for this function:

◆ meshx_plat_light_client_delete()

meshx_err_t meshx_plat_light_client_delete ( meshx_ptr_t * p_pub,
meshx_ptr_t * p_cli )

Deletes the Light client instance and its associated publication context.

This function is responsible for cleaning up and freeing resources associated with the Light client model, including its publication context.

Parameters
[in]p_pubPointer to the publication context to be deleted.
[in]p_cliPointer to the client instance to be deleted.
Returns
meshx_err_t Returns an error code indicating the result of the delete operation.

Definition at line 168 of file esp_gen_light_cli_model.c.

169{
170 if (p_cli)
171 {
172 MESHX_FREE(*p_cli);
173 *p_cli = NULL;
174 }
175
176 return meshx_plat_del_model_pub(p_pub);
177}
meshx_err_t meshx_plat_del_model_pub(meshx_ptr_t *p_pub)
Deletes the model and publication objects.
#define MESHX_FREE
Definition meshx_err.h:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ meshx_plat_light_client_send_msg()

meshx_err_t meshx_plat_light_client_send_msg ( meshx_ptr_t p_model,
meshx_light_client_set_state_t * p_set,
uint16_t opcode,
uint16_t addr,
uint16_t net_idx,
uint16_t app_idx,
bool is_get_opcode )

Sends a Light Client message over BLE Mesh.

This function constructs and sends a Light Client message using the specified model, set state parameters, opcode, destination address, network index, and application index.

Parameters
[in]p_modelPointer to the BLE Mesh model instance.
[in]p_setPointer to the structure containing the light client set state parameters.
[in]opcodeOpcode of the message to be sent.
[in]addrDestination address for the message.
[in]net_idxNetwork index to be used for sending the message.
[in]app_idxApplication index to be used for sending the message.
[in]is_get_opcodeIndicates whether the opcode is a GET type (true) or SET type (false).
Returns
meshx_err_t Result of the message send operation.

Definition at line 195 of file esp_gen_light_cli_model.c.

201{
202 if (!p_model || !p_set)
203 {
204 return MESHX_INVALID_ARG;
205 }
206
207 esp_ble_mesh_client_common_param_t common = {0};
208 common.model = p_model;
209 common.opcode = opcode;
210 common.ctx.addr = addr;
211 common.ctx.net_idx = net_idx;
212 common.ctx.app_idx = app_idx;
213 common.ctx.send_ttl = BLE_MESH_TTL_DEFAULT;
214 common.msg_timeout = 0; /* 0 indicates that timeout value from menuconfig will be used */
215
216 // Send the message using the appropriate BLE Mesh API
217 if (!is_get_opcode)
218 {
219 esp_err_t esp_err = esp_ble_mesh_light_client_set_state(
220 &common,
221 (esp_ble_mesh_light_client_set_state_t *)p_set
222 );
223 if (esp_err != ESP_OK)
224 {
225 MESHX_LOGE(MODULE_ID_MODEL_CLIENT, "Failed to send Light Client message: %d", esp_err);
226 return MESHX_ERR_PLAT;
227 }
228 }
229 else
230 {
231 esp_err_t esp_err = esp_ble_mesh_light_client_get_state(
232 &common,
233 (esp_ble_mesh_light_client_get_state_t *)p_set
234 );
235 if (esp_err != ESP_OK)
236 {
237 MESHX_LOGE(MODULE_ID_MODEL_CLIENT, "Failed to send Light Client GET message: %d", esp_err);
238 return MESHX_ERR_PLAT;
239 }
240 }
241 return MESHX_SUCCESS;
242}
@ MESHX_INVALID_ARG
Definition meshx_err.h:42
#define MESHX_LOGE(module_id, format,...)
Definition meshx_log.h:73
@ MODULE_ID_MODEL_CLIENT
Definition module_id.h:31
Here is the caller graph for this function:

◆ meshx_plat_light_ctl_client_create()

meshx_err_t meshx_plat_light_ctl_client_create ( meshx_ptr_t p_model,
meshx_ptr_t * p_pub,
meshx_ptr_t * p_light_ctl_cli )

Creates and initializes a Light CTL (Color Temperature Light) client model instance.

This function sets up the Light CTL client model for use in the BLE Mesh network. It associates the client model with the provided model pointer and optionally sets up publication and client context pointers.

Parameters
[in]p_modelPointer to the mesh model structure to associate with the Light CTL client.
[out]p_pubPointer to a publication context pointer to be initialized (can be NULL if not used).
[out]p_light_ctl_cliPointer to a Light CTL client context pointer to be initialized.
Returns
meshx_err_t Returns MESHX_OK on success, or an appropriate error code on failure.

Definition at line 144 of file esp_gen_light_cli_model.c.

145{
146 if (!p_model || !p_pub || !p_light_ctl_cli)
147 {
148 return MESHX_INVALID_ARG; // Invalid arguments
149 }
150 /* SIG Light CTL Init */
151 uint16_t model_id = ESP_BLE_MESH_MODEL_ID_LIGHT_CTL_CLI;
152 memcpy((meshx_ptr_t)&(((MESHX_MODEL *)p_model)->model_id), &model_id, sizeof(model_id));
153
154 return meshx_plat_client_create(p_model, p_pub, p_light_ctl_cli);
155}
meshx_err_t meshx_plat_client_create(meshx_ptr_t p_model, meshx_ptr_t *p_pub, meshx_ptr_t *p_cli)
Creates and initializes a generic client model for BLE Mesh.
void * meshx_ptr_t
#define MESHX_MODEL
Here is the call graph for this function:
Here is the caller graph for this function: