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
meshXModel< meshxBaseModel_t, meshx_send_packet_params_t > Class Template Referenceabstract

meshXModel class More...

#include <meshx_model_class.hpp>

Inheritance diagram for meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >:
meshXModelIF

Public Member Functions

void set_plat_model (MESHX_MODEL *p_model) override
 Set the platform-specific model instance.
meshx_err_t model_handle_from_ble_cb (dev_struct_t *p_dev, evt_model_id_t evt_model_id, meshx_ptr_t params)
 Handle upstream BLE Mesh events.
virtual meshx_err_t model_from_ble_cb (dev_struct_t *dev, control_task_msg_evt_t evt, meshx_ptr_t data)=0
 Handle upstream BLE Mesh events.
virtual meshx_err_t model_send (meshx_send_packet_params_t *params)=0
 Send message through the model.
void on_baked (void) override
 Called when the model's parent element is baked.
virtual ~meshXModel ()
 Destructor for meshXModel.
meshx_err_t send_to_parent_element (meshx_ptr_t msg_ptr, size_t msg_size)
 Send message to parent element.
uint16_t get_model_func_id (void) const
 Get the model function identifier.
void set_model_func_id (uint16_t func_id)
 Set the model function identifier.
uint16_t get_model_id (void) const override
 Get the model identifier.
bool is_initialized (void) const override
 Check if the model is successfully initialized.
void set_model_id (uint16_t id)
 Set the model identifier.
meshx_err_t get_init_status (void) const
 Get the model initialization status.
meshxBaseModel_t * get_base_model (void) const
 Get the base model instance.
 meshXModel (MESHX_MODEL *p_plat_model, uint32_t model_id, meshXElementIF *parent_element=nullptr, uint16_t model_func_id=0)
 Constructs a new meshXModel instance.
Public Member Functions inherited from meshXModelIF
 meshXModelIF ()
 meshXModelIF (MESHX_MODEL *p_plat_model)
virtual ~meshXModelIF ()=default
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 prepare_element_msg (meshx_ptr_t *msg_ptr, size_t *msg_size)=0
 Prepare message for element notification.
MESHX_MODEL * get_plat_model (void) const
 Get the platform-specific model instance.
meshx_ptr_t get_pub_struct (void) const
 Get the publication structures.
meshx_ptr_t get_gen_struct (void) const
 Get the generic structures.
void set_pub_struct (meshx_ptr_t pub)
 Set the publication structures.
void set_gen_struct (meshx_ptr_t gen)
 Set the generic structures.
void set_parent_element (meshXElementIF *parent)
 Set the parent element for this model.
meshXElementIFget_parent_element (void) const
 Get the parent element of this model.
void set_parent_element_state (meshx_ptr_t state)
 Set the parent element state pointer.
meshx_ptr_t get_parent_element_state (void) const
 Get the parent element state pointer.

Protected Member Functions

virtual void update_element_state_change_header (meshx_err_t element_state_change, meshx_ptr_t msg_ptr)=0
 Update element_state_change field in message header.

Private Attributes

meshxBaseModel_t * base_model = nullptr
meshx_err_t status
uint16_t model_id
uint16_t model_func_id

Detailed Description

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
class meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >

meshXModel class

This is a base class for both client and server models.

Member Function Documentation

◆ get_base_model()

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
meshxBaseModel_t * meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::get_base_model ( void ) const
inline

Get the base model instance.

Returns
Pointer to the base model implementation
315{ return base_model; }
meshxBaseModel_t * base_model
Definition meshx_model_class.hpp:178

◆ get_init_status()

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
meshx_err_t meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::get_init_status ( void ) const
inline

Get the model initialization status.

Returns
Status code indicating success or failure of initialization
309{ return status; }
meshx_err_t status
Definition meshx_model_class.hpp:179

◆ get_model_func_id()

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
uint16_t meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::get_model_func_id ( void ) const
inline

Get the model function identifier.

Returns
Model function ID value
281{ return model_func_id; }
uint16_t model_func_id
Definition meshx_model_class.hpp:181

◆ get_model_id()

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
uint16_t meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::get_model_id ( void ) const
inlineoverridevirtual

Get the model identifier.

Returns
Model ID value

Implements meshXModelIF.

292{ return model_id; }
uint16_t model_id
Definition meshx_model_class.hpp:180

