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
meshXCompositionBuilder Class Reference

Fluent API for building the mesh composition. More...

#include <meshx_composition_builder.hpp>

Public Member Functions

 meshXCompositionBuilder ()=default
meshXCompositionBuilderbegin ()
 Start building the composition.
meshXCompositionBuilderadd_relay_server ()
 Add a Relay Server element.
meshXCompositionBuilderadd_relay_client ()
 Add a Relay Client element.
meshXCompositionBuilderadd_cwww_server ()
 Add a Light CWWW Server element.
meshXCompositionBuilderadd_cwww_client ()
 Add a Light CWWW Client element.
meshXCompositionBuilderadd_sensor_server ()
 Add a Sensor Server element.
meshXCompositionBuilderadd_rgb_server ()
 Add an RGB (HSL) Server element.
meshXCompositionBuildercommit ()
 Commit the composition (Triggers Baking).

Detailed Description

Fluent API for building the mesh composition.

Constructor & Destructor Documentation

◆ meshXCompositionBuilder()

meshXCompositionBuilder::meshXCompositionBuilder ( )
default

Member Function Documentation

◆ add_cwww_client()

meshXCompositionBuilder & meshXCompositionBuilder::add_cwww_client ( )

Add a Light CWWW Client element.

Returns
Reference to the builder
60 {
61#if CONFIG_LIGHT_CWWW_CLIENT_COUNT > 0
62 auto& comp = meshXComposition::get_instance();
63 uint16_t next_idx = (uint16_t)(comp.get_elements().size());
64 comp.get_elements().push_back(std::make_unique<meshXCWWWClientElement>(next_idx));
65#endif
66 return *this;
67}
static meshXComposition & get_instance()
Get the singleton instance.
Definition meshx_composition.cpp:29

◆ add_cwww_server()

meshXCompositionBuilder & meshXCompositionBuilder::add_cwww_server ( )

Add a Light CWWW Server element.

Returns
Reference to the builder
51 {
52#if CONFIG_LIGHT_CWWW_SRV_COUNT > 0
53 auto& comp = meshXComposition::get_instance();
54 uint16_t next_idx = (uint16_t)(comp.get_elements().size());
55 comp.get_elements().push_back(std::make_unique<meshXCWWWServerElement>(next_idx));
56#endif
57 return *this;
58}

◆ add_relay_client()

meshXCompositionBuilder & meshXCompositionBuilder::add_relay_client ( )

Add a Relay Client element.

Returns
Reference to the builder
42 {
43#if CONFIG_RELAY_CLIENT_COUNT > 0
44 auto& comp = meshXComposition::get_instance();
45 uint16_t next_idx = (uint16_t)(comp.get_elements().size());
46 comp.get_elements().push_back(std::make_unique<meshXRelayClientElement>(next_idx));
47#endif
48 return *this;
49}

◆ add_relay_server()

meshXCompositionBuilder & meshXCompositionBuilder::add_relay_server ( )

Add a Relay Server element.

Returns
Reference to the builder
33 {
34#if CONFIG_RELAY_SERVER_COUNT > 0
35 auto& comp = meshXComposition::get_instance();
36 uint16_t next_idx = (uint16_t)(comp.get_elements().size());
37 comp.get_elements().push_back(std::make_unique<meshXRelayServerElement>(next_idx));
38#endif
39 return *this;
40}

◆ add_rgb_server()

meshXCompositionBuilder & meshXCompositionBuilder::add_rgb_server ( )

Add an RGB (HSL) Server element.

Returns
Reference to the builder
78 {
79#if CONFIG_RGB_SERVER_COUNT > 0
80 auto& comp = meshXComposition::get_instance();
81 uint16_t next_idx = (uint16_t)(comp.get_elements().size());
82 comp.get_elements().push_back(std::make_unique<meshXRGBServerElement>(next_idx));
83#endif
84 return *this;
85}

◆ add_sensor_server()

meshXCompositionBuilder & meshXCompositionBuilder::add_sensor_server ( )

Add a Sensor Server element.

Returns
Reference to the builder
69 {
70#if CONFIG_SENSOR_SERVER_COUNT > 0
71 auto& comp = meshXComposition::get_instance();
72 uint16_t next_idx = (uint16_t)(comp.get_elements().size());
73 comp.get_elements().push_back(std::make_unique<meshXSensorElement>(next_idx));
74#endif
75 return *this;
76}

◆ begin()

meshXCompositionBuilder & meshXCompositionBuilder::begin ( )

Start building the composition.

Fluent API Implementation.

Returns
Reference to the builder
23 {
24 auto& comp = meshXComposition::get_instance();
25 comp.clear_elements();
26
27 // All compositions must start with a Root Element at Index 0
28 comp.get_elements().push_back(std::make_unique<meshXRootElement>());
29
30 return *this;
31}

◆ commit()

meshXCompositionBuilder & meshXCompositionBuilder::commit ( )

Commit the composition (Triggers Baking).

Returns
Reference to the builder
87 {
88 /* Currently just a marker, bake() happens during meshx_init */
89 return *this;
90}

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