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
meshXModelIF Class Referenceabstract

#include <meshx_model_class.hpp>

Inheritance diagram for meshXModelIF:
meshXModel< meshxBaseClientModel_t, meshx_send_packet_params_t > meshXModel< meshXBaseConfigServerModel, meshx_config_send_params_t > meshXModel< meshXBaseGenericServerModel, meshx_gen_property_send_params_t > meshXModel< meshXBaseGenericClientModel, meshx_gen_battery_send_params_t > meshXModel< meshXBaseGenericServerModel, meshx_gen_battery_send_params_t > meshXModel< meshXBaseGenericClientModel, meshx_gen_def_trans_time_send_params_t > meshXModel< meshXBaseGenericServerModel, meshx_gen_def_trans_time_send_params_t > meshXModel< meshXBaseGenericClientModel, meshx_gen_level_send_params_t > meshXModel< meshXBaseGenericServerModel, meshx_gen_level_send_params_t > meshXModel< meshXBaseGenericClientModel, meshx_gen_location_send_params_t > meshXModel< meshXBaseGenericServerModel, meshx_gen_location_send_params_t > meshXModel< meshXBaseGenericClientModel, meshx_gen_onoff_send_params_t > meshXModel< meshXBaseGenericServerModel, meshx_gen_onoff_send_params_t > meshXModel< meshXBaseGenericClientModel, meshx_gen_power_level_send_params_t > meshXModel< meshXBaseGenericServerModel, meshx_gen_power_level_send_params_t > meshXModel< meshXBaseGenericClientModel, meshx_gen_power_onoff_send_params_t > meshXModel< meshXBaseGenericServerModel, meshx_gen_power_onoff_send_params_t > meshXModel< meshXBaseGenericClientModel, meshx_gen_property_send_params_t > meshXModel< meshXBaseLightClientModel, meshx_light_ctl_send_params_t > meshXModel< meshXBaseLightServerModel, meshx_light_ctl_send_params_t > meshXModel< meshXBaseLightServerModel, meshx_light_hsl_send_params_t > meshXModel< meshXBaseSensorServerModel, meshx_sensor_server_send_params_t > meshXModel< meshxBaseServerModel_t, meshx_send_packet_params_t > meshXModel< meshxBaseModel_t, meshx_send_packet_params_t >

Public Member Functions

 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.
virtual void on_baked (void)
 Called when the model's parent element is baked.
virtual void set_plat_model (MESHX_MODEL *p_model)
 Set the platform-specific model instance.
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.
virtual uint16_t get_model_id (void) const =0
 Get the model identifier.
virtual bool is_initialized (void) const =0
 Check if the model is successfully initialized.

Private Attributes

MESHX_MODEL * p_plat_model
meshx_ptr_t p_plat_pub
meshx_ptr_t p_plat_gen
meshXElementIFparent_element
meshx_ptr_t p_parent_element_state

Constructor & Destructor Documentation

◆ meshXModelIF() [1/2]

meshXModelIF::meshXModelIF ( )
inline
34: p_plat_model(nullptr), p_plat_pub(nullptr), p_plat_gen(nullptr), parent_element(nullptr), p_parent_element_state(nullptr) { }
meshXElementIF * parent_element
Definition meshx_model_class.hpp:42
MESHX_MODEL * p_plat_model
Definition meshx_model_class.hpp:39
meshx_ptr_t p_parent_element_state
Definition meshx_model_class.hpp:43
meshx_ptr_t p_plat_pub
Definition meshx_model_class.hpp:40
meshx_ptr_t p_plat_gen
Definition meshx_model_class.hpp:41

◆ meshXModelIF() [2/2]

meshXModelIF::meshXModelIF ( MESHX_MODEL * p_plat_model)
inlineexplicit
35: p_plat_model(p_plat_model), p_plat_pub(nullptr), p_plat_gen(nullptr), parent_element(nullptr), p_parent_element_state(nullptr) { }

◆ ~meshXModelIF()

virtual meshXModelIF::~meshXModelIF ( )
virtualdefault

Member Function Documentation

◆ element_state_change_handle()

◆ get_gen_struct()

meshx_ptr_t meshXModelIF::get_gen_struct ( void ) const
inline

Get the generic structures.

Returns
Pointer to the generic structures
119{ return p_plat_gen; }

◆ get_model_id()

virtual uint16_t meshXModelIF::get_model_id ( void ) const
pure virtual

Get the model identifier.

Returns
Model ID value

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

◆ get_parent_element()

meshXElementIF * meshXModelIF::get_parent_element ( void ) const
inline

Get the parent element of this model.

Returns
Pointer to the parent element interface
143{ return parent_element; }

◆ get_parent_element_state()

meshx_ptr_t meshXModelIF::get_parent_element_state ( void ) const
inline

Get the parent element state pointer.

