17#if CONFIG_RELAY_SERVER_COUNT > 0
19#if CONFIG_ENABLE_CONFIG_SERVER
25#define CONFIG_SERVER_CB_MASK \
26 CONTROL_TASK_MSG_EVT_PUB_ADD \
27 | CONTROL_TASK_MSG_EVT_SUB_ADD | CONTROL_TASK_MSG_EVT_APP_KEY_BIND
30#define CONTROL_TASK_EVT_MASK CONTROL_TASK_MSG_EVT_EL_STATE_CH_SET_ON_OFF
32#define CONTROL_TASK_MSG_EVT_TO_BLE_GEN_SRV_MASK CONTROL_TASK_MSG_EVT_TO_BLE_SET_ON_OFF_SRV
39#define GET_RELATIVE_EL_IDX(_element_id) ((_element_id) - (relay_element_init_ctrl.element_id_start))
46#define IS_EL_IN_RANGE(_element_id) ((_element_id) >= relay_element_init_ctrl.element_id_start && (_element_id) < relay_element_init_ctrl.element_id_end)
47#define RELAY_SRV_EL(_el_id) relay_element_init_ctrl.el_list[_el_id]
53#if CONFIG_ENABLE_CONFIG_SERVER
75 uint16_t element_id = 0;
76 uint16_t base_el_id = 0;
77 bool nvs_save =
false;
166 err = meshx_on_off_server_create(&
RELAY_SRV_EL(i).onoff_srv_model,
209 err = meshx_on_off_server_delete(&
RELAY_SRV_EL(i).onoff_srv_model);
253 uint16_t model_id = 0;
268 err = meshx_gen_on_off_srv_state_restore(
RELAY_SRV_EL(element_id).onoff_srv_model->meshx_sig,
303 for (uint16_t i = *start_idx; i < (n_max + *start_idx); i++)
355 size_t rel_el_id = 0;
358 const meshx_on_off_srv_el_msg_t *p_onoff_srv = (meshx_on_off_srv_el_msg_t *)params;
360 uint16_t element_id = p_onoff_srv->model.el_id;
368 el_ctx->
state.on_off = p_onoff_srv->on_off_state;
400 size_t rel_el_id = 0;
411 err = meshx_gen_on_off_srv_send_pack_create(
474 meshx_err_t err = meshx_gen_on_off_srv_status_send(
512#if CONFIG_ENABLE_CONFIG_SERVER
547 err = meshx_on_off_server_init();
This file contains the API definitions for the MeshX application.
meshx_err_t meshx_send_msg_to_app(uint16_t element_id, uint16_t element_type, uint16_t func_id, uint16_t msg_len, const void *msg)
Sends a message to the BLE Mesh application.
struct meshx_api_relay_server_evt meshx_api_relay_server_evt_t
Structure defines the payload for MESHX_ELEMENT_TYPE_RELAY_SERVER.
@ MESHX_ELEMENT_TYPE_RELAY_SERVER
meshx_err_t meshx_plat_add_element_to_composition(uint16_t index, meshx_ptr_t p_element_list, meshx_ptr_t p_sig_models, meshx_ptr_t p_ven_models, uint8_t sig_cnt, uint8_t ven_cnt)
Adds an element to the BLE Mesh composition.
meshx_err_t meshx_get_model_id(meshx_ptr_t p_model, uint16_t *model_id)
Retrieve the model ID of a generic server model.
meshx_err_t meshx_get_base_element_id(uint16_t *base_el_id)
Retrieves the base element ID for the BLE Mesh platform.
#define MESHX_ADDR_UNASSIGNED
#define MESHX_MODEL_ID_GEN_ONOFF_SRV
struct meshx_config_srv_cb_param meshx_config_srv_cb_param_t
control_task_msg_handle_t config_srv_cb_t
struct meshx_gen_srv_cb_param meshx_gen_srv_cb_param_t
control_task_msg_handle_t prov_srv_cb_t
#define REG_MESHX_ELEMENT_FN(_name, _type, _fn)
Register an element composition function.
struct dev_struct dev_struct_t
Structure representing the device composition and elements.
#define CONFIG_MAX_ELEMENT_COUNT
Total Element Count in the Composition.
Header file for the meshxuction configuration server model.
meshx_err_t meshx_config_server_cb_reg(config_srv_cb_t cb, uint32_t config_evt_bmap)
Registers a configuration server callback for specific events.
CONTROL_TASK_MSG_EVT_TO_BLE_SET_ON_OFF_SRV
enum __packed control_task_msg_evt_to_ble control_task_msg_evt_to_ble_t
Enumeration for control task message events to BLE.
uint32_t control_task_msg_evt_t
Type definition for control task message event.
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.
@ CONTROL_TASK_MSG_CODE_EL_STATE_CH
@ CONTROL_TASK_MSG_CODE_TO_BLE
CONTROL_TASK_MSG_EVT_PUB_ADD
CONTROL_TASK_MSG_EVT_EN_NODE_PROV
CONTROL_TASK_MSG_EVT_APP_KEY_BIND
CONTROL_TASK_MSG_EVT_PUB_DEL
meshx_err_t control_task_msg_subscribe(control_task_msg_code_t msg_code, control_task_msg_evt_t evt_bmap, control_task_msg_handle_t callback)
Subscribe to a control task message.
#define CONTROL_TASK_EVT_MASK
#define CONTROL_TASK_MSG_EVT_TO_BLE_GEN_SRV_MASK
static meshx_err_t meshx_api_control_task_handler(const dev_struct_t *pdev, const control_task_msg_evt_t evt, const void *params)
CW-WW server model event handler.
meshx_err_t
MeshX Error Codes.
meshx_err_t meshx_gen_srv_send_msg_to_ble(control_task_msg_evt_to_ble_t evt, const meshx_gen_srv_cb_param_t *params)
Sends a message to the BLE subsystem via the control task.
#define CONFIG_SERVER_CB_MASK
Configuration server callback event mask for cwww server.
#define MESHX_LOGW(module_id, format,...)
#define MESHX_LOGI(module_id, format,...)
#define MESHX_LOGE(module_id, format,...)
#define MESHX_LOGD(module_id, format,...)
Header file for MeshX Non-Volatile Storage (NVS) operations.
meshx_err_t meshx_nvs_element_ctx_set(uint16_t element_id, const void *blob, size_t blob_size)
Store the context of a specific element to NVS.
meshx_err_t meshx_nvs_element_ctx_get(uint16_t element_id, void *blob, size_t blob_size)
Retrieve the context of a specific element from NVS.
meshx_err_t meshx_prov_srv_reg_el_server_cb(prov_srv_cb_t cb)
Register a callback function for provisioning events.
static relay_client_element_ctrl_t relay_element_init_ctrl
static meshx_err_t meshx_api_control_task_handler(dev_struct_t const *pdev, control_task_msg_evt_t evt, void *params)
Callback function for relay server model events.
static meshx_err_t meshx_relay_srv_msg_send_handler(const dev_struct_t *pdev, control_task_msg_evt_to_ble_t evt, meshx_gen_srv_cb_param_t *params)
Handles the BLE message sending for the Generic OnOff Server model.
#define GET_RELATIVE_EL_IDX(_element_id)
Get the relative index of an element ID.
static meshx_err_t relay_prov_control_task_handler(dev_struct_t const *pdev, control_task_msg_evt_t evt, void const *params)
Callback function for relay server model events for Provisioning events.
static meshx_err_t meshx_restore_model_states(uint16_t element_id)
Restore saved relay model states.
static meshx_err_t meshx_add_relay_srv_model_to_element_list(dev_struct_t *pdev, uint16_t *start_idx, uint16_t n_max)
Add relay server models to the element list.
static meshx_err_t relay_server_config_srv_cb(const dev_struct_t *pdev, control_task_msg_evt_t evt, const meshx_config_srv_cb_param_t *params)
Callback function for configuration server events.
static meshx_err_t meshx_dev_create_relay_model_space(uint16_t n_max)
Create relay model space.
static meshx_err_t meshx_element_struct_deinit(void)
Deinitializes the mesh element structure by freeing allocated memory.
#define RELAY_SRV_EL(_el_id)
static meshx_err_t meshx_element_struct_init(uint16_t n_max)
Initialize the mesh element structure by allocating memory for various components.
#define IS_EL_IN_RANGE(_element_id)
Check if an element ID is within range.
meshx_err_t meshx_create_relay_elements(dev_struct_t *pdev, uint16_t element_cnt)
Create Dynamic Relay Model Elements.
Header file for the Relay Server Model.
struct meshx_relay_element_ctrl meshx_relay_element_ctrl_t
Structure to manage relay element initialization.
#define RELAY_SRV_MODEL_VEN_CNT
struct meshx_relay_srv_model_ctx meshx_relay_srv_model_ctx_t
Structure to hold the relay server save restore context.
@ RELAY_SIG_ONOFF_MODEL_ID
#define RELAY_SRV_MODEL_SIG_CNT
meshx_err_t meshx_create_relay_elements(dev_struct_t *pdev, uint16_t element_cnt)
Create Dynamic Relay Model Elements.
struct meshx_relay_element meshx_relay_element_t
Structure to manage relay element models.
@ MODULE_ID_ELEMENT_SWITCH_RELAY_SERVER
meshx_app_store_t meshx_store
MESHX_ELEMENT elements[MAX_ELE_CNT]
meshx_cfg_srv_state_change_t state_change
meshx_gen_srv_state_change_t state_change
meshx_on_off_srv_el_state_t state
meshx_state_change_cfg_model_app_bind_t mod_app_bind
meshx_state_change_cfg_mod_pub_set_t mod_pub_set
meshx_state_change_cfg_appkey_add_t appkey_add
meshx_state_change_gen_onoff_set_t onoff_set