Skip to content

Commit 728357c

Browse files
committed
mqtt: properties for root MQTT FB
1 parent 0d2c0ef commit 728357c

2 files changed

Lines changed: 54 additions & 9 deletions

File tree

mqtt_streaming_module/include/mqtt_streaming_module/mqtt_root_fb_impl.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ class MqttRootFbImpl : public FunctionBlock
5555
void initBaseFunctionalBlocks();
5656
void initMqttSubscriber();
5757
void initConnectionStatus();
58+
void initProperties(const PropertyObjectPtr& config);
59+
void readProperties();
5860
bool waitForConnection(const int timeoutMs);
5961
void setConnectionStatus(const ConnectionStatus status, std::string message = "");
6062

@@ -64,6 +66,7 @@ class MqttRootFbImpl : public FunctionBlock
6466

6567
std::shared_ptr<mqtt::MqttAsyncClient> subscriber;
6668
Mqtt::Utils::Settings::MqttConnectionSettings connectionSettings;
69+
int connectTimeout;
6770

6871
std::promise<bool> connectedPromise;
6972
std::future<bool> connectedFuture;

mqtt_streaming_module/src/mqtt_root_fb_impl.cpp

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,12 @@ std::vector<std::pair<MqttRootFbImpl::ConnectionStatus, std::string>> MqttRootFb
1818

1919
MqttRootFbImpl::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+
144186
bool MqttRootFbImpl::waitForConnection(const int timeoutMs)
145187
{
146188
bool res =

0 commit comments

Comments
 (0)