12#ifndef _MESHX_BASE_MODEL_CLASS_H_
13#define _MESHX_BASE_MODEL_CLASS_H_
17#include <forward_list>
258 ble_mesh_plat_model_cb_params_t param;
268 return __PRETTY_FUNCTION__;
static meshx_err_t base_from_ble_msg_handle(dev_struct_t *pdev, control_task_msg_evt_t evt, meshx_ptr_t params)
Template-based static message handler for BLE Mesh Generic Client models.
Definition meshx_base_model_class.cpp:364
meshXBaseClientModel()=delete
static std::once_flag plat_client_init_flag
Definition meshx_base_model_class.hpp:263
struct base_client_model_cb_reg { uint16_t model_id; meshx_ptr_t p_plat_model; control_msg_cb cb; meshXBaseClientModel *instance; } base_client_model_cb_reg_t
Definition meshx_base_model_class.hpp:248
static meshx_err_t base_txcm_handle_resend(uint16_t model_id, const ble_mesh_plat_model_cb_params_t *param)
Resend a message for the given model ID and parameter.
Definition meshx_base_model_class.cpp:305
static meshx_err_t base_handle_txcm_msg(dev_struct_t *pdev, control_task_msg_evt_t evt, base_client_model_resend_ctx_t *param)
Template-based TXCM (Transmission Control Module) message handler for timeout scenarios.
Definition meshx_base_model_class.cpp:469
static constexpr const char * get_client_type_name()
Definition meshx_base_model_class.hpp:267
static std::forward_list< base_client_model_cb_reg_t > base_client_model_cb_list
Definition meshx_base_model_class.hpp:264
static meshx_err_t base_txcm_handle_ack(uint16_t src_addr)
Resend an acknowledgement message for the given source address.
Definition meshx_base_model_class.cpp:288
void set_plat_model_ptr(meshx_ptr_t p_model)
Set the platform model pointer and update the registration list.
Definition meshx_base_model_class.cpp:520
meshx_ptr_t p_plat_model
Definition meshx_base_model_class.hpp:261
virtual meshx_err_t validate_client_model_id(uint32_t model_id)=0
struct base_client_model_resend_ctx { uint16_t model_id; ble_mesh_plat_model_cb_params_t param; } base_client_model_resend_ctx_t
Definition meshx_base_model_class.hpp:255
meshx_err_t from_ble_dereg_cb(void) const override
Deregister BLE message callback for this model.
Definition meshx_base_model_class.cpp:506
~meshXBaseClientModel()=default
meshx_err_t from_ble_reg_cb(void) const
Register BLE message callback for this model.
Definition meshx_base_model_class.cpp:82
void set_from_ble_cb(control_task_msg_handle_t cb)
Set the BLE message callback function.
Definition meshx_base_model_class.hpp:159
uint32_t get_model_id(void) const
Get the model identifier.
Definition meshx_base_model_class.hpp:129
meshx_err_t status
Definition meshx_base_model_class.hpp:55
uint32_t model_id
Definition meshx_base_model_class.hpp:52
meshXBaseModel(uint32_t model_id, control_task_msg_handle_t from_ble_cb, meshXBaseModelType_t model_type)
Construct a new meshXBaseModel object.
Definition meshx_base_model_class.cpp:44
meshXBaseModelType_t model_type
Definition meshx_base_model_class.hpp:53
meshXBaseModelType_t get_model_type(void) const
Get the model type (server/client).
Definition meshx_base_model_class.hpp:141
control_task_msg_handle_t from_ble_cb
Definition meshx_base_model_class.hpp:54
meshx_err_t get_status(void) const
Get the current status of the model.
Definition meshx_base_model_class.hpp:123
virtual meshx_err_t from_ble_dereg_cb(void) const
Deregister BLE message callback for this model.
Definition meshx_base_model_class.cpp:115
void set_model_type(meshXBaseModelType_t type)
Set the model type.
Definition meshx_base_model_class.hpp:165
static std::forward_list< reg_info > registrations
Definition meshx_base_model_class.hpp:68
virtual meshx_err_t plat_send_msg(ble_mesh_send_msg_params_t *params)=0
Send message through the model.
virtual ~meshXBaseModel()
Virtual destructor for meshXBaseModel.
Definition meshx_base_model_class.cpp:63
virtual meshx_err_t plat_model_init(void)=0
Initialize platform model.
control_task_msg_handle_t get_from_ble_cb(void) const
Get the BLE message callback function.
Definition meshx_base_model_class.hpp:135
void set_model_id(uint32_t id)
Set the model identifier.
Definition meshx_base_model_class.hpp:153
void set_status(meshx_err_t err)
Set the model status.
Definition meshx_base_model_class.hpp:147
static std::forward_list< base_server_model_cb_reg_t > base_server_model_cb_list
Definition meshx_base_model_class.hpp:204
virtual meshx_err_t server_state_restore(ble_mesh_plat_restore_params_t *param)=0
virtual meshx_err_t validate_server_status_opcode(uint16_t opcode)=0
static meshx_err_t base_from_ble_msg_handle(dev_struct_t *pdev, control_task_msg_evt_t evt, meshx_ptr_t params)
Sends a BLE message from a server model.
Definition meshx_base_model_class.cpp:176
meshx_err_t from_ble_dereg_cb(void) const override
Deregister BLE message callback for this model.
Definition meshx_base_model_class.cpp:213
meshx_ptr_t p_plat_model
Definition meshx_base_model_class.hpp:202
meshXBaseServerModel()=delete
void set_plat_model_ptr(meshx_ptr_t p_model)
Set the platform model pointer and update the registration list.
Definition meshx_base_model_class.cpp:227
struct base_server_model_cb_reg { uint16_t model_id; meshx_ptr_t p_plat_model; control_msg_cb cb; meshXBaseServerModel *instance; } base_server_model_cb_reg_t
Definition meshx_base_model_class.hpp:193
static std::once_flag plat_server_init_flag
Definition meshx_base_model_class.hpp:203
virtual ~meshXBaseServerModel()=default
meshx_base_cli_evt
Definition meshx_base_model_class.hpp:229
@ MESHX_BASE_CLI_EVT_SET
Definition meshx_base_model_class.hpp:231
@ MESHX_BASE_CLI_EVT_ALL
Definition meshx_base_model_class.hpp:234
@ MESHX_BASE_CLI_TIMEOUT
Definition meshx_base_model_class.hpp:233
@ MESHX_BASE_CLI_PUBLISH
Definition meshx_base_model_class.hpp:232
@ MESHX_BASE_CLI_EVT_GET
Definition meshx_base_model_class.hpp:230
enum meshXBaseModelType meshXBaseModelType_t
Definition meshx_base_model_class.hpp:30
meshXBaseModelType
Definition meshx_base_model_class.hpp:25
@ MESHX_BASE_MODEL_TYPE_CLIENT
Definition meshx_base_model_class.hpp:27
@ MESHX_BASE_MODEL_TYPE_SERVER
Definition meshx_base_model_class.hpp:26
enum meshx_base_cli_evt meshx_base_cli_evt_t
Definition meshx_base_model_class.hpp:241
std::function< meshx_err_t(dev_struct_t *, control_task_msg_evt_t, meshx_ptr_t)> control_msg_cb
Definition meshx_base_model_class.hpp:32
void * meshx_ptr_t
Definition meshx_ble_mesh_cmn_def.h:636
#define MESHX_BIT(nr)
Definition meshx_ble_mesh_cmn_def.h:22
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(* 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
Forward declaration of MeshX classes.
#define MESHX_BASE_TEMPLATE_PROTO
Definition meshx_fwd_decl.hpp:22
#define MESHX_BASE_CLIENT_TEMPLATE_PROTO
Definition meshx_fwd_decl.hpp:24
#define MESHX_BASE_SERVER_TEMPLATE_PROTO
Definition meshx_fwd_decl.hpp:26
**This function is called by the parent element when a state change request *is received It validates the request and returns a result to the element not the model layer **return * MESHX_SUCCESS
Definition meshx_model_level.cpp:385
Definition meshx_base_model_class.hpp:67
uint32_t id
Definition meshx_base_model_class.hpp:67
int count
Definition meshx_base_model_class.hpp:67