◆ is_initialized()

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
bool meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::is_initialized ( void ) const
inlineoverridevirtual

Check if the model is successfully initialized.

Returns
true if initialized, false otherwise.

Implements meshXModelIF.

298{ return status == MESHX_SUCCESS; }
meshXModel class
Definition meshx_model_class.hpp:175

◆ model_from_ble_cb()

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
virtual meshx_err_t meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::model_from_ble_cb ( dev_struct_t * dev,
control_task_msg_evt_t evt,
meshx_ptr_t data )
pure virtual

◆ model_send()

◆ on_baked()

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
void meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::on_baked ( void )
inlineoverridevirtual

Called when the model's parent element is baked.

Overridden to perform deferred registration of callbacks.

Reimplemented from meshXModelIF.

247 {
248 if (base_model)
249 {
250 base_model->from_ble_reg_cb();
251 }
252 }

◆ set_model_func_id()

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
void meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::set_model_func_id ( uint16_t func_id)
inline

Set the model function identifier.

Parameters
[in]func_idModel function ID to set

◆ set_model_id()

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
void meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::set_model_id ( uint16_t id)
inline

Set the model identifier.

Parameters
[in]idModel ID to set
304{ model_id = id; }

◆ update_element_state_change_header()

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
virtual void meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::update_element_state_change_header ( meshx_err_t element_state_change,
meshx_ptr_t msg_ptr )
protectedpure virtual

Update element_state_change field in message header.

Protected virtual method that derived classes (meshXClientModel, meshXServerModel) must implement to handle type-specific header casting. This method is called by send_to_parent_element to update the element_state_change field.

Parameters
[in]element_state_changeResult from element_state_change_handle()
[in]msg_ptrPointer to the message structure

Implemented in meshXClientModel< meshxBaseClientModel_t, meshx_send_packet_params_t >, meshXClientModel< meshXBaseGenericClientModel, meshx_gen_battery_send_params_t >, meshXClientModel< meshXBaseGenericClientModel, meshx_gen_def_trans_time_send_params_t >, meshXClientModel< meshXBaseGenericClientModel, meshx_gen_level_send_params_t >, meshXClientModel< meshXBaseGenericClientModel, meshx_gen_location_send_params_t >, meshXClientModel< meshXBaseGenericClientModel, meshx_gen_onoff_send_params_t >, meshXClientModel< meshXBaseGenericClientModel, meshx_gen_power_level_send_params_t >, meshXClientModel< meshXBaseGenericClientModel, meshx_gen_power_onoff_send_params_t >, meshXClientModel< meshXBaseGenericClientModel, meshx_gen_property_send_params_t >, meshXClientModel< meshXBaseLightClientModel, meshx_light_ctl_send_params_t >, meshXServerModel< meshxBaseServerModel_t, meshx_send_packet_params_t >, meshXServerModel< meshXBaseConfigServerModel, meshx_config_send_params_t >, meshXServerModel< meshXBaseGenericServerModel, meshx_gen_battery_send_params_t >, meshXServerModel< meshXBaseGenericServerModel, meshx_gen_def_trans_time_send_params_t >, meshXServerModel< meshXBaseGenericServerModel, meshx_gen_level_send_params_t >, meshXServerModel< meshXBaseGenericServerModel, meshx_gen_location_send_params_t >, meshXServerModel< meshXBaseGenericServerModel, meshx_gen_onoff_send_params_t >, meshXServerModel< meshXBaseGenericServerModel, meshx_gen_power_level_send_params_t >, meshXServerModel< meshXBaseGenericServerModel, meshx_gen_power_onoff_send_params_t >, meshXServerModel< meshXBaseGenericServerModel, meshx_gen_property_send_params_t >, meshXServerModel< meshXBaseLightServerModel, meshx_light_ctl_send_params_t >, meshXServerModel< meshXBaseLightServerModel, meshx_light_hsl_send_params_t >, and meshXServerModel< meshXBaseSensorServerModel, meshx_sensor_server_send_params_t >.

Field Documentation

◆ base_model

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
meshxBaseModel_t* meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::base_model = nullptr
private

◆ model_func_id

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
uint16_t meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::model_func_id
private

◆ model_id

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
uint16_t meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::model_id
private

◆ status

template<typename meshxBaseModel_t, typename meshx_send_packet_params_t>
meshx_err_t meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >::status
private

The documentation for this class was generated from the following files: