|
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.
|
#include <meshx_model_class.hpp>
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. | |
| meshXElementIF * | get_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 |
| meshXElementIF * | parent_element |
| meshx_ptr_t | p_parent_element_state |
|
inline |
|
inlineexplicit |
|
virtualdefault |
|
pure virtual |
Handle state change request from element.
Pure virtual function that derived classes must implement to handle state change requests from the parent element. The model validates the request, updates its internal state, and returns the result.
Implemented in meshXConfigModel, meshXGenericAdminPropertyServerModel, meshXGenericBatteryClientModel, meshXGenericBatteryServerModel, meshXGenericDefTransTimeClientModel, meshXGenericDefTransTimeServerModel, meshXGenericLevelClientModel, meshXGenericLevelServerModel, meshXGenericLocationClientModel, meshXGenericLocationServerModel, meshXGenericManufacturerPropertyServerModel, meshXGenericOnOffClientModel, meshXGenericOnOffServerModel, meshXGenericPowerLevelClientModel, meshXGenericPowerLevelServerModel, meshXGenericPowerOnOffClientModel, meshXGenericPowerOnOffServerModel, meshXGenericPropertyClientModel, meshXGenericUserPropertyServerModel, meshXLightCTLClientModel, meshXLightCTLServerModel, meshXLightCTLSetupServerModel, meshXLightHSLServerModel, and meshXSensorServerModel.
|
inline |
|
pure virtual |
Get the model identifier.
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 >.
|
inline |
Get the parent element of this model.
|
inline |
Get the parent element state pointer.
|
inline |
Get the platform-specific model instance.
|
inline |
Get the publication structures.
|
pure virtual |
Check if the model is successfully initialized.
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 >.
|
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 >.
|
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.
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.
|
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.
|
pure virtual |
Prepare message for element notification.
Pure virtual function that derived classes must implement to prepare a message structure that will be sent to the parent element. The message must persist after this function returns.
| [out] | msg_ptr | Pointer to message structure (output parameter) |
| [out] | msg_size | Size of the message structure (output parameter) |
Implemented in meshXConfigModel, meshXGenericAdminPropertyServerModel, meshXGenericBatteryClientModel, meshXGenericBatteryServerModel, meshXGenericClientPropertyServerModel, meshXGenericDefTransTimeClientModel, meshXGenericDefTransTimeServerModel, meshXGenericLevelClientModel, meshXGenericLevelServerModel, meshXGenericLocationClientModel, meshXGenericLocationServerModel, meshXGenericLocationSetupServerModel, meshXGenericManufacturerPropertyServerModel, meshXGenericOnOffClientModel, meshXGenericOnOffServerModel, meshXGenericPowerLevelClientModel, meshXGenericPowerLevelServerModel, meshXGenericPowerLevelSetupServerModel, meshXGenericPowerOnOffClientModel, meshXGenericPowerOnOffServerModel, meshXGenericPowerOnOffSetupServerModel, meshXGenericPropertyClientModel, meshXGenericUserPropertyServerModel, meshXLightCTLClientModel, meshXLightCTLServerModel, meshXLightCTLSetupServerModel, meshXLightHSLServerModel, and meshXSensorServerModel.
|
inline |
Set the generic structures.
| [in] | gen | Pointer to the generic structures |
|
inline |
Set the parent element for this model.
| [in] | parent | Pointer to the parent element interface |
|
inline |
|
inlinevirtual |
Set the platform-specific model instance.
| [in] | p_model | Pointer 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 >.
|
inline |
Set the publication structures.
| [in] | pub | Pointer to the publication structures |
|
private |
Pointer to the parent element state
|
private |
generic structures
|
private |
Pointer to the platform model
|
private |
publication structures
|
private |
Pointer to the parent element interface