Returns
Pointer to the parent element state
154{ return p_parent_element_state; }

◆ get_plat_model()

MESHX_MODEL * meshXModelIF::get_plat_model ( void ) const
inline

Get the platform-specific model instance.

Returns
Pointer to the platform model instance
107{ return p_plat_model; }

◆ get_pub_struct()

meshx_ptr_t meshXModelIF::get_pub_struct ( void ) const
inline

Get the publication structures.

Returns
Pointer to the publication structures
113{ return p_plat_pub; }

◆ is_initialized()

virtual bool meshXModelIF::is_initialized ( void ) const
pure virtual

Check if the model is successfully initialized.

Returns
true if initialized, false otherwise.

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

◆ on_baked()

virtual void meshXModelIF::on_baked ( void )
inlinevirtual

Called when the model's parent element is baked.

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

92{}

◆ plat_model_create()

virtual meshx_err_t meshXModelIF::plat_model_create ( MESHX_MODEL * p_plat_model_ptr = nullptr)
pure virtual

Create logical model instance.

Pure virtual function that derived classes must implement to create a logical model instance on the platform. This is called during model initialization to set up the model's runtime state.

Returns
MESHX_SUCCESS if model created successfully, error code otherwise

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 >, meshXConfigModel, meshXGenericAdminPropertyServerModel, meshXGenericBatteryServerModel, meshXGenericClientPropertyServerModel, meshXGenericDefTransTimeServerModel, meshXGenericLevelServerModel, meshXGenericLocationServerModel, meshXGenericManufacturerPropertyServerModel, meshXGenericOnOffServerModel, meshXGenericPowerLevelServerModel, meshXGenericPowerOnOffServerModel, meshXGenericPowerOnOffSetupServerModel, meshXGenericUserPropertyServerModel, meshXLightCTLServerModel, meshXLightCTLSetupServerModel, meshXLightHSLServerModel, and meshXSensorServerModel.

◆ plat_model_delete()

virtual meshx_err_t meshXModelIF::plat_model_delete ( void )
pure virtual

Delete logical model instance.

Pure virtual function that derived classes must implement to delete the logical model instance from the platform. This is called during model cleanup to release resources associated with the model.

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 >, meshXConfigModel, meshXGenericAdminPropertyServerModel, meshXGenericBatteryServerModel, meshXGenericClientPropertyServerModel, meshXGenericDefTransTimeServerModel, meshXGenericLevelServerModel, meshXGenericLocationServerModel, meshXGenericManufacturerPropertyServerModel, meshXGenericOnOffServerModel, meshXGenericPowerLevelServerModel, meshXGenericPowerOnOffServerModel, meshXGenericPowerOnOffSetupServerModel, meshXGenericUserPropertyServerModel, meshXLightCTLServerModel, meshXLightCTLSetupServerModel, meshXLightHSLServerModel, and meshXSensorServerModel.

◆ prepare_element_msg()

virtual meshx_err_t meshXModelIF::prepare_element_msg ( meshx_ptr_t * msg_ptr,
size_t * msg_size )
pure virtual

◆ set_gen_struct()

void meshXModelIF::set_gen_struct ( meshx_ptr_t gen)
inline

Set the generic structures.

Parameters
[in]genPointer to the generic structures
131{ p_plat_gen = gen; }

◆ set_parent_element()

void meshXModelIF::set_parent_element ( meshXElementIF * parent)
inline

Set the parent element for this model.

Parameters
[in]parentPointer to the parent element interface
137{ parent_element = parent; }

◆ set_parent_element_state()

void meshXModelIF::set_parent_element_state ( meshx_ptr_t state)
inline

Set the parent element state pointer.

Parameters
[in]statePointer to the parent element state
uint8_t state
Definition meshx_serial.c:39

◆ set_plat_model()

virtual void meshXModelIF::set_plat_model ( MESHX_MODEL * p_model)
inlinevirtual

Set the platform-specific model instance.

Parameters
[in]p_modelPointer to the platform model instance

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

101{ p_plat_model = p_model; }

◆ set_pub_struct()

void meshXModelIF::set_pub_struct ( meshx_ptr_t pub)
inline

Set the publication structures.

Parameters
[in]pubPointer to the publication structures
125{ p_plat_pub = pub; }

Field Documentation

◆ p_parent_element_state

meshx_ptr_t meshXModelIF::p_parent_element_state
private

Pointer to the parent element state

◆ p_plat_gen

meshx_ptr_t meshXModelIF::p_plat_gen
private

generic structures

◆ p_plat_model

MESHX_MODEL* meshXModelIF::p_plat_model
private

Pointer to the platform model

◆ p_plat_pub

meshx_ptr_t meshXModelIF::p_plat_pub
private

publication structures

◆ parent_element

meshXElementIF* meshXModelIF::parent_element
private

Pointer to the parent element interface


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