@@ -18,18 +18,12 @@ std::vector<std::pair<MqttRootFbImpl::ConnectionStatus, std::string>> MqttRootFb
1818
1919MqttRootFbImpl::MqttRootFbImpl (const ContextPtr& ctx, const ComponentPtr& parent, const PropertyObjectPtr& config)
2020 : FunctionBlock(CreateType(), ctx, parent, getLocalId()),
21- subscriber(std::make_shared<mqtt::MqttAsyncClient>())
21+ subscriber(std::make_shared<mqtt::MqttAsyncClient>()),
22+ connectTimeout(0 )
2223{
23- connectionSettings.mqttUrl = config.getPropertyValue (PROPERTY_NAME_MQTT_BROKER_ADDRESS).asPtr <IString>().toStdString ();
24- connectionSettings.port = config.getPropertyValue (PROPERTY_NAME_MQTT_BROKER_PORT);
25- connectionSettings.username = config.getPropertyValue (PROPERTY_NAME_MQTT_USERNAME).asPtr <IString>().toStdString ();
26- connectionSettings.password = config.getPropertyValue (PROPERTY_NAME_MQTT_PASSWORD).asPtr <IString>().toStdString ();
27- connectionSettings.clientId = globalId.toStdString ();
28-
29- int connectTimeout = config.getPropertyValue (PROPERTY_NAME_CONNECT_TIMEOUT);
30-
3124 initComponentStatus ();
3225 initConnectionStatus ();
26+ initProperties (config);
3327 initBaseFunctionalBlocks ();
3428 initMqttSubscriber ();
3529
@@ -141,6 +135,54 @@ void MqttRootFbImpl::initConnectionStatus()
141135 });
142136}
143137
138+ void MqttRootFbImpl::initProperties (const PropertyObjectPtr& config)
139+ {
140+ for (const auto & prop : config.getAllProperties ())
141+ {
142+ const auto propName = prop.getName ();
143+ if (!objPtr.hasProperty (propName))
144+ {
145+ auto propClone = PropertyBuilder (prop.getName ())
146+ .setValueType (prop.getValueType ())
147+ .setDescription (prop.getDescription ())
148+ .setUnit (prop.getUnit ())
149+ .setMinValue (prop.getMinValue ())
150+ .setMaxValue (prop.getMaxValue ())
151+ .setDefaultValue (prop.getValue ())
152+ .setVisible (prop.getVisible ())
153+ .setReadOnly (true )
154+ .setSelectionValues (prop.getSelectionValues ())
155+ .setSuggestedValues (prop.getSuggestedValues ())
156+ .setReferencedProperty (prop.getReferencedProperty ())
157+ .setCoercer (prop.getCoercer ())
158+ .setValidator (prop.getValidator ())
159+ .setCallableInfo (prop.getCallableInfo ())
160+ .setOnPropertyValueRead (prop.getOnPropertyValueRead ())
161+ .setOnPropertyValueWrite (prop.getOnPropertyValueWrite ())
162+ .setOnSelectionValuesRead (prop.getOnSelectionValuesRead ())
163+ .setOnSuggestedValuesRead (prop.getOnSuggestedValuesRead ())
164+ .build ();
165+ objPtr.addProperty (propClone);
166+ }
167+ else if (objPtr.getProperty (propName).getReadOnly () == false )
168+ {
169+ objPtr.setPropertyValue (propName, prop.getValue ());
170+ }
171+ }
172+ readProperties ();
173+ }
174+
175+ void MqttRootFbImpl::readProperties ()
176+ {
177+ connectionSettings.mqttUrl = objPtr.getPropertyValue (PROPERTY_NAME_MQTT_BROKER_ADDRESS).asPtr <IString>().toStdString ();
178+ connectionSettings.port = objPtr.getPropertyValue (PROPERTY_NAME_MQTT_BROKER_PORT);
179+ connectionSettings.username = objPtr.getPropertyValue (PROPERTY_NAME_MQTT_USERNAME).asPtr <IString>().toStdString ();
180+ connectionSettings.password = objPtr.getPropertyValue (PROPERTY_NAME_MQTT_PASSWORD).asPtr <IString>().toStdString ();
181+ connectionSettings.clientId = globalId.toStdString ();
182+
183+ connectTimeout = objPtr.getPropertyValue (PROPERTY_NAME_CONNECT_TIMEOUT);
184+ }
185+
144186bool MqttRootFbImpl::waitForConnection (const int timeoutMs)
145187{
146188 bool res =
0 commit